From 88844db23aca1450647e942abe8ef35e8206b1c6 Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Mon, 30 Oct 2023 10:09:49 +0100 Subject: [PATCH 1/9] Added shots scatter and intensity variables to backend --- src/core/include/datatypes.h | 2 ++ src/core/include/unit.h | 6 ++++++ src/core/src/scheduler.cpp | 18 ++++++++++++++++++ src/core/src/unit.cpp | 4 ++++ 4 files changed, 30 insertions(+) diff --git a/src/core/include/datatypes.h b/src/core/include/datatypes.h index 52314c42..26c5a084 100644 --- a/src/core/include/datatypes.h +++ b/src/core/include/datatypes.h @@ -44,6 +44,8 @@ namespace DataIndex { activePath, isLeader, operateAs, + shotsScatter, + shotsIntensity, lastIndex, endOfData = 255 }; diff --git a/src/core/include/unit.h b/src/core/include/unit.h index 60749f69..058990db 100644 --- a/src/core/include/unit.h +++ b/src/core/include/unit.h @@ -101,6 +101,8 @@ public: virtual void setActivePath(list newValue); virtual void setIsLeader(bool newValue) { updateValue(isLeader, newValue, DataIndex::isLeader); } virtual void setOperateAs(unsigned char newValue) { updateValue(operateAs, newValue, DataIndex::operateAs); } + virtual void setShotsScatter(unsigned char newValue) { updateValue(shotsScatter, newValue, DataIndex::shotsScatter); } + virtual void setShotsIntensity(unsigned char newValue) { updateValue(shotsIntensity, newValue, DataIndex::shotsIntensity); } /********** Getters **********/ virtual string getCategory() { return category; }; @@ -142,6 +144,8 @@ public: virtual list getActivePath() { return activePath; } virtual bool getIsLeader() { return isLeader; } virtual unsigned char getOperateAs() { return operateAs; } + virtual unsigned char getShotsScatter() { return shotsScatter; } + virtual unsigned char getShotsIntensity() { return shotsIntensity; } protected: unsigned int ID; @@ -186,6 +190,8 @@ protected: bool isLeader = false; unsigned char operateAs = 2; Coords activeDestination = Coords(NULL); + unsigned char shotsScatter = 2; + unsigned char shotsIntensity = 2; /********** Other **********/ unsigned int taskCheckCounter = 0; diff --git a/src/core/src/scheduler.cpp b/src/core/src/scheduler.cpp index 8fba5691..a915ae6b 100644 --- a/src/core/src/scheduler.cpp +++ b/src/core/src/scheduler.cpp @@ -616,6 +616,24 @@ void Scheduler::handleRequest(string key, json::value value, string username, js log(username + " tasked unit " + unit->getName() + " to land at point", true); } + else if (key.compare("setShotsScatter") == 0) + { + unsigned int ID = value[L"ID"].as_integer(); + unitsManager->acquireControl(ID); + Unit* unit = unitsManager->getGroupLeader(ID); + unsigned char shotsScatter = value[L"shotsScatter"].as_number().to_uint32(); + unit->setShotsScatter(shotsScatter); + log(username + " set unit " + unit->getName() + " shots scatter to " + to_string(shotsScatter), true); + } + else if (key.compare("setShotsIntensity") == 0) + { + unsigned int ID = value[L"ID"].as_integer(); + unitsManager->acquireControl(ID); + Unit* unit = unitsManager->getGroupLeader(ID); + unsigned char shotsIntensity = value[L"shotsIntensity"].as_number().to_uint32(); + unit->setShotsIntensity(shotsIntensity); + log(username + " set unit " + unit->getName() + " shots intensity to " + to_string(shotsIntensity), true); + } else if (key.compare("setCommandModeOptions") == 0) { setCommandModeOptions(value); diff --git a/src/core/src/unit.cpp b/src/core/src/unit.cpp index 2afc51c5..acaaa55f 100644 --- a/src/core/src/unit.cpp +++ b/src/core/src/unit.cpp @@ -192,6 +192,8 @@ void Unit::refreshLeaderData(unsigned long long time) { case DataIndex::generalSettings: updateValue(generalSettings, leader->generalSettings, datumIndex); break; case DataIndex::activePath: updateValue(activePath, leader->activePath, datumIndex); break; case DataIndex::operateAs: updateValue(operateAs, leader->operateAs, datumIndex); break; + case DataIndex::shotsScatter: updateValue(shotsScatter, leader->shotsScatter, datumIndex); break; + case DataIndex::shotsIntensity: updateValue(shotsIntensity, leader->shotsIntensity, datumIndex); break; } } } @@ -272,6 +274,8 @@ void Unit::getData(stringstream& ss, unsigned long long time) case DataIndex::activePath: appendList(ss, datumIndex, activePath); break; case DataIndex::isLeader: appendNumeric(ss, datumIndex, isLeader); break; case DataIndex::operateAs: appendNumeric(ss, datumIndex, operateAs); break; + case DataIndex::shotsScatter: appendNumeric(ss, datumIndex, shotsScatter); break; + case DataIndex::shotsIntensity: appendNumeric(ss, datumIndex, shotsIntensity); break; } } } From c0f3f3a40aac51e9102bf57a87d640886c232d2e Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Mon, 30 Oct 2023 12:46:49 +0100 Subject: [PATCH 2/9] Added scatter and intensity selectors in UI --- .../public/stylesheets/panels/unitcontrol.css | 2 + client/public/stylesheets/style/style.css | 4 +- .../olympus/images/buttons/intensity/1.svg | 44 +++++++++++++++++++ .../olympus/images/buttons/intensity/2.svg | 43 ++++++++++++++++++ .../olympus/images/buttons/intensity/3.svg | 43 ++++++++++++++++++ .../olympus/images/buttons/scatter/1.svg | 44 +++++++++++++++++++ .../olympus/images/buttons/scatter/2.svg | 43 ++++++++++++++++++ .../olympus/images/buttons/scatter/3.svg | 43 ++++++++++++++++++ client/src/constants/constants.ts | 14 ++++++ client/src/interfaces.ts | 2 + client/src/panels/unitcontrolpanel.ts | 22 +++++++++- client/src/server/servermanager.ts | 12 +++++ client/src/unit/unit.ts | 20 ++++++++- client/src/unit/unitsmanager.ts | 24 ++++++++++ client/views/panels/unitcontrol.ejs | 16 ++++++- src/core/src/unit.cpp | 4 +- 16 files changed, 374 insertions(+), 6 deletions(-) create mode 100644 client/public/themes/olympus/images/buttons/intensity/1.svg create mode 100644 client/public/themes/olympus/images/buttons/intensity/2.svg create mode 100644 client/public/themes/olympus/images/buttons/intensity/3.svg create mode 100644 client/public/themes/olympus/images/buttons/scatter/1.svg create mode 100644 client/public/themes/olympus/images/buttons/scatter/2.svg create mode 100644 client/public/themes/olympus/images/buttons/scatter/3.svg diff --git a/client/public/stylesheets/panels/unitcontrol.css b/client/public/stylesheets/panels/unitcontrol.css index c583dca4..770109f6 100644 --- a/client/public/stylesheets/panels/unitcontrol.css +++ b/client/public/stylesheets/panels/unitcontrol.css @@ -239,6 +239,8 @@ body.feature-forceShowUnitControlPanel #unit-control-panel { #unit-control-panel:not([data-show-roe]) #roe, #unit-control-panel:not([data-show-threat]) #threat, #unit-control-panel:not([data-show-emissions-countermeasures]) #emissions-countermeasures, +#unit-control-panel:not([data-show-shots-scatter]) #shots-scatter, +#unit-control-panel:not([data-show-shots-intensity]) #shots-intensity, #unit-control-panel:not([data-show-tanker-button]) #tanker-on, #unit-control-panel:not([data-show-AWACS-button]) #AWACS-on, #unit-control-panel:not([data-show-on-off]) #ai-on-off, diff --git a/client/public/stylesheets/style/style.css b/client/public/stylesheets/style/style.css index 37609fbd..0a49d7a1 100644 --- a/client/public/stylesheets/style/style.css +++ b/client/public/stylesheets/style/style.css @@ -640,7 +640,9 @@ nav.ol-panel> :last-child { #roe-buttons-container button, #reaction-to-threat-buttons-container button, -#emissions-countermeasures-buttons-container button { +#emissions-countermeasures-buttons-container button, +#shots-scatter-buttons-container button +#shots-intensity-buttons-container button { align-items: center; background-color: transparent; border: 1px solid var(--accent-light-blue); diff --git a/client/public/themes/olympus/images/buttons/intensity/1.svg b/client/public/themes/olympus/images/buttons/intensity/1.svg new file mode 100644 index 00000000..0846e4e6 --- /dev/null +++ b/client/public/themes/olympus/images/buttons/intensity/1.svg @@ -0,0 +1,44 @@ + + + + + + diff --git a/client/public/themes/olympus/images/buttons/intensity/2.svg b/client/public/themes/olympus/images/buttons/intensity/2.svg new file mode 100644 index 00000000..5c884188 --- /dev/null +++ b/client/public/themes/olympus/images/buttons/intensity/2.svg @@ -0,0 +1,43 @@ + + + + + + diff --git a/client/public/themes/olympus/images/buttons/intensity/3.svg b/client/public/themes/olympus/images/buttons/intensity/3.svg new file mode 100644 index 00000000..f07b2db6 --- /dev/null +++ b/client/public/themes/olympus/images/buttons/intensity/3.svg @@ -0,0 +1,43 @@ + + + + + + diff --git a/client/public/themes/olympus/images/buttons/scatter/1.svg b/client/public/themes/olympus/images/buttons/scatter/1.svg new file mode 100644 index 00000000..0846e4e6 --- /dev/null +++ b/client/public/themes/olympus/images/buttons/scatter/1.svg @@ -0,0 +1,44 @@ + + + + + + diff --git a/client/public/themes/olympus/images/buttons/scatter/2.svg b/client/public/themes/olympus/images/buttons/scatter/2.svg new file mode 100644 index 00000000..5c884188 --- /dev/null +++ b/client/public/themes/olympus/images/buttons/scatter/2.svg @@ -0,0 +1,43 @@ + + + + + + diff --git a/client/public/themes/olympus/images/buttons/scatter/3.svg b/client/public/themes/olympus/images/buttons/scatter/3.svg new file mode 100644 index 00000000..f07b2db6 --- /dev/null +++ b/client/public/themes/olympus/images/buttons/scatter/3.svg @@ -0,0 +1,43 @@ + + + + + + diff --git a/client/src/constants/constants.ts b/client/src/constants/constants.ts index e0547d43..b2c5834b 100644 --- a/client/src/constants/constants.ts +++ b/client/src/constants/constants.ts @@ -47,6 +47,18 @@ export const emissionsCountermeasuresDescriptions: string[] = [ "Always on (Radar and ECM always on)" ]; +export const shotsScatterDescriptions: string[] = [ + "Large scatter", + "Medium scatter", + "Small scatter (Radar guided units will track shots when the enemy unit is close)" +]; + +export const shotsIntensityDescriptions: string[] = [ + "Low intensity", + "Medium intensity", + "High intensity" +]; + export const minSpeedValues: { [key: string]: number } = { Aircraft: 100, Helicopter: 0, NavyUnit: 0, GroundUnit: 0 }; export const maxSpeedValues: { [key: string]: number } = { Aircraft: 800, Helicopter: 300, NavyUnit: 60, GroundUnit: 60 }; export const speedIncrements: { [key: string]: number } = { Aircraft: 25, Helicopter: 10, NavyUnit: 5, GroundUnit: 5 }; @@ -202,6 +214,8 @@ export enum DataIndexes { activePath, isLeader, operateAs, + shotsScatter, + shotsIntensity, endOfData = 255 }; diff --git a/client/src/interfaces.ts b/client/src/interfaces.ts index c5d45f36..61bd3409 100644 --- a/client/src/interfaces.ts +++ b/client/src/interfaces.ts @@ -177,6 +177,8 @@ export interface UnitData { activePath: LatLng[]; isLeader: boolean; operateAs: string; + shotsScatter: number; + shotsIntensity: number; } export interface LoadoutItemBlueprint { diff --git a/client/src/panels/unitcontrolpanel.ts b/client/src/panels/unitcontrolpanel.ts index c590c652..74e48944 100644 --- a/client/src/panels/unitcontrolpanel.ts +++ b/client/src/panels/unitcontrolpanel.ts @@ -6,7 +6,7 @@ import { aircraftDatabase } from "../unit/databases/aircraftdatabase"; import { Unit } from "../unit/unit"; import { Panel } from "./panel"; import { Switch } from "../controls/switch"; -import { ROEDescriptions, ROEs, altitudeIncrements, emissionsCountermeasures, emissionsCountermeasuresDescriptions, maxAltitudeValues, maxSpeedValues, minAltitudeValues, minSpeedValues, reactionsToThreat, reactionsToThreatDescriptions, speedIncrements } from "../constants/constants"; +import { ROEDescriptions, ROEs, altitudeIncrements, emissionsCountermeasures, emissionsCountermeasuresDescriptions, maxAltitudeValues, maxSpeedValues, minAltitudeValues, minSpeedValues, reactionsToThreat, reactionsToThreatDescriptions, shotsIntensityDescriptions, shotsScatterDescriptions, speedIncrements } from "../constants/constants"; import { ftToM, knotsToMs, mToFt, msToKnots } from "../other/utils"; import { GeneralSettings, Radio, TACAN } from "../interfaces"; @@ -56,9 +56,19 @@ export class UnitControlPanel extends Panel { return this.#createOptionButton(option, `emissions/${option.toLowerCase()}.svg`, emissionsCountermeasuresDescriptions[index],() => { getApp().getUnitsManager().selectedUnitsSetEmissionsCountermeasures(option); }); }); + this.#optionButtons["shotsScatter"] = [1, 2, 3].map((option: number, index: number) => { + return this.#createOptionButton(option.toString(), `scatter/${option.toString().toLowerCase()}.svg`, shotsScatterDescriptions[index],() => { getApp().getUnitsManager().selectedUnitsSetShotsScatter(option); }); + }); + + this.#optionButtons["shotsIntensity"] = [1, 2, 3].map((option: number, index: number) => { + return this.#createOptionButton(option.toString(), `intensity/${option.toString().toLowerCase()}.svg`, shotsIntensityDescriptions[index],() => { getApp().getUnitsManager().selectedUnitsSetShotsIntensity(option); }); + }); + this.getElement().querySelector("#roe-buttons-container")?.append(...this.#optionButtons["ROE"]); this.getElement().querySelector("#reaction-to-threat-buttons-container")?.append(...this.#optionButtons["reactionToThreat"]); this.getElement().querySelector("#emissions-countermeasures-buttons-container")?.append(...this.#optionButtons["emissionsCountermeasures"]); + this.getElement().querySelector("#shots-scatter-buttons-container")?.append(...this.#optionButtons["shotsScatter"]); + this.getElement().querySelector("#shots-intensity-buttons-container")?.append(...this.#optionButtons["shotsIntensity"]); /* Tanker */ this.#tankerSwitch = new Switch("tanker-on-switch", (value: boolean) => { @@ -195,6 +205,8 @@ export class UnitControlPanel extends Panel { element.toggleAttribute("data-show-roe", !isTanker && !isAWACS); element.toggleAttribute("data-show-threat", (this.#selectedUnitsTypes.includes("Aircraft") || this.#selectedUnitsTypes.includes("Helicopter")) && !(this.#selectedUnitsTypes.includes("GroundUnit") || this.#selectedUnitsTypes.includes("NavyUnit"))); element.toggleAttribute("data-show-emissions-countermeasures", (this.#selectedUnitsTypes.includes("Aircraft") || this.#selectedUnitsTypes.includes("Helicopter")) && !(this.#selectedUnitsTypes.includes("GroundUnit") || this.#selectedUnitsTypes.includes("NavyUnit"))); + element.toggleAttribute("data-show-shots-scatter", this.#selectedUnitsTypes.includes("GroundUnit")); //TODO: more refined + element.toggleAttribute("data-show-shots-intensity", this.#selectedUnitsTypes.includes("GroundUnit")); //TODO: more refined element.toggleAttribute("data-show-tanker-button", getApp().getUnitsManager().getSelectedUnitsVariable((unit: Unit) => {return unit.isTanker();}) === true); element.toggleAttribute("data-show-AWACS-button", getApp().getUnitsManager().getSelectedUnitsVariable((unit: Unit) => {return unit.isAWACS();}) === true); element.toggleAttribute("data-show-on-off", (this.#selectedUnitsTypes.includes("GroundUnit") || this.#selectedUnitsTypes.includes("NavyUnit")) && !(this.#selectedUnitsTypes.includes("Aircraft") || this.#selectedUnitsTypes.includes("Helicopter"))); @@ -256,6 +268,14 @@ export class UnitControlPanel extends Panel { button.classList.toggle("selected", this.#units.every((unit: Unit) => unit.getEmissionsCountermeasures() === button.value)) }); + this.#optionButtons["shotsScatter"].forEach((button: HTMLButtonElement) => { + button.classList.toggle("selected", this.#units.every((unit: Unit) => unit.getShotsScatter().toString() === button.value)) + }); + + this.#optionButtons["shotsIntensity"].forEach((button: HTMLButtonElement) => { + button.classList.toggle("selected", this.#units.every((unit: Unit) => unit.getShotsIntensity().toString() === button.value)) + }); + this.#tankerSwitch.setValue(isActiveTanker, false); this.#AWACSSwitch.setValue(isActiveAWACAS, false); this.#onOffSwitch.setValue(onOff, false); diff --git a/client/src/server/servermanager.ts b/client/src/server/servermanager.ts index c5321799..87a72599 100644 --- a/client/src/server/servermanager.ts +++ b/client/src/server/servermanager.ts @@ -357,6 +357,18 @@ export class ServerManager { this.PUT(data, callback); } + setShotsScatter(ID: number, shotsScatter: number, callback: CallableFunction = () => {}) { + var command = { "ID": ID, "shotsScatter": shotsScatter } + var data = { "setShotsScatter": command } + this.PUT(data, callback); + } + + setShotsIntensity(ID: number, shotsIntensity: number, callback: CallableFunction = () => {}) { + var command = { "ID": ID, "shotsIntensity": shotsIntensity } + var data = { "setShotsIntensity": command } + this.PUT(data, callback); + } + setAdvacedOptions(ID: number, isActiveTanker: boolean, isActiveAWACS: boolean, TACAN: TACAN, radio: Radio, generalSettings: GeneralSettings, callback: CallableFunction = () => {}) { var command = { "ID": ID, diff --git a/client/src/unit/unit.ts b/client/src/unit/unit.ts index b28e88aa..1679d1d2 100644 --- a/client/src/unit/unit.ts +++ b/client/src/unit/unit.ts @@ -78,6 +78,8 @@ export class Unit extends CustomMarker { #activePath: LatLng[] = []; #isLeader: boolean = false; #operateAs: string = "blue"; + #shotsScatter: number = 2; + #shotsIntensity: number = 2; #selectable: boolean; #selected: boolean = false; @@ -134,6 +136,8 @@ export class Unit extends CustomMarker { getActivePath() { return this.#activePath }; getIsLeader() { return this.#isLeader }; getOperateAs() { return this.#operateAs }; + getShotsScatter() { return this.#shotsScatter}; + getShotsIntensity() { return this.#shotsIntensity}; static getConstructor(type: string) { if (type === "GroundUnit") return GroundUnit; @@ -245,6 +249,8 @@ export class Unit extends CustomMarker { case DataIndexes.activePath: this.#activePath = dataExtractor.extractActivePath(); break; case DataIndexes.isLeader: this.#isLeader = dataExtractor.extractBool(); updateMarker = true; break; case DataIndexes.operateAs: this.#operateAs = enumToCoalition(dataExtractor.extractUInt8()); break; + case DataIndexes.shotsScatter: this.#shotsScatter = dataExtractor.extractUInt8(); break; + case DataIndexes.shotsIntensity: this.#shotsIntensity = dataExtractor.extractUInt8(); break; } } @@ -308,7 +314,9 @@ export class Unit extends CustomMarker { contacts: this.#contacts, activePath: this.#activePath, isLeader: this.#isLeader, - operateAs: this.#operateAs + operateAs: this.#operateAs, + shotsScatter: this.#shotsScatter, + shotsIntensity: this.#shotsIntensity } } @@ -813,6 +821,16 @@ export class Unit extends CustomMarker { getApp().getServerManager().landAtPoint(this.ID, latlng); } + setShotsScatter(shotsScatter: number) { + if (!this.#human) + getApp().getServerManager().setShotsScatter(this.ID, shotsScatter); + } + + setShotsIntensity(shotsIntensity: number) { + if (!this.#human) + getApp().getServerManager().setShotsIntensity(this.ID, shotsIntensity); + } + /***********************************************/ getActions(): { [key: string]: { text: string, tooltip: string, type: string } } { /* To be implemented by child classes */ // TODO make Unit an abstract class diff --git a/client/src/unit/unitsmanager.ts b/client/src/unit/unitsmanager.ts index 7e6fa97d..148b0ea2 100644 --- a/client/src/unit/unitsmanager.ts +++ b/client/src/unit/unitsmanager.ts @@ -687,6 +687,30 @@ export class UnitsManager { this.#showActionMessage(selectedUnits, `unit simulating fire fight`); } + /** Set a specific shots scatter to all the selected units + * + * @param shotsScatter Value to set + */ + selectedUnitsSetShotsScatter(shotsScatter: number) { + var selectedUnits = this.getSelectedUnits({ excludeHumans: true, onlyOnePerGroup: true }); + for (let idx in selectedUnits) { + selectedUnits[idx].setShotsScatter(shotsScatter); + } + this.#showActionMessage(selectedUnits, `shots scatter set to ${shotsScatter}`); + } + + /** Set a specific shots intensity to all the selected units + * + * @param shotsScatter Value to set + */ + selectedUnitsSetShotsIntensity(shotsIntensity: number) { + var selectedUnits = this.getSelectedUnits({ excludeHumans: true, onlyOnePerGroup: true }); + for (let idx in selectedUnits) { + selectedUnits[idx].setShotsIntensity(shotsIntensity); + } + this.#showActionMessage(selectedUnits, `shots intensity set to ${shotsIntensity}`); + } + /*********************** Control operations on selected units ************************/ /** See getUnitsCategories for more info * diff --git a/client/views/panels/unitcontrol.ejs b/client/views/panels/unitcontrol.ejs index aa48e8a4..0ff44f4f 100644 --- a/client/views/panels/unitcontrol.ejs +++ b/client/views/panels/unitcontrol.ejs @@ -61,6 +61,20 @@ +
+

Shots scatter

+
+ +
+
+ +
+

Shots intensity

+
+ +
+
+

Enable tanker

@@ -81,7 +95,7 @@

Unit active

-
+
Toggling this disables unit AI completely. It will no longer move, react or emit radio waves.
diff --git a/src/core/src/unit.cpp b/src/core/src/unit.cpp index acaaa55f..e9eddaa1 100644 --- a/src/core/src/unit.cpp +++ b/src/core/src/unit.cpp @@ -250,8 +250,8 @@ void Unit::getData(stringstream& ss, unsigned long long time) case DataIndex::position: appendNumeric(ss, datumIndex, position); break; case DataIndex::speed: appendNumeric(ss, datumIndex, speed); break; case DataIndex::heading: appendNumeric(ss, datumIndex, heading); break; - case DataIndex::isActiveTanker: appendNumeric(ss, datumIndex, isActiveTanker); break; - case DataIndex::isActiveAWACS: appendNumeric(ss, datumIndex, isActiveAWACS); break; + case DataIndex::isActiveTanker: appendNumeric(ss, datumIndex, isActiveTanker); break; + case DataIndex::isActiveAWACS: appendNumeric(ss, datumIndex, isActiveAWACS); break; case DataIndex::onOff: appendNumeric(ss, datumIndex, onOff); break; case DataIndex::followRoads: appendNumeric(ss, datumIndex, followRoads); break; case DataIndex::fuel: appendNumeric(ss, datumIndex, fuel); break; From 11a5fec1951e20cdf4bd69b83da48f5f95436508 Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Mon, 30 Oct 2023 15:56:10 +0100 Subject: [PATCH 3/9] Added effect of vertical velocity and of scatter and intensity --- client/src/constants/constants.ts | 2 + client/src/interfaces.ts | 2 + client/src/unit/unit.ts | 8 +++ scripts/OlympusCommand.lua | 5 +- src/core/include/datatypes.h | 2 + src/core/include/unit.h | 11 +++- src/core/src/airunit.cpp | 10 ++++ src/core/src/groundunit.cpp | 89 ++++++++++++++++++++----------- src/core/src/navyunit.cpp | 4 ++ src/core/src/unit.cpp | 14 ++++- src/core/src/unitsmanager.cpp | 5 +- 11 files changed, 116 insertions(+), 36 deletions(-) diff --git a/client/src/constants/constants.ts b/client/src/constants/constants.ts index b2c5834b..37a1f040 100644 --- a/client/src/constants/constants.ts +++ b/client/src/constants/constants.ts @@ -189,6 +189,8 @@ export enum DataIndexes { hasTask, position, speed, + horizontalVelocity, + verticalVelocity, heading, isActiveTanker, isActiveAWACS, diff --git a/client/src/interfaces.ts b/client/src/interfaces.ts index 61bd3409..e795091d 100644 --- a/client/src/interfaces.ts +++ b/client/src/interfaces.ts @@ -152,6 +152,8 @@ export interface UnitData { hasTask: boolean; position: LatLng; speed: number; + horizontalVelocity: number; + verticalVelocity: number; heading: number; isActiveTanker: boolean; isActiveAWACS: boolean; diff --git a/client/src/unit/unit.ts b/client/src/unit/unit.ts index 1679d1d2..4e75929f 100644 --- a/client/src/unit/unit.ts +++ b/client/src/unit/unit.ts @@ -34,6 +34,8 @@ export class Unit extends CustomMarker { #hasTask: boolean = false; #position: LatLng = new LatLng(0, 0, 0); #speed: number = 0; + #horizontalVelocity: number = 0; + #verticalVelocity: number = 0; #heading: number = 0; #isActiveTanker: boolean = false; #isActiveAWACS: boolean = false; @@ -111,6 +113,8 @@ export class Unit extends CustomMarker { getHasTask() { return this.#hasTask }; getPosition() { return this.#position }; getSpeed() { return this.#speed }; + getHorizontalVelocity() { return this.#horizontalVelocity }; + getVerticalVelocity() { return this.#verticalVelocity }; getHeading() { return this.#heading }; getIsActiveTanker() { return this.#isActiveTanker }; getIsActiveAWACS() { return this.#isActiveAWACS }; @@ -224,6 +228,8 @@ export class Unit extends CustomMarker { case DataIndexes.hasTask: this.#hasTask = dataExtractor.extractBool(); break; case DataIndexes.position: this.#position = dataExtractor.extractLatLng(); updateMarker = true; break; case DataIndexes.speed: this.#speed = dataExtractor.extractFloat64(); updateMarker = true; break; + case DataIndexes.horizontalVelocity: this.#horizontalVelocity = dataExtractor.extractFloat64(); break; + case DataIndexes.verticalVelocity: this.#verticalVelocity = dataExtractor.extractFloat64(); break; case DataIndexes.heading: this.#heading = dataExtractor.extractFloat64(); updateMarker = true; break; case DataIndexes.isActiveTanker: this.#isActiveTanker = dataExtractor.extractBool(); break; case DataIndexes.isActiveAWACS: this.#isActiveAWACS = dataExtractor.extractBool(); break; @@ -290,6 +296,8 @@ export class Unit extends CustomMarker { hasTask: this.#hasTask, position: this.#position, speed: this.#speed, + horizontalVelocity: this.#horizontalVelocity, + verticalVelocity: this.#verticalVelocity, heading: this.#heading, isActiveTanker: this.#isActiveTanker, isActiveAWACS: this.#isActiveAWACS, diff --git a/scripts/OlympusCommand.lua b/scripts/OlympusCommand.lua index e77dd00e..87bf92d5 100644 --- a/scripts/OlympusCommand.lua +++ b/scripts/OlympusCommand.lua @@ -888,6 +888,7 @@ function Olympus.setUnitsData(arg, time) local lat, lng, alt = coord.LOtoLL(unit:getPoint()) local position = unit:getPosition() local heading = math.atan2( position.x.z, position.x.x ) + local velocity = unit:getVelocity(); -- Fill the data table table["name"] = unit:getTypeName() @@ -896,7 +897,9 @@ function Olympus.setUnitsData(arg, time) table["position"]["lat"] = lat table["position"]["lng"] = lng table["position"]["alt"] = alt - table["speed"] = mist.vec.mag(unit:getVelocity()) + table["speed"] = mist.vec.mag(velocity) + table["horizontalVelocity"] = math.sqrt(velocity.x * velocity.x + velocity.z * velocity.z) + table["verticalVelocity"] = velocity.y table["heading"] = heading table["isAlive"] = unit:isExist() and unit:isActive() and unit:getLife() >= 1 diff --git a/src/core/include/datatypes.h b/src/core/include/datatypes.h index 26c5a084..d24f28c2 100644 --- a/src/core/include/datatypes.h +++ b/src/core/include/datatypes.h @@ -19,6 +19,8 @@ namespace DataIndex { hasTask, position, speed, + horizontalVelocity, + verticalVelocity, heading, isActiveTanker, isActiveAWACS, diff --git a/src/core/include/unit.h b/src/core/include/unit.h index 058990db..a428dcbe 100644 --- a/src/core/include/unit.h +++ b/src/core/include/unit.h @@ -55,6 +55,8 @@ public: bool checkTaskFailed(); void resetTaskFailedCounter(); void setHasTaskAssigned(bool newHasTaskAssigned); + void setEnableTaskCheckFailed(bool newEnableTaskCheckFailed) { enableTaskFailedCheck = newEnableTaskCheckFailed; } + bool getEnableTaskCheckFailed() { return enableTaskFailedCheck; } void triggerUpdate(unsigned char datumIndex); @@ -73,9 +75,11 @@ public: virtual void setGroupName(string newValue) { updateValue(groupName, newValue, DataIndex::groupName); } virtual void setState(unsigned char newValue) { updateValue(state, newValue, DataIndex::state); }; virtual void setTask(string newValue) { updateValue(task, newValue, DataIndex::task); } - virtual void setHasTask(bool newValue) { updateValue(hasTask, newValue, DataIndex::hasTask); } + virtual void setHasTask(bool newValue); virtual void setPosition(Coords newValue) { updateValue(position, newValue, DataIndex::position); } virtual void setSpeed(double newValue) { updateValue(speed, newValue, DataIndex::speed); } + virtual void setHorizontalVelocity(double newValue) { updateValue(horizontalVelocity, newValue, DataIndex::horizontalVelocity); } + virtual void setVerticalVelocity(double newValue) { updateValue(verticalVelocity, newValue, DataIndex::verticalVelocity); } virtual void setHeading(double newValue) { updateValue(heading, newValue, DataIndex::heading); } virtual void setIsActiveTanker(bool newValue); virtual void setIsActiveAWACS(bool newValue); @@ -119,6 +123,8 @@ public: virtual bool getHasTask() { return hasTask; } virtual Coords getPosition() { return position; } virtual double getSpeed() { return speed; } + virtual double getHorizontalVelocity() { return horizontalVelocity; } + virtual double getVerticalVelocity() { return verticalVelocity; } virtual double getHeading() { return heading; } virtual bool getIsActiveTanker() { return isActiveTanker; } virtual bool getIsActiveAWACS() { return isActiveAWACS; } @@ -164,6 +170,8 @@ protected: bool hasTask = false; Coords position = Coords(NULL); double speed = NULL; + double horizontalVelocity = NULL; + double verticalVelocity = NULL; double heading = NULL; bool isActiveTanker = false; bool isActiveAWACS = false; @@ -200,6 +208,7 @@ protected: double initialFuel = 0; map updateTimeMap; unsigned long long lastLoopTime = 0; + bool enableTaskFailedCheck = false; /********** Private methods **********/ virtual void AIloop() = 0; diff --git a/src/core/src/airunit.cpp b/src/core/src/airunit.cpp index 5db499c6..f5f95f20 100644 --- a/src/core/src/airunit.cpp +++ b/src/core/src/airunit.cpp @@ -80,15 +80,18 @@ void AirUnit::setState(unsigned char newState) /************ Perform any action required when ENTERING a state ************/ switch (newState) { case State::IDLE: { + setEnableTaskCheckFailed(false); clearActivePath(); resetActiveDestination(); break; } case State::REACH_DESTINATION: { + setEnableTaskCheckFailed(true); resetActiveDestination(); break; } case State::ATTACK: { + setEnableTaskCheckFailed(true); if (isTargetAlive()) { Unit* target = unitsManager->getUnit(targetID); Coords targetPosition = Coords(target->getPosition().lat, target->getPosition().lng, 0); @@ -99,36 +102,43 @@ void AirUnit::setState(unsigned char newState) break; } case State::FOLLOW: { + setEnableTaskCheckFailed(true); clearActivePath(); resetActiveDestination(); break; } case State::LAND: { + setEnableTaskCheckFailed(false); resetActiveDestination(); break; } case State::REFUEL: { + setEnableTaskCheckFailed(true); initialFuel = fuel; clearActivePath(); resetActiveDestination(); break; } case State::BOMB_POINT: { + setEnableTaskCheckFailed(true); clearActivePath(); resetActiveDestination(); break; } case State::CARPET_BOMB: { + setEnableTaskCheckFailed(true); clearActivePath(); resetActiveDestination(); break; } case State::BOMB_BUILDING: { + setEnableTaskCheckFailed(true); clearActivePath(); resetActiveDestination(); break; } case State::LAND_AT_POINT: { + setEnableTaskCheckFailed(true); resetActiveDestination(); break; } diff --git a/src/core/src/groundunit.cpp b/src/core/src/groundunit.cpp index 801000b0..0ee297a3 100644 --- a/src/core/src/groundunit.cpp +++ b/src/core/src/groundunit.cpp @@ -13,6 +13,9 @@ extern Scheduler* scheduler; extern UnitsManager* unitsManager; json::value GroundUnit::database = json::value(); +#define RANDOM_ZERO_TO_ONE (double)(rand()) / (double)(RAND_MAX) +#define RANDOM_MINUS_ONE_TO_ONE (((double)(rand()) / (double)(RAND_MAX) - 0.5) * 2) + void GroundUnit::loadDatabase(string path) { char* buf = nullptr; size_t sz = 0; @@ -89,30 +92,36 @@ void GroundUnit::setState(unsigned char newState) /************ Perform any action required when ENTERING a state ************/ switch (newState) { case State::IDLE: { + setEnableTaskCheckFailed(false); clearActivePath(); resetActiveDestination(); break; } case State::REACH_DESTINATION: { + setEnableTaskCheckFailed(true); resetActiveDestination(); break; } case State::FIRE_AT_AREA: { + setEnableTaskCheckFailed(true); clearActivePath(); resetActiveDestination(); break; } case State::SIMULATE_FIRE_FIGHT: { + setEnableTaskCheckFailed(true); clearActivePath(); resetActiveDestination(); break; } case State::SCENIC_AAA: { + setEnableTaskCheckFailed(false); clearActivePath(); resetActiveDestination(); break; } case State::MISS_ON_PURPOSE: { + setEnableTaskCheckFailed(false); clearActivePath(); resetActiveDestination(); break; @@ -214,7 +223,7 @@ void GroundUnit::AIloop() } if (internalCounter == 0) - internalCounter = 20 / 0.05; // TODO make defined constant + internalCounter = 20 / FRAMERATE_TIME_INTERVAL; internalCounter--; break; @@ -247,7 +256,7 @@ void GroundUnit::AIloop() } if (internalCounter == 0) - internalCounter = 20 / 0.05; + internalCounter = 20 / FRAMERATE_TIME_INTERVAL; internalCounter--; break; @@ -261,48 +270,58 @@ void GroundUnit::AIloop() unsigned char targetCoalition = getOperateAs() == 2 ? 1 : 2; Unit* target = unitsManager->getClosestUnit(this, targetCoalition, {"Aircraft", "Helicopter"}, distance); + /* Default gun values */ + double barrelHeight = 1.0; /* m */ + double muzzleVelocity = 860; /* m/s */ + double aimTime = 10; /* s */ + unsigned int shotsToFire = 10; + double shotsBaseInterval = 15; /* s */ + double shotsBaseScatter = 5; /* degs */ + double engagementRange = 10000; /* m */ + + if (database.has_object_field(to_wstring(name))) { + json::value databaseEntry = database[to_wstring(name)]; + if (databaseEntry.has_number_field(L"barrelHeight")) + barrelHeight = databaseEntry[L"barrelHeight"].as_number().to_double(); + if (databaseEntry.has_number_field(L"muzzleVelocity")) + muzzleVelocity = databaseEntry[L"muzzleVelocity"].as_number().to_double(); + if (databaseEntry.has_number_field(L"aimTime")) + aimTime = databaseEntry[L"aimTime"].as_number().to_double(); + if (databaseEntry.has_number_field(L"shotsToFire")) + shotsToFire = databaseEntry[L"shotsToFire"].as_number().to_uint32(); + if (databaseEntry.has_number_field(L"engagementRange")) + engagementRange = databaseEntry[L"engagementRange"].as_number().to_double(); + if (databaseEntry.has_number_field(L"shotsBaseInterval")) + shotsBaseInterval = databaseEntry[L"shotsBaseInterval"].as_number().to_double(); + if (databaseEntry.has_number_field(L"shotsBaseScatter")) + shotsBaseScatter = databaseEntry[L"shotsBaseScatter"].as_number().to_double(); + } + /* Only do if we have a valid target close enough for AAA */ if (target != nullptr && distance < 10000 /* m */) { - /* Default gun values */ - double barrelHeight = 1.0; /* m */ - double muzzleVelocity = 860; /* m/s */ - double aimTime = 10; /* s */ - unsigned int shotsToFire = 10; - - if (database.has_object_field(to_wstring(name))) { - json::value databaseEntry = database[to_wstring(name)]; - if (databaseEntry.has_number_field(L"barrelHeight")) - barrelHeight = databaseEntry[L"barrelHeight"].as_number().to_double(); - if (databaseEntry.has_number_field(L"muzzleVelocity")) - muzzleVelocity = databaseEntry[L"muzzleVelocity"].as_number().to_double(); - if (databaseEntry.has_number_field(L"aimTime")) - aimTime = databaseEntry[L"aimTime"].as_number().to_double(); - if (databaseEntry.has_number_field(L"shotsToFire")) - shotsToFire = databaseEntry[L"shotsToFire"].as_number().to_uint32(); - } - /* Approximate the flight time */ if (muzzleVelocity != 0) aimTime += distance / muzzleVelocity; - internalCounter = (aimTime + 2) / 0.05; // TODO fix me you fucking monster + internalCounter = (aimTime + (3 - shotsIntensity) * shotsBaseInterval + 2) / FRAMERATE_TIME_INTERVAL; - /* Compute where the target will be in aimTime seconds. We don't consider vertical velocity atm, since after all we are not really tring to hit */ - double aimDistance = target->getSpeed() * aimTime; + /* Compute where the target will be in aimTime seconds. */ + double aimDistance = target->getHorizontalVelocity() * aimTime; double aimLat = 0; double aimLng = 0; Geodesic::WGS84().Direct(target->getPosition().lat, target->getPosition().lng, target->getHeading() * 57.29577, aimDistance, aimLat, aimLng); /* TODO make util function */ + double aimAlt = target->getPosition().alt + target->getVerticalVelocity() * aimTime; - /* Compute distance to the aim point */ // TODO: why am I here? - double dist; - double bearing1; - double bearing2; - Geodesic::WGS84().Inverse(position.lat, position.lng, aimLat, aimLng, dist, bearing1, bearing2); + /* Compute a random scattering depending on the distance and the selected shots scatter */ + double scatterDistance = distance * tan(shotsBaseScatter * (3 - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; + double scatterAngle = 180 * RANDOM_MINUS_ONE_TO_ONE; + Geodesic::WGS84().Direct(aimLat, aimLng, scatterAngle, scatterDistance, aimLat, aimLng); /* TODO make util function */ + aimAlt = aimAlt + distance * tan(shotsBaseScatter * (3 - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; /* Send the command */ std::ostringstream taskSS; taskSS.precision(10); - taskSS << "{id = 'FireAtPoint', lat = " << aimLat << ", lng = " << aimLng << ", alt = " << target->getPosition().alt << ", radius = 0.001, expendQty = " << shotsToFire << " }"; + taskSS << "{id = 'FireAtPoint', lat = " << aimLat << ", lng = " << aimLng << ", alt = " << aimAlt << ", radius = 0.001, expendQty = " << shotsToFire << " }"; Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); @@ -315,8 +334,16 @@ void GroundUnit::AIloop() } } - if (internalCounter == 0) - internalCounter = 5 / 0.05; + /* If no valid target was detected */ + if (internalCounter == 0) { + double alertnessTimeConstant = 10; /* s */ + if (database.has_object_field(to_wstring(name))) { + json::value databaseEntry = database[to_wstring(name)]; + if (databaseEntry.has_number_field(L"alertnessTimeConstant")) + alertnessTimeConstant = databaseEntry[L"alertnessTimeConstant"].as_number().to_double(); + } + internalCounter = (5 + RANDOM_ZERO_TO_ONE * alertnessTimeConstant) / FRAMERATE_TIME_INTERVAL; + } internalCounter--; break; diff --git a/src/core/src/navyunit.cpp b/src/core/src/navyunit.cpp index 0c66380d..256fbb64 100644 --- a/src/core/src/navyunit.cpp +++ b/src/core/src/navyunit.cpp @@ -81,21 +81,25 @@ void NavyUnit::setState(unsigned char newState) /************ Perform any action required when ENTERING a state ************/ switch (newState) { case State::IDLE: { + setEnableTaskCheckFailed(false); clearActivePath(); resetActiveDestination(); break; } case State::REACH_DESTINATION: { + setEnableTaskCheckFailed(true); resetActiveDestination(); break; } case State::FIRE_AT_AREA: { + setEnableTaskCheckFailed(true); clearActivePath(); resetActiveDestination(); resetTask(); break; } case State::SIMULATE_FIRE_FIGHT: { + setEnableTaskCheckFailed(true); clearActivePath(); resetActiveDestination(); resetTask(); diff --git a/src/core/src/unit.cpp b/src/core/src/unit.cpp index e9eddaa1..58ef3a8e 100644 --- a/src/core/src/unit.cpp +++ b/src/core/src/unit.cpp @@ -69,6 +69,12 @@ void Unit::update(json::value json, double dt) if (json.has_number_field(L"speed")) setSpeed(json[L"speed"].as_number().to_double()); + if (json.has_number_field(L"horizontalVelocity")) + setHorizontalVelocity(json[L"horizontalVelocity"].as_number().to_double()); + + if (json.has_number_field(L"verticalVelocity")) + setVerticalVelocity(json[L"verticalVelocity"].as_number().to_double()); + if (json.has_boolean_field(L"isAlive")) setAlive(json[L"isAlive"].as_bool()); @@ -146,7 +152,7 @@ void Unit::runAILoop() { /* If the unit is alive, controlled, is the leader of the group and it is not a human, run the AI Loop that performs the requested commands and instructions (moving, attacking, etc) */ if (getAlive() && getControlled() && !getHuman() && getIsLeader()) { - if (checkTaskFailed() && state != State::IDLE && state != State::LAND) { + if (getEnableTaskCheckFailed() && checkTaskFailed()) { log(unitName + " has no task, switching to IDLE state"); setState(State::IDLE); } @@ -249,6 +255,8 @@ void Unit::getData(stringstream& ss, unsigned long long time) case DataIndex::hasTask: appendNumeric(ss, datumIndex, hasTask); break; case DataIndex::position: appendNumeric(ss, datumIndex, position); break; case DataIndex::speed: appendNumeric(ss, datumIndex, speed); break; + case DataIndex::horizontalVelocity: appendNumeric(ss, datumIndex, horizontalVelocity); break; + case DataIndex::verticalVelocity: appendNumeric(ss, datumIndex, verticalVelocity); break; case DataIndex::heading: appendNumeric(ss, datumIndex, heading); break; case DataIndex::isActiveTanker: appendNumeric(ss, datumIndex, isActiveTanker); break; case DataIndex::isActiveAWACS: appendNumeric(ss, datumIndex, isActiveAWACS); break; @@ -734,6 +742,10 @@ bool Unit::updateActivePath(bool looping) } } +void Unit::setHasTask(bool newValue) { + updateValue(hasTask, newValue, DataIndex::hasTask); +} + bool Unit::checkTaskFailed() { if (getHasTask()) diff --git a/src/core/src/unitsmanager.cpp b/src/core/src/unitsmanager.cpp index a157956e..68b7a41e 100644 --- a/src/core/src/unitsmanager.cpp +++ b/src/core/src/unitsmanager.cpp @@ -172,19 +172,20 @@ Unit* UnitsManager::getClosestUnit(Unit* unit, unsigned char coalition, vectorgetPosition().lat, unit->getPosition().lng, p.second->getPosition().lat, p.second->getPosition().lng, dist, bearing1, bearing2); + double altDelta = unit->getPosition().alt - p.second->getPosition().alt; /* If the closest unit has not been assigned yet, assign it to this unit */ if (closestUnit == nullptr) { closestUnit = p.second; - distance = dist; + distance = sqrt(dist * dist + altDelta * altDelta); } else { /* Check if the unit is closer than the one already selected */ if (dist < distance) { closestUnit = p.second; - distance = dist; + distance = sqrt(dist * dist + altDelta * altDelta); } } } From 528e0db79c1f205e2efb37a60a0b7ea8ba077e27 Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Tue, 31 Oct 2023 17:48:09 +0100 Subject: [PATCH 4/9] Updated demo.js --- client/demo.js | 86 ++++++++----------- .../olympus/images/buttons/intensity/1.svg | 28 +++--- .../olympus/images/buttons/intensity/2.svg | 39 +++++---- .../olympus/images/buttons/intensity/3.svg | 43 ++++++---- .../olympus/images/buttons/scatter/1.svg | 36 +++++--- .../olympus/images/buttons/scatter/2.svg | 43 ++++++---- .../olympus/images/buttons/scatter/3.svg | 43 ++++++---- 7 files changed, 176 insertions(+), 142 deletions(-) diff --git a/client/demo.js b/client/demo.js index 44c2c08d..95d2b9a3 100644 --- a/client/demo.js +++ b/client/demo.js @@ -4,7 +4,7 @@ var enc = new TextEncoder(); const DEMO_UNIT_DATA = { ["1"]:{ category: "Aircraft", alive: true, human: false, controlled: true, coalition: 2, country: 0, name: "KC-135", unitName: "Cool guy 1-1 who also has a very long name", groupName: "Cool group 1", state: 1, task: "Being cool!", - hasTask: true, position: { lat: 37, lng: -116, alt: 1000 }, speed: 200, heading: 45, isActiveTanker: true, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, + hasTask: true, position: { lat: 37, lng: -116, alt: 1000 }, speed: 200, horizontalVelocity: 200, verticalVelicity: 0, heading: 45, isActiveTanker: true, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, targetID: 0, @@ -20,7 +20,7 @@ const DEMO_UNIT_DATA = { activePath: [{lat: 38, lng: -115, alt: 0}, {lat: 38, lng: -114, alt: 0}] }, ["2"]:{ category: "Aircraft", alive: true, human: false, controlled: true, coalition: 1, country: 0, name: "E-3A", unitName: "Cool guy 1-2", groupName: "Cool group 2", state: 1, task: "Being cool", - hasTask: true, position: { lat: 36.9, lng: -116, alt: 1000 }, speed: 200, heading: 315 * Math.PI / 180, isActiveTanker: false, isActiveAWACS: true, onOff: true, followRoads: false, fuel: 50, + hasTask: true, position: { lat: 36.9, lng: -116, alt: 1000 }, speed: 200, horizontalVelocity: 200, verticalVelicity: 0, heading: 315 * Math.PI / 180, isActiveTanker: false, isActiveAWACS: true, onOff: true, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, targetID: 0, @@ -35,7 +35,7 @@ const DEMO_UNIT_DATA = { 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, isActiveTanker: false, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, + hasTask: false, position: { lat: 37.1, lng: -116.1, alt: 1000 }, speed: 200, horizontalVelocity: 200, verticalVelicity: 0, heading: 315 * Math.PI / 180, isActiveTanker: false, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, targetID: 0, @@ -50,7 +50,7 @@ const DEMO_UNIT_DATA = { contacts: [{ID: 1, detectionMethod: 16}], activePath: [ ] }, ["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, isActiveTanker: false, isActiveAWACS: false, onOff: false, followRoads: false, fuel: 50, + hasTask: false, position: { lat: 37.2, lng: -116.1, alt: 1000 }, speed: 200, horizontalVelocity: 200, verticalVelicity: 0, heading: 315 * Math.PI / 180, isActiveTanker: false, isActiveAWACS: false, onOff: false, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, targetID: 0, @@ -67,7 +67,7 @@ const DEMO_UNIT_DATA = { isLeader: true, operateAs: 2 }, ["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, isActiveTanker: false, isActiveAWACS: false, onOff: false, followRoads: false, fuel: 50, + hasTask: false, position: { lat: 37.21, lng: -116.1, alt: 1000 }, speed: 200, horizontalVelocity: 200, verticalVelicity: 0, heading: 315 * Math.PI / 180, isActiveTanker: false, isActiveAWACS: false, onOff: false, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, targetID: 0, @@ -85,7 +85,7 @@ const DEMO_UNIT_DATA = { operateAs: 2 }, ["6"]:{ category: "Aircraft", alive: true, human: false, controlled: false, coalition: 1, country: 0, name: "FA-18C_hornet", unitName: "Bad boi 1-2", groupName: "Bad group 1", state: 1, task: "Being bad", - hasTask: false, position: { lat: 36.8, lng: -116, alt: 1000 }, speed: 200, heading: 315 * Math.PI / 180, isActiveTanker: false, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, + hasTask: false, position: { lat: 36.8, lng: -116, alt: 1000 }, speed: 200, horizontalVelocity: 200, verticalVelicity: 0, heading: 315 * Math.PI / 180, isActiveTanker: false, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, targetID: 0, @@ -100,7 +100,7 @@ const DEMO_UNIT_DATA = { contacts: [{ID: 1, detectionMethod: 16}], activePath: [ ] }, ["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, isActiveTanker: false, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, + hasTask: false, position: { lat: 37.2, lng: -116.2, alt: 1000 }, speed: 200, horizontalVelocity: 200, verticalVelicity: 0, heading: 315 * Math.PI / 180, isActiveTanker: false, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, targetID: 0, @@ -142,26 +142,6 @@ class DemoDataGenerator { }, })) - //for (let i = 8; i < 100; i++) { - // var randomUnit = { category: "Aircraft", alive: true, human: false, controlled: true, coalition: 2, country: 0, name: "KC-135", unitName: "Cool guy 1-1 who also has a very long name", groupName: "Cool group 1", state: 1, task: "Being cool!", - // hasTask: true, position: { lat: 37 + Math.random(), lng: -116 + Math.random(), alt: 1000 }, speed: 200, heading: 45, isActiveTanker: true, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, - // desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, - // formationOffset: { x: 0, y: 0, z: 0 }, - // targetID: 0, - // targetPosition: { lat: 0, lng: 0, alt: 0 }, - // ROE: 1, - // reactionToThreat: 1, - // emissionsCountermeasures: 1, - // TACAN: { isOn: false, XY: 'Y', callsign: 'TKR', channel: 40 }, - // 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: 4, detectionMethod: 1}], - // activePath: [] - // } - // DEMO_UNIT_DATA[i.toString()] = randomUnit; - //} - this.startTime = Date.now(); } @@ -187,31 +167,33 @@ class DemoDataGenerator { array = this.appendUint8(array, unit.hasTask, 12); array = this.appendCoordinates(array, unit.position, 13); array = this.appendDouble(array, unit.speed, 14); - array = this.appendDouble(array, unit.heading, 15); - array = this.appendUint8(array, unit.isActiveTanker, 16); - array = this.appendUint8(array, unit.isActiveAWACS, 17); - array = this.appendUint8(array, unit.onOff, 18); - array = this.appendUint8(array, unit.followRoads, 19); - array = this.appendUint16(array, unit.fuel, 20); - array = this.appendDouble(array, unit.desiredSpeed, 21); - array = this.appendUint8(array, unit.desiredSpeedType, 22); - array = this.appendDouble(array, unit.desiredAltitude, 23); - array = this.appendUint8(array, unit.desiredAltitudeType, 24); - array = this.appendUint32(array, unit.leaderID, 25); - array = this.appendOffset(array, unit.formationOffset, 26); - array = this.appendUint32(array, unit.targetID, 27); - array = this.appendCoordinates(array, unit.targetPosition, 28); - array = this.appendUint8(array, unit.ROE, 29); - array = this.appendUint8(array, unit.reactionToThreat, 30); - array = this.appendUint8(array, unit.emissionsCountermeasures, 31); - array = this.appendTACAN(array, unit.TACAN, 32); - array = this.appendRadio(array, unit.radio, 33); - array = this.appendRadio(array, unit.generalSettings, 34); - array = this.appendAmmo(array, unit.ammo, 35); - array = this.appendContacts(array, unit.contacts, 36); - array = this.appendActivePath(array, unit.activePath, 37); - array = this.appendUint8(array, unit.isLeader, 38); - array = this.appendUint8(array, unit.operateAs, 39); + array = this.appendDouble(array, unit.horizontalVelocity, 15); + array = this.appendDouble(array, unit.verticalVelicity, 16); + array = this.appendDouble(array, unit.heading, 17); + array = this.appendUint8(array, unit.isActiveTanker, 18); + array = this.appendUint8(array, unit.isActiveAWACS, 19); + array = this.appendUint8(array, unit.onOff, 20); + array = this.appendUint8(array, unit.followRoads, 21); + array = this.appendUint16(array, unit.fuel, 22); + array = this.appendDouble(array, unit.desiredSpeed, 23); + array = this.appendUint8(array, unit.desiredSpeedType, 24); + array = this.appendDouble(array, unit.desiredAltitude, 25); + array = this.appendUint8(array, unit.desiredAltitudeType, 26); + array = this.appendUint32(array, unit.leaderID, 27); + array = this.appendOffset(array, unit.formationOffset, 28); + array = this.appendUint32(array, unit.targetID, 29); + array = this.appendCoordinates(array, unit.targetPosition, 30); + array = this.appendUint8(array, unit.ROE, 31); + array = this.appendUint8(array, unit.reactionToThreat, 32); + array = this.appendUint8(array, unit.emissionsCountermeasures, 33); + array = this.appendTACAN(array, unit.TACAN, 34); + array = this.appendRadio(array, unit.radio, 35); + array = this.appendRadio(array, unit.generalSettings, 36); + array = this.appendAmmo(array, unit.ammo, 37); + array = this.appendContacts(array, unit.contacts, 38); + array = this.appendActivePath(array, unit.activePath, 39); + array = this.appendUint8(array, unit.isLeader, 40); + array = this.appendUint8(array, unit.operateAs, 41); array = this.concat(array, this.uint8ToByteArray(255)); } res.end(Buffer.from(array, 'binary')); diff --git a/client/public/themes/olympus/images/buttons/intensity/1.svg b/client/public/themes/olympus/images/buttons/intensity/1.svg index 0846e4e6..2321bf1e 100644 --- a/client/public/themes/olympus/images/buttons/intensity/1.svg +++ b/client/public/themes/olympus/images/buttons/intensity/1.svg @@ -6,8 +6,8 @@ fill="none" version="1.1" id="svg4" - sodipodi:docname="designated.svg" - inkscape:version="1.1 (c68e22c387, 2021-05-23)" + sodipodi:docname="1.svg" + inkscape:version="1.2.2 (732a01da63, 2022-12-09)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -28,17 +28,19 @@ fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" - inkscape:zoom="5.9428571" - inkscape:cx="-29.026442" - inkscape:cy="16.237981" - inkscape:window-width="1920" - inkscape:window-height="1017" - inkscape:window-x="-8" + inkscape:zoom="23.771428" + inkscape:cx="2.6712741" + inkscape:cy="12.283654" + inkscape:window-width="2560" + inkscape:window-height="1377" + inkscape:window-x="1912" inkscape:window-y="-8" inkscape:window-maximized="1" - inkscape:current-layer="svg4" /> - + inkscape:current-layer="svg4" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + diff --git a/client/public/themes/olympus/images/buttons/intensity/2.svg b/client/public/themes/olympus/images/buttons/intensity/2.svg index 5c884188..55286ebb 100644 --- a/client/public/themes/olympus/images/buttons/intensity/2.svg +++ b/client/public/themes/olympus/images/buttons/intensity/2.svg @@ -1,13 +1,13 @@ - + inkscape:current-layer="svg4" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + + diff --git a/client/public/themes/olympus/images/buttons/intensity/3.svg b/client/public/themes/olympus/images/buttons/intensity/3.svg index f07b2db6..167f17fe 100644 --- a/client/public/themes/olympus/images/buttons/intensity/3.svg +++ b/client/public/themes/olympus/images/buttons/intensity/3.svg @@ -1,13 +1,13 @@ - + inkscape:current-layer="svg4" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + + + diff --git a/client/public/themes/olympus/images/buttons/scatter/1.svg b/client/public/themes/olympus/images/buttons/scatter/1.svg index 0846e4e6..cbd96e07 100644 --- a/client/public/themes/olympus/images/buttons/scatter/1.svg +++ b/client/public/themes/olympus/images/buttons/scatter/1.svg @@ -6,8 +6,8 @@ fill="none" version="1.1" id="svg4" - sodipodi:docname="designated.svg" - inkscape:version="1.1 (c68e22c387, 2021-05-23)" + sodipodi:docname="1.svg" + inkscape:version="1.2.2 (732a01da63, 2022-12-09)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -28,17 +28,27 @@ fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" - inkscape:zoom="5.9428571" - inkscape:cx="-29.026442" - inkscape:cy="16.237981" - inkscape:window-width="1920" - inkscape:window-height="1017" - inkscape:window-x="-8" + inkscape:zoom="23.771428" + inkscape:cx="2.6712741" + inkscape:cy="12.283654" + inkscape:window-width="2560" + inkscape:window-height="1377" + inkscape:window-x="1912" inkscape:window-y="-8" inkscape:window-maximized="1" - inkscape:current-layer="svg4" /> - + inkscape:current-layer="svg4" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + diff --git a/client/public/themes/olympus/images/buttons/scatter/2.svg b/client/public/themes/olympus/images/buttons/scatter/2.svg index 5c884188..e9c1e883 100644 --- a/client/public/themes/olympus/images/buttons/scatter/2.svg +++ b/client/public/themes/olympus/images/buttons/scatter/2.svg @@ -1,13 +1,13 @@ - + inkscape:current-layer="svg4" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + diff --git a/client/public/themes/olympus/images/buttons/scatter/3.svg b/client/public/themes/olympus/images/buttons/scatter/3.svg index f07b2db6..ac0086e1 100644 --- a/client/public/themes/olympus/images/buttons/scatter/3.svg +++ b/client/public/themes/olympus/images/buttons/scatter/3.svg @@ -1,13 +1,13 @@ - + inkscape:current-layer="svg4" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + From b1ad2f409e0d5ed985edd5a2fa27442edba32e40 Mon Sep 17 00:00:00 2001 From: PeekabooSteam Date: Fri, 3 Nov 2023 22:36:35 +0000 Subject: [PATCH 5/9] Controlling panels and spawn menu from context --- client/@types/olympus/index.d.ts | 58 ++++++++++++++++++++++- client/src/context/context.ts | 24 +++++++++- client/src/contextmenus/mapcontextmenu.ts | 3 ++ client/src/panels/unitcontrolpanel.ts | 4 ++ client/src/panels/unitinfopanel.ts | 9 ++++ 5 files changed, 94 insertions(+), 4 deletions(-) diff --git a/client/@types/olympus/index.d.ts b/client/@types/olympus/index.d.ts index faa3f853..0b4d41c3 100644 --- a/client/@types/olympus/index.d.ts +++ b/client/@types/olympus/index.d.ts @@ -253,6 +253,8 @@ declare module "constants/constants" { export const MGRS_PRECISION_100M = 4; export const MGRS_PRECISION_10M = 5; export const MGRS_PRECISION_1M = 6; + export const DELETE_CYCLE_TIME = 0.05; + export const DELETE_SLOW_THRESHOLD = 50; } declare module "map/markers/custommarker" { import { Map, Marker } from "leaflet"; @@ -303,7 +305,7 @@ declare module "controls/dropdown" { #private; constructor(ID: string | null, callback: CallableFunction, options?: string[] | null, defaultText?: string); getContainer(): HTMLElement; - setOptions(optionsList: string[], sortAlphabetically?: boolean): void; + setOptions(optionsList: string[], sort?: "" | "string" | "number"): void; setOptionsElements(optionsElements: HTMLElement[]): void; getOptionElements(): HTMLCollection; addOptionElement(optionElement: HTMLElement): void; @@ -604,6 +606,7 @@ declare module "interfaces" { export interface ShortcutOptions { altKey?: boolean; callback: CallableFunction; + context?: string; ctrlKey?: boolean; name?: string; shiftKey?: boolean; @@ -786,9 +789,11 @@ declare module "controls/unitspawnmenu" { import { UnitSpawnOptions } from "interfaces"; export class UnitSpawnMenu { #private; - spawnOptions: UnitSpawnOptions; + protected showRangeCircles: boolean; + protected spawnOptions: UnitSpawnOptions; constructor(ID: string, unitDatabase: UnitDatabase, orderByRole: boolean); getContainer(): HTMLElement; + getVisible(): boolean; reset(): void; setCountries(): void; refreshOptions(): void; @@ -824,6 +829,7 @@ declare module "controls/unitspawnmenu" { deployUnits(spawnOptions: UnitSpawnOptions, unitsCount: number): void; } export class GroundUnitSpawnMenu extends UnitSpawnMenu { + protected showRangeCircles: boolean; /** * * @param ID - the ID of the HTML element which will contain the context menu @@ -1331,6 +1337,20 @@ declare module "contextmenus/airbasespawnmenu" { setAirbase(airbase: Airbase): void; } } +declare module "context/context" { + export interface ContextInterface { + useSpawnMenu?: boolean; + useUnitControlPanel?: boolean; + useUnitInfoPanel?: boolean; + } + export class Context { + #private; + constructor(config: ContextInterface); + getUseSpawnMenu(): boolean; + getUseUnitControlPanel(): boolean; + getUseUnitInfoPanel(): boolean; + } +} declare module "other/manager" { export class Manager { #private; @@ -1569,6 +1589,7 @@ declare module "panels/unitinfopanel" { export class UnitInfoPanel extends Panel { #private; constructor(ID: string); + show(): void; } } declare module "plugin/pluginmanager" { @@ -1647,6 +1668,14 @@ declare module "unit/citiesDatabase" { pop: number; }[]; } +declare module "dialog/dialog" { + import { Panel } from "panels/panel"; + export class Dialog extends Panel { + constructor(element: string); + hide(): void; + show(): void; + } +} declare module "unit/unitsmanager" { import { LatLng, LatLngBounds } from "leaflet"; import { Unit } from "unit/unit"; @@ -2094,6 +2123,18 @@ declare module "panels/unitlistpanel" { toggle(): void; } } +declare module "context/contextmanager" { + import { Manager } from "other/manager"; + import { ContextInterface } from "context/context"; + export class ContextManager extends Manager { + #private; + constructor(); + add(name: string, contextConfig: ContextInterface): this; + currentContextIs(contextName: string): boolean; + getCurrentContext(): any; + setContext(contextName: string): false | undefined; + } +} declare module "olympusapp" { import { Map } from "map/map"; import { MissionManager } from "mission/missionmanager"; @@ -2103,10 +2144,15 @@ declare module "olympusapp" { import { WeaponsManager } from "weapon/weaponsmanager"; import { Manager } from "other/manager"; import { ServerManager } from "server/servermanager"; + import { ContextManager } from "context/contextmanager"; + import { Context } from "context/context"; export class OlympusApp { #private; constructor(); + getDialogManager(): Manager; getMap(): Map; + getCurrentContext(): Context; + getContextManager(): ContextManager; getServerManager(): ServerManager; getPanelsManager(): Manager; getPopupsManager(): Manager; @@ -2158,3 +2204,11 @@ declare module "index" { import { OlympusApp } from "olympusapp"; export function getApp(): OlympusApp; } +declare module "context/contextmenumanager" { + import { ContextMenu } from "contextmenus/contextmenu"; + import { Manager } from "other/manager"; + export class ContextMenuManager extends Manager { + constructor(); + add(name: string, contextMenu: ContextMenu): this; + } +} diff --git a/client/src/context/context.ts b/client/src/context/context.ts index f92f5168..4fe02f5f 100644 --- a/client/src/context/context.ts +++ b/client/src/context/context.ts @@ -1,11 +1,31 @@ export interface ContextInterface { - + useSpawnMenu?: boolean; + useUnitControlPanel?: boolean; + useUnitInfoPanel?: boolean; } export class Context { - constructor( config:ContextInterface ) { + #useSpawnMenu:boolean; + #useUnitControlPanel:boolean; + #useUnitInfoPanel:boolean; + constructor( config:ContextInterface ) { + this.#useSpawnMenu = ( config.useSpawnMenu !== false ); + this.#useUnitControlPanel = ( config.useUnitControlPanel !== false ); + this.#useUnitInfoPanel = ( config.useUnitInfoPanel !== false ); + } + + getUseSpawnMenu() { + return this.#useSpawnMenu; + } + + getUseUnitControlPanel() { + return this.#useUnitControlPanel; + } + + getUseUnitInfoPanel() { + return this.#useUnitInfoPanel; } } \ No newline at end of file diff --git a/client/src/contextmenus/mapcontextmenu.ts b/client/src/contextmenus/mapcontextmenu.ts index f7924fcd..0f75a596 100644 --- a/client/src/contextmenus/mapcontextmenu.ts +++ b/client/src/contextmenus/mapcontextmenu.ts @@ -99,6 +99,9 @@ export class MapContextMenu extends ContextMenu { * @param latlng Leaflet latlng object of the mouse click */ show(x: number, y: number, latlng: LatLng) { + if (!getApp().getCurrentContext().getUseSpawnMenu()) + return false; + super.show(x, y, latlng); this.#aircraftSpawnMenu.setLatLng(latlng); diff --git a/client/src/panels/unitcontrolpanel.ts b/client/src/panels/unitcontrolpanel.ts index c590c652..07ef385e 100644 --- a/client/src/panels/unitcontrolpanel.ts +++ b/client/src/panels/unitcontrolpanel.ts @@ -131,6 +131,10 @@ export class UnitControlPanel extends Panel { } show() { + const context = getApp().getCurrentContext(); + if ( !context.getUseUnitControlPanel() ) + return; + super.show(); this.#speedTypeSwitch.resetExpectedValue(); this.#altitudeTypeSwitch.resetExpectedValue(); diff --git a/client/src/panels/unitinfopanel.ts b/client/src/panels/unitinfopanel.ts index 1595e946..1193ca85 100644 --- a/client/src/panels/unitinfopanel.ts +++ b/client/src/panels/unitinfopanel.ts @@ -1,3 +1,4 @@ +import { getApp } from ".."; import { Ammo } from "../interfaces"; import { aircraftDatabase } from "../unit/databases/aircraftdatabase"; import { Unit } from "../unit/unit"; @@ -92,4 +93,12 @@ export class UnitInfoPanel extends Panel { else this.hide(); } + + show() { + const context = getApp().getCurrentContext(); + if ( !context.getUseUnitInfoPanel() ) + return; + + super.show(); + } } \ No newline at end of file From 9cc6e9e790ff10c41d871a5cce7e6841d204d39c Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Sat, 4 Nov 2023 09:57:18 +0100 Subject: [PATCH 6/9] More work on miss on purpose --- client/@types/olympus/index.d.ts | 103 +++++++++--- client/plugins/databasemanager/index.js | 50 +++--- .../src/databasemanagerplugin.ts | 2 +- .../databasemanager/src/grounduniteditor.ts | 5 + .../databasemanager/src/loadouteditor.ts | 8 +- .../plugins/databasemanager/src/uniteditor.ts | 42 +++-- client/plugins/databasemanager/src/utils.ts | 68 +++++--- client/plugins/databasemanager/style.css | 11 +- .../databases/units/groundunitdatabase.json | 13 +- .../public/stylesheets/panels/unitcontrol.css | 23 +-- client/public/stylesheets/panels/unitinfo.css | 4 +- client/public/stylesheets/style/style.css | 1 + .../images/buttons/emissions/attack.svg | 1 + .../images/buttons/emissions/defend.svg | 3 +- .../olympus/images/buttons/emissions/free.svg | 3 +- .../images/buttons/emissions/silent.svg | 3 +- .../olympus/images/buttons/intensity/1.svg | 45 +++-- .../olympus/images/buttons/intensity/2.svg | 49 ++++-- .../olympus/images/buttons/intensity/3.svg | 70 ++++---- .../olympus/images/buttons/roe/designated.svg | 3 +- .../olympus/images/buttons/roe/free.svg | 3 +- .../olympus/images/buttons/roe/hold.svg | 3 +- .../olympus/images/buttons/roe/return.svg | 3 +- .../olympus/images/buttons/scatter/1.svg | 6 +- .../olympus/images/buttons/scatter/2.svg | 6 +- .../olympus/images/buttons/scatter/3.svg | 6 +- .../olympus/images/buttons/threat/evade.svg | 12 +- .../images/buttons/threat/manoeuvre.svg | 3 +- .../olympus/images/buttons/threat/none.svg | 3 +- .../olympus/images/buttons/threat/passive.svg | 15 +- .../images/icons/circle-question-regular.svg | 1 + client/public/themes/olympus/theme.css | 1 + client/src/constants/constants.ts | 12 +- client/src/interfaces.ts | 5 + client/src/unit/unit.ts | 11 +- client/views/panels/unitcontrol.ejs | 14 +- scripts/OlympusCommand.lua | 8 + src/core/include/groundunit.h | 2 + src/core/include/unit.h | 1 + src/core/src/groundunit.cpp | 156 ++++++++++++------ 40 files changed, 515 insertions(+), 263 deletions(-) create mode 100644 client/public/themes/olympus/images/icons/circle-question-regular.svg diff --git a/client/@types/olympus/index.d.ts b/client/@types/olympus/index.d.ts index faa3f853..2b8e73ad 100644 --- a/client/@types/olympus/index.d.ts +++ b/client/@types/olympus/index.d.ts @@ -107,6 +107,8 @@ declare module "constants/constants" { export const ROEDescriptions: string[]; export const reactionsToThreatDescriptions: string[]; export const emissionsCountermeasuresDescriptions: string[]; + export const shotsScatterDescriptions: string[]; + export const shotsIntensityDescriptions: string[]; export const minSpeedValues: { [key: string]: number; }; @@ -221,31 +223,35 @@ declare module "constants/constants" { hasTask = 12, position = 13, speed = 14, - heading = 15, - isActiveTanker = 16, - isActiveAWACS = 17, - onOff = 18, - followRoads = 19, - fuel = 20, - desiredSpeed = 21, - desiredSpeedType = 22, - desiredAltitude = 23, - desiredAltitudeType = 24, - leaderID = 25, - formationOffset = 26, - targetID = 27, - targetPosition = 28, - ROE = 29, - reactionToThreat = 30, - emissionsCountermeasures = 31, - TACAN = 32, - radio = 33, - generalSettings = 34, - ammo = 35, - contacts = 36, - activePath = 37, - isLeader = 38, - operateAs = 39, + horizontalVelocity = 15, + verticalVelocity = 16, + heading = 17, + isActiveTanker = 18, + isActiveAWACS = 19, + onOff = 20, + followRoads = 21, + fuel = 22, + desiredSpeed = 23, + desiredSpeedType = 24, + desiredAltitude = 25, + desiredAltitudeType = 26, + leaderID = 27, + formationOffset = 28, + targetID = 29, + targetPosition = 30, + ROE = 31, + reactionToThreat = 32, + emissionsCountermeasures = 33, + TACAN = 34, + radio = 35, + generalSettings = 36, + ammo = 37, + contacts = 38, + activePath = 39, + isLeader = 40, + operateAs = 41, + shotsScatter = 42, + shotsIntensity = 43, endOfData = 255 } export const MGRS_PRECISION_10KM = 2; @@ -253,6 +259,8 @@ declare module "constants/constants" { export const MGRS_PRECISION_100M = 4; export const MGRS_PRECISION_10M = 5; export const MGRS_PRECISION_1M = 6; + export const DELETE_CYCLE_TIME = 0.05; + export const DELETE_SLOW_THRESHOLD = 50; } declare module "map/markers/custommarker" { import { Map, Marker } from "leaflet"; @@ -303,7 +311,7 @@ declare module "controls/dropdown" { #private; constructor(ID: string | null, callback: CallableFunction, options?: string[] | null, defaultText?: string); getContainer(): HTMLElement; - setOptions(optionsList: string[], sortAlphabetically?: boolean): void; + setOptions(optionsList: string[], sort?: "" | "string" | "number"): void; setOptionsElements(optionsElements: HTMLElement[]): void; getOptionElements(): HTMLCollection; addOptionElement(optionElement: HTMLElement): void; @@ -498,6 +506,8 @@ declare module "interfaces" { hasTask: boolean; position: LatLng; speed: number; + horizontalVelocity: number; + verticalVelocity: number; heading: number; isActiveTanker: boolean; isActiveAWACS: boolean; @@ -523,6 +533,8 @@ declare module "interfaces" { activePath: LatLng[]; isLeader: boolean; operateAs: string; + shotsScatter: number; + shotsIntensity: number; } export interface LoadoutItemBlueprint { name: string; @@ -558,12 +570,17 @@ declare module "interfaces" { muzzleVelocity?: number; aimTime?: number; shotsToFire?: number; + shotsBaseInterval?: number; + shotsBaseScatter?: number; description?: string; abilities?: string; acquisitionRange?: number; engagementRange?: number; + targetingRange?: number; canTargetPoint?: boolean; canRearm?: boolean; + canAAA?: boolean; + indirectFire?: boolean; } export interface UnitSpawnOptions { roleType: string; @@ -786,9 +803,11 @@ declare module "controls/unitspawnmenu" { import { UnitSpawnOptions } from "interfaces"; export class UnitSpawnMenu { #private; - spawnOptions: UnitSpawnOptions; + protected showRangeCircles: boolean; + protected spawnOptions: UnitSpawnOptions; constructor(ID: string, unitDatabase: UnitDatabase, orderByRole: boolean); getContainer(): HTMLElement; + getVisible(): boolean; reset(): void; setCountries(): void; refreshOptions(): void; @@ -824,6 +843,7 @@ declare module "controls/unitspawnmenu" { deployUnits(spawnOptions: UnitSpawnOptions, unitsCount: number): void; } export class GroundUnitSpawnMenu extends UnitSpawnMenu { + protected showRangeCircles: boolean; /** * * @param ID - the ID of the HTML element which will contain the context menu @@ -1036,6 +1056,8 @@ declare module "unit/unit" { getHasTask(): boolean; getPosition(): LatLng; getSpeed(): number; + getHorizontalVelocity(): number; + getVerticalVelocity(): number; getHeading(): number; getIsActiveTanker(): boolean; getIsActiveAWACS(): boolean; @@ -1061,6 +1083,8 @@ declare module "unit/unit" { getActivePath(): LatLng[]; getIsLeader(): boolean; getOperateAs(): string; + getShotsScatter(): number; + getShotsIntensity(): number; static getConstructor(type: string): typeof GroundUnit | undefined; constructor(ID: number); getCategory(): string; @@ -1097,6 +1121,8 @@ declare module "unit/unit" { isInViewport(): boolean; canTargetPoint(): boolean; canRearm(): boolean; + canAAA(): boolean; + indirectFire(): boolean; isTanker(): boolean; isAWACS(): boolean; /********************** Unit commands *************************/ @@ -1132,6 +1158,8 @@ declare module "unit/unit" { scenicAAA(): void; missOnPurpose(): void; landAtPoint(latlng: LatLng): void; + setShotsScatter(shotsScatter: number): void; + setShotsIntensity(shotsIntensity: number): void; /***********************************************/ getActions(): { [key: string]: { @@ -1647,6 +1675,14 @@ declare module "unit/citiesDatabase" { pop: number; }[]; } +declare module "dialog/dialog" { + import { Panel } from "panels/panel"; + export class Dialog extends Panel { + constructor(element: string); + hide(): void; + show(): void; + } +} declare module "unit/unitsmanager" { import { LatLng, LatLngBounds } from "leaflet"; import { Unit } from "unit/unit"; @@ -1876,6 +1912,16 @@ declare module "unit/unitsmanager" { * @param latlng Point where to land */ selectedUnitsLandAtPoint(latlng: LatLng): void; + /** Set a specific shots scatter to all the selected units + * + * @param shotsScatter Value to set + */ + selectedUnitsSetShotsScatter(shotsScatter: number): void; + /** Set a specific shots intensity to all the selected units + * + * @param shotsScatter Value to set + */ + selectedUnitsSetShotsIntensity(shotsIntensity: number): void; /*********************** Control operations on selected units ************************/ /** See getUnitsCategories for more info * @@ -2066,6 +2112,8 @@ declare module "server/servermanager" { scenicAAA(ID: number, coalition: string, callback?: CallableFunction): void; missOnPurpose(ID: number, coalition: string, callback?: CallableFunction): void; landAtPoint(ID: number, latlng: LatLng, callback?: CallableFunction): void; + setShotsScatter(ID: number, shotsScatter: number, callback?: CallableFunction): void; + setShotsIntensity(ID: number, shotsIntensity: number, callback?: CallableFunction): void; setAdvacedOptions(ID: number, isActiveTanker: boolean, isActiveAWACS: boolean, TACAN: TACAN, radio: Radio, generalSettings: GeneralSettings, callback?: CallableFunction): void; setCommandModeOptions(restrictSpawns: boolean, restrictToCoalition: boolean, spawnPoints: { blue: number; @@ -2106,6 +2154,7 @@ declare module "olympusapp" { export class OlympusApp { #private; constructor(); + getDialogManager(): Manager; getMap(): Map; getServerManager(): ServerManager; getPanelsManager(): Manager; diff --git a/client/plugins/databasemanager/index.js b/client/plugins/databasemanager/index.js index 82738524..432c8142 100644 --- a/client/plugins/databasemanager/index.js +++ b/client/plugins/databasemanager/index.js @@ -508,7 +508,7 @@ class GroundUnitEditor extends uniteditor_1.UnitEditor { * @param blueprint The blueprint to edit */ setBlueprint(blueprint) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s; __classPrivateFieldSet(this, _GroundUnitEditor_blueprint, blueprint, "f"); if (__classPrivateFieldGet(this, _GroundUnitEditor_blueprint, "f") !== null) { this.contentDiv2.replaceChildren(); @@ -525,14 +525,19 @@ class GroundUnitEditor extends uniteditor_1.UnitEditor { (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 [m]", (_c = String(blueprint.acquisitionRange)) !== null && _c !== void 0 ? _c : "", "number", (value) => { blueprint.acquisitionRange = parseFloat(value); }); (0, utils_1.addStringInput)(this.contentDiv2, "Engagement range [m]", (_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)); }); - (0, utils_1.addCheckboxInput)(this.contentDiv2, "Can target point", (_j = blueprint.canTargetPoint) !== null && _j !== void 0 ? _j : false, (value) => { blueprint.canTargetPoint = value; }); - (0, utils_1.addCheckboxInput)(this.contentDiv2, "Can rearm", (_k = blueprint.canRearm) !== null && _k !== void 0 ? _k : false, (value) => { blueprint.canRearm = value; }); - (0, utils_1.addStringInput)(this.contentDiv2, "Description", (_l = blueprint.description) !== null && _l !== void 0 ? _l : "", "text", (value) => { blueprint.description = value; }); - (0, utils_1.addStringInput)(this.contentDiv2, "Abilities", (_m = blueprint.abilities) !== null && _m !== void 0 ? _m : "", "text", (value) => { blueprint.abilities = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Targeting range [m]", (_e = String(blueprint.targetingRange)) !== null && _e !== void 0 ? _e : "", "number", (value) => { blueprint.targetingRange = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Barrel height [m]", (_f = String(blueprint.barrelHeight)) !== null && _f !== void 0 ? _f : "", "number", (value) => { blueprint.barrelHeight = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Muzzle velocity [m/s]", (_g = String(blueprint.muzzleVelocity)) !== null && _g !== void 0 ? _g : "", "number", (value) => { blueprint.muzzleVelocity = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Aim time [s]", (_h = String(blueprint.aimTime)) !== null && _h !== void 0 ? _h : "", "number", (value) => { blueprint.aimTime = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Burst quantity", (_j = String(blueprint.shotsToFire)) !== null && _j !== void 0 ? _j : "", "number", (value) => { blueprint.shotsToFire = Math.round(parseFloat(value)); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Burst base interval [s]", (_k = String(blueprint.shotsBaseInterval)) !== null && _k !== void 0 ? _k : "", "number", (value) => { blueprint.shotsBaseInterval = Math.round(parseFloat(value)); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Base scatter [°]", (_l = String(blueprint.shotsBaseScatter)) !== null && _l !== void 0 ? _l : "", "number", (value) => { blueprint.shotsBaseScatter = Math.round(parseFloat(value)); }); + (0, utils_1.addCheckboxInput)(this.contentDiv2, "Can target point", (_m = blueprint.canTargetPoint) !== null && _m !== void 0 ? _m : false, (value) => { blueprint.canTargetPoint = value; }); + (0, utils_1.addCheckboxInput)(this.contentDiv2, "Can rearm", (_o = blueprint.canRearm) !== null && _o !== void 0 ? _o : false, (value) => { blueprint.canRearm = value; }); + (0, utils_1.addCheckboxInput)(this.contentDiv2, "Can operate as AAA", (_p = blueprint.canAAA) !== null && _p !== void 0 ? _p : false, (value) => { blueprint.canAAA = value; }); + (0, utils_1.addCheckboxInput)(this.contentDiv2, "Indirect fire (e.g. mortar)", (_q = blueprint.indirectFire) !== null && _q !== void 0 ? _q : false, (value) => { blueprint.indirectFire = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Description", (_r = blueprint.description) !== null && _r !== void 0 ? _r : "", "text", (value) => { blueprint.description = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Abilities", (_s = blueprint.abilities) !== null && _s !== void 0 ? _s : "", "text", (value) => { blueprint.abilities = value; }); } } /** Add a new empty blueprint @@ -613,10 +618,10 @@ class LoadoutEditor { 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.addStringInput)(__classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f"), "Roles", (0, utils_1.arrayToString)(laodout.roles), "text", (value) => { laodout.roles = (0, utils_1.stringToArray)(value); }); + var loadout = __classPrivateFieldGet(this, _LoadoutEditor_loadout, "f"); + (0, utils_1.addStringInput)(__classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f"), "Name", loadout.name, "text", (value) => { loadout.name = value; __classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f").dispatchEvent(new Event("refresh")); }); + (0, utils_1.addStringInput)(__classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f"), "Code", loadout.code, "text", (value) => { loadout.code = value; }); + (0, utils_1.addStringInput)(__classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f"), "Roles", (0, utils_1.arrayToString)(loadout.roles), "text", (value) => { loadout.roles = (0, utils_1.stringToArray)(value); }); (0, utils_1.addLoadoutItemsEditor)(__classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f"), __classPrivateFieldGet(this, _LoadoutEditor_loadout, "f")); } } @@ -1034,25 +1039,12 @@ exports.addLoadoutsScroll = addLoadoutsScroll; * @returns The string */ function arrayToString(array) { - var value = "["; - var firstRole = true; - array.forEach((role) => { - value += firstRole ? "" : ", "; - firstRole = false; - value += role; - }); - value += "]"; - return value; + return "[" + array.join(", ") + "]"; } exports.arrayToString = arrayToString; function stringToArray(input) { - input = input.replace("[", "").replace("]", ""); - var values = input.split(","); - var result = []; - values.forEach((value) => { - result.push(value.trim()); - }); - return result; + var _a; + return (_a = input.match(/(\w)+/g)) !== null && _a !== void 0 ? _a : []; } exports.stringToArray = stringToArray; diff --git a/client/plugins/databasemanager/src/databasemanagerplugin.ts b/client/plugins/databasemanager/src/databasemanagerplugin.ts index a842acb2..690beba5 100644 --- a/client/plugins/databasemanager/src/databasemanagerplugin.ts +++ b/client/plugins/databasemanager/src/databasemanagerplugin.ts @@ -86,7 +86,7 @@ export class DatabaseManagerPlugin implements OlympusPlugin { /* Create the container for the database editor elements and the elements themselves */ this.#mainContentContainer = document.createElement("div"); this.#mainContentContainer.classList.add("dm-container"); - this.#element.appendChild(this.#mainContentContainer) + this.#element.appendChild(this.#mainContentContainer); this.#contentDiv1 = document.createElement("div"); this.#contentDiv1.classList.add("dm-content-container"); diff --git a/client/plugins/databasemanager/src/grounduniteditor.ts b/client/plugins/databasemanager/src/grounduniteditor.ts index f5e49d9f..f8172a75 100644 --- a/client/plugins/databasemanager/src/grounduniteditor.ts +++ b/client/plugins/databasemanager/src/grounduniteditor.ts @@ -36,12 +36,17 @@ export class GroundUnitEditor extends UnitEditor { addStringInput(this.contentDiv2, "Cost", String(blueprint.cost)?? "", "number", (value: string) => {blueprint.cost = 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, "Targeting range [m]", String(blueprint.targetingRange)?? "", "number", (value: string) => {blueprint.targetingRange = 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); }); addStringInput(this.contentDiv2, "Burst quantity", String(blueprint.shotsToFire)?? "", "number", (value: string) => {blueprint.shotsToFire = Math.round(parseFloat(value)); }); + addStringInput(this.contentDiv2, "Burst base interval [s]", String(blueprint.shotsBaseInterval)?? "", "number", (value: string) => {blueprint.shotsBaseInterval = Math.round(parseFloat(value)); }); + addStringInput(this.contentDiv2, "Base scatter [°]", String(blueprint.shotsBaseScatter)?? "", "number", (value: string) => {blueprint.shotsBaseScatter = Math.round(parseFloat(value)); }); addCheckboxInput(this.contentDiv2, "Can target point", blueprint.canTargetPoint ?? false, (value: boolean) => {blueprint.canTargetPoint = value;}) addCheckboxInput(this.contentDiv2, "Can rearm", blueprint.canRearm ?? false, (value: boolean) => {blueprint.canRearm = value;}) + addCheckboxInput(this.contentDiv2, "Can operate as AAA", blueprint.canAAA ?? false, (value: boolean) => {blueprint.canAAA = value;}) + addCheckboxInput(this.contentDiv2, "Indirect fire (e.g. mortar)", blueprint.indirectFire ?? false, (value: boolean) => {blueprint.indirectFire = value;}) addStringInput(this.contentDiv2, "Description", blueprint.description ?? "", "text", (value: string) => {blueprint.description = value; }); addStringInput(this.contentDiv2, "Abilities", blueprint.abilities ?? "", "text", (value: string) => {blueprint.abilities = value; }); } diff --git a/client/plugins/databasemanager/src/loadouteditor.ts b/client/plugins/databasemanager/src/loadouteditor.ts index 73fe32e1..5f07c605 100644 --- a/client/plugins/databasemanager/src/loadouteditor.ts +++ b/client/plugins/databasemanager/src/loadouteditor.ts @@ -37,10 +37,10 @@ export class LoadoutEditor { this.#contentDiv.appendChild(title); if (this.#loadout) { - var laodout = this.#loadout; - addStringInput(this.#contentDiv, "Name", laodout.name, "text", (value: string) => {laodout.name = value; this.#contentDiv.dispatchEvent(new Event("refresh"));}); - addStringInput(this.#contentDiv, "Code", laodout.code, "text", (value: string) => {laodout.code = value; }); - addStringInput(this.#contentDiv, "Roles", arrayToString(laodout.roles), "text", (value: string) => {laodout.roles = stringToArray(value);}); + var loadout = this.#loadout; + addStringInput(this.#contentDiv, "Name", loadout.name, "text", (value: string) => {loadout.name = value; this.#contentDiv.dispatchEvent(new Event("refresh"));}); + addStringInput(this.#contentDiv, "Code", loadout.code, "text", (value: string) => {loadout.code = value; }); + addStringInput(this.#contentDiv, "Roles", arrayToString(loadout.roles), "text", (value: string) => {loadout.roles = stringToArray(value);}); addLoadoutItemsEditor(this.#contentDiv, this.#loadout); } } diff --git a/client/plugins/databasemanager/src/uniteditor.ts b/client/plugins/databasemanager/src/uniteditor.ts index b031a2c4..00c59fc9 100644 --- a/client/plugins/databasemanager/src/uniteditor.ts +++ b/client/plugins/databasemanager/src/uniteditor.ts @@ -49,9 +49,9 @@ export abstract class UnitEditor { } /** Show the editor - * + * @param filter String filter */ - show() { + show(filter: string = "") { this.visible = true; this.contentDiv1.replaceChildren(); this.contentDiv2.replaceChildren(); @@ -62,20 +62,20 @@ export abstract class UnitEditor { var title = document.createElement("label"); title.innerText = "Units list"; this.contentDiv1.appendChild(title); - - addBlueprintsScroll(this.contentDiv1, this.database, (key: string) => { - if (this.database != null) - this.setBlueprint(this.database.blueprints[key]) - }) - addNewElementInput(this.contentDiv1, (ev: MouseEvent, input: HTMLInputElement) => { - if (input.value != "") - this.addBlueprint((input).value); - }); + var filterInput = document.createElement("input"); + filterInput.value = filter; + this.contentDiv1.appendChild(filterInput); + + filterInput.onchange = (e: Event) => { + this.show((e.target as HTMLInputElement).value); + } + + this.addBlueprints(filter); } } - /** Hid the editor + /** Hide the editor * */ hide() { @@ -93,6 +93,24 @@ export abstract class UnitEditor { return this.database; } + /** + * + * @param filter String filter + */ + addBlueprints(filter: string = "") { + if (this.database) { + addBlueprintsScroll(this.contentDiv1, this.database, filter, (key: string) => { + if (this.database != null) + this.setBlueprint(this.database.blueprints[key]) + }); + + addNewElementInput(this.contentDiv1, (ev: MouseEvent, input: HTMLInputElement) => { + if (input.value != "") + this.addBlueprint((input).value); + }); + } + } + /* Abstract methods which will depend on the specific type of units */ abstract setBlueprint(blueprint: UnitBlueprint): void; abstract addBlueprint(key: string): void; diff --git a/client/plugins/databasemanager/src/utils.ts b/client/plugins/databasemanager/src/utils.ts index 19cec041..004a8b84 100644 --- a/client/plugins/databasemanager/src/utils.ts +++ b/client/plugins/databasemanager/src/utils.ts @@ -174,40 +174,60 @@ export function addNewElementInput(div: HTMLElement, callback: CallableFunction) * * @param div The HTMLElement that will contain the list * @param database The database that will be used to fill the list of blueprints + * @param filter A string filter that will be executed to filter the blueprints to add * @param callback Callback called when the user clicks on one of the elements */ -export function addBlueprintsScroll(div: HTMLElement, database: {blueprints: {[key: string]: UnitBlueprint}}, callback: CallableFunction) { +export function addBlueprintsScroll(div: HTMLElement, database: {blueprints: {[key: string]: UnitBlueprint}}, filter: string, callback: CallableFunction) { var scrollDiv = document.createElement("div"); scrollDiv.classList.add("dm-scroll-container"); if (database !== null) { var blueprints: {[key: string]: UnitBlueprint} = database.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); - - var text = document.createElement("label"); - text.textContent = key; - text.onclick = () => callback(key); - rowDiv.appendChild(text); - - let checkbox = document.createElement("input"); - checkbox.type = "checkbox"; - checkbox.checked = blueprints[key].enabled; - checkbox.onclick = () => { - console.log(checkbox.checked); - blueprints[key].enabled = checkbox.checked; + var addKey = true; + if (filter !== "") { + try { + var blueprint = blueprints[key]; + addKey = eval(filter); + } catch { + console.error("An error has occurred evaluating the blueprint filter") + } } - rowDiv.appendChild(checkbox); - /* 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")); + if (addKey) { + var rowDiv = document.createElement("div"); + scrollDiv.appendChild(rowDiv); + + let text = document.createElement("label"); + text.textContent = key; + text.onclick = () => { + callback(key); + const collection = document.getElementsByClassName("blueprint-selected"); + for (let i = 0; i < collection.length; i++) { + collection[i].classList.remove("blueprint-selected"); + } + text.classList.add("blueprint-selected"); + } + rowDiv.appendChild(text); + + let checkbox = document.createElement("input"); + checkbox.type = "checkbox"; + checkbox.checked = blueprints[key].enabled; + checkbox.onclick = () => { + console.log(checkbox.checked); + blueprints[key].enabled = checkbox.checked; + } + rowDiv.appendChild(checkbox); + + /* 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); } - rowDiv.appendChild(button); } } div.appendChild(scrollDiv); @@ -269,5 +289,5 @@ export function arrayToString(array: string[]) { export function stringToArray(input: string) { - return input.match( /(\w)+/g ); + return input.match( /(\w)+/g ) ?? []; } \ No newline at end of file diff --git a/client/plugins/databasemanager/style.css b/client/plugins/databasemanager/style.css index 9ba77136..094ddb22 100644 --- a/client/plugins/databasemanager/style.css +++ b/client/plugins/databasemanager/style.css @@ -115,6 +115,10 @@ font-weight: bold; } +#database-manager-panel input { + font-weight: bold; +} + .dm-scroll-container>div:nth-child(even) { background-color: gainsboro; } @@ -131,11 +135,16 @@ } .dm-scroll-container>div *:nth-child(1):hover { - background-color: var(--secondary-blue-text); + background-color: var(--accent-dark-blue); color: white; cursor: pointer; } +.blueprint-selected { + background-color: var(--accent-light-blue) !important; + color: white; +} + .dm-scroll-container>div { display: flex; align-items: center; diff --git a/client/public/databases/units/groundunitdatabase.json b/client/public/databases/units/groundunitdatabase.json index cca675d9..cf7ca6af 100644 --- a/client/public/databases/units/groundunitdatabase.json +++ b/client/public/databases/units/groundunitdatabase.json @@ -1029,13 +1029,19 @@ } }, "barrelHeight": 2.35, - "muzzleVelocity": 1440, + "muzzleVelocity": 1000, "acquisitionRange": 15000, "engagementRange": 4000, "description": "Tracked self-propelled anti-aircraft 35mm guns", "abilities": "", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "canAAA": true, + "aimTime": 5, + "shotsToFire": 2, + "shotsBaseInterval": 5, + "shotsBaseScatter": 2, + "targetingRange": 800 }, "Grad-URAL": { "name": "Grad-URAL", @@ -2282,7 +2288,8 @@ "description": "Single infantry carrying AK-74", "abilities": "", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "canAAA": true }, "KAMAZ Truck": { "name": "KAMAZ Truck", diff --git a/client/public/stylesheets/panels/unitcontrol.css b/client/public/stylesheets/panels/unitcontrol.css index 770109f6..99509503 100644 --- a/client/public/stylesheets/panels/unitcontrol.css +++ b/client/public/stylesheets/panels/unitcontrol.css @@ -166,20 +166,23 @@ body.feature-forceShowUnitControlPanel #unit-control-panel { #unit-control-panel .switch-control { align-items: center; - display: grid; - grid-template-columns: 1.35fr 0.65fr; -} - -#unit-control-panel .switch-control>*:nth-child(2) { - justify-self: end; -} - -#unit-control-panel .switch-control>*:nth-child(3) { - color: var(--secondary-semitransparent-white); + display: flex; + width: 100%; + justify-content: space-between; } #unit-control-panel .switch-control h4 { margin: 0px; + display: flex; + align-items: center; +} + +#unit-control-panel .switch-control h4 img { + height: 15px; + margin-left: 10px; + cursor: pointer; + filter: invert(100%); + opacity: 80%; } #unit-control-panel .switch-control .ol-switch { diff --git a/client/public/stylesheets/panels/unitinfo.css b/client/public/stylesheets/panels/unitinfo.css index 50c90faf..b970dfa4 100644 --- a/client/public/stylesheets/panels/unitinfo.css +++ b/client/public/stylesheets/panels/unitinfo.css @@ -91,9 +91,9 @@ #loadout-silhouette { filter: invert(100%); - height: 100px; + height: 75px; margin-right: 25px; - width: 100px; + width: 75px; } #loadout-items { diff --git a/client/public/stylesheets/style/style.css b/client/public/stylesheets/style/style.css index 0a49d7a1..e78dfc8a 100644 --- a/client/public/stylesheets/style/style.css +++ b/client/public/stylesheets/style/style.css @@ -664,6 +664,7 @@ nav.ol-panel> :last-child { #unit-control-panel .ol-option-button button.selected svg * { fill: var(--background-steel); + stroke: var(--background-steel); } #rapid-controls { diff --git a/client/public/themes/olympus/images/buttons/emissions/attack.svg b/client/public/themes/olympus/images/buttons/emissions/attack.svg index 0846e4e6..0e1bd78d 100644 --- a/client/public/themes/olympus/images/buttons/emissions/attack.svg +++ b/client/public/themes/olympus/images/buttons/emissions/attack.svg @@ -38,6 +38,7 @@ inkscape:window-maximized="1" inkscape:current-layer="svg4" /> diff --git a/client/public/themes/olympus/images/buttons/emissions/defend.svg b/client/public/themes/olympus/images/buttons/emissions/defend.svg index 5c884188..6d13f0de 100644 --- a/client/public/themes/olympus/images/buttons/emissions/defend.svg +++ b/client/public/themes/olympus/images/buttons/emissions/defend.svg @@ -39,5 +39,6 @@ + id="path2" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/buttons/emissions/free.svg b/client/public/themes/olympus/images/buttons/emissions/free.svg index f07b2db6..19fd8b25 100644 --- a/client/public/themes/olympus/images/buttons/emissions/free.svg +++ b/client/public/themes/olympus/images/buttons/emissions/free.svg @@ -39,5 +39,6 @@ + id="path2" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/buttons/emissions/silent.svg b/client/public/themes/olympus/images/buttons/emissions/silent.svg index f735bc21..9ecb6737 100644 --- a/client/public/themes/olympus/images/buttons/emissions/silent.svg +++ b/client/public/themes/olympus/images/buttons/emissions/silent.svg @@ -39,5 +39,6 @@ + id="path2" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/buttons/intensity/1.svg b/client/public/themes/olympus/images/buttons/intensity/1.svg index 2321bf1e..428226dc 100644 --- a/client/public/themes/olympus/images/buttons/intensity/1.svg +++ b/client/public/themes/olympus/images/buttons/intensity/1.svg @@ -7,7 +7,7 @@ version="1.1" id="svg4" sodipodi:docname="1.svg" - inkscape:version="1.2.2 (732a01da63, 2022-12-09)" + inkscape:version="1.1 (c68e22c387, 2021-05-23)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -28,19 +28,42 @@ fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" - inkscape:zoom="23.771428" - inkscape:cx="2.6712741" - inkscape:cy="12.283654" - inkscape:window-width="2560" - inkscape:window-height="1377" - inkscape:window-x="1912" + inkscape:zoom="16.808938" + inkscape:cx="4.2536893" + inkscape:cy="-1.2195892" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="svg4" inkscape:showpageshadow="2" inkscape:deskcolor="#d1d1d1" /> - + + + diff --git a/client/public/themes/olympus/images/buttons/intensity/2.svg b/client/public/themes/olympus/images/buttons/intensity/2.svg index 55286ebb..63b73775 100644 --- a/client/public/themes/olympus/images/buttons/intensity/2.svg +++ b/client/public/themes/olympus/images/buttons/intensity/2.svg @@ -7,7 +7,7 @@ version="1.1" id="svg4" sodipodi:docname="2.svg" - inkscape:version="1.2.2 (732a01da63, 2022-12-09)" + inkscape:version="1.1 (c68e22c387, 2021-05-23)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -28,23 +28,42 @@ fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" - inkscape:zoom="47.542857" - inkscape:cx="7.0147236" - inkscape:cy="7.9717549" - inkscape:window-width="2560" - inkscape:window-height="1377" - inkscape:window-x="1912" + inkscape:zoom="16.808938" + inkscape:cx="4.2536893" + inkscape:cy="-1.2195892" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="svg4" inkscape:showpageshadow="2" inkscape:deskcolor="#d1d1d1" /> - - + + + diff --git a/client/public/themes/olympus/images/buttons/intensity/3.svg b/client/public/themes/olympus/images/buttons/intensity/3.svg index 167f17fe..8241e7d9 100644 --- a/client/public/themes/olympus/images/buttons/intensity/3.svg +++ b/client/public/themes/olympus/images/buttons/intensity/3.svg @@ -2,20 +2,20 @@ + id="defs12" /> - - - + inkscape:current-layer="svg8" /> + + + diff --git a/client/public/themes/olympus/images/buttons/roe/designated.svg b/client/public/themes/olympus/images/buttons/roe/designated.svg index 0846e4e6..23107028 100644 --- a/client/public/themes/olympus/images/buttons/roe/designated.svg +++ b/client/public/themes/olympus/images/buttons/roe/designated.svg @@ -40,5 +40,6 @@ + id="path2" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/buttons/roe/free.svg b/client/public/themes/olympus/images/buttons/roe/free.svg index f07b2db6..19fd8b25 100644 --- a/client/public/themes/olympus/images/buttons/roe/free.svg +++ b/client/public/themes/olympus/images/buttons/roe/free.svg @@ -39,5 +39,6 @@ + id="path2" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/buttons/roe/hold.svg b/client/public/themes/olympus/images/buttons/roe/hold.svg index f735bc21..9ecb6737 100644 --- a/client/public/themes/olympus/images/buttons/roe/hold.svg +++ b/client/public/themes/olympus/images/buttons/roe/hold.svg @@ -39,5 +39,6 @@ + id="path2" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/buttons/roe/return.svg b/client/public/themes/olympus/images/buttons/roe/return.svg index 5c884188..6d13f0de 100644 --- a/client/public/themes/olympus/images/buttons/roe/return.svg +++ b/client/public/themes/olympus/images/buttons/roe/return.svg @@ -39,5 +39,6 @@ + id="path2" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/buttons/scatter/1.svg b/client/public/themes/olympus/images/buttons/scatter/1.svg index cbd96e07..3981c876 100644 --- a/client/public/themes/olympus/images/buttons/scatter/1.svg +++ b/client/public/themes/olympus/images/buttons/scatter/1.svg @@ -40,7 +40,7 @@ inkscape:showpageshadow="2" inkscape:deskcolor="#d1d1d1" /> + d="m 1.880341,3.4754242 a 11.467682,10.686775 0 0 1 11.467682,2e-7 L 7.614182,12.730443 Z" + fill="#5ca7ff" + stroke="#5ca7ff" /> diff --git a/client/public/themes/olympus/images/buttons/scatter/2.svg b/client/public/themes/olympus/images/buttons/scatter/2.svg index e9c1e883..3957af5a 100644 --- a/client/public/themes/olympus/images/buttons/scatter/2.svg +++ b/client/public/themes/olympus/images/buttons/scatter/2.svg @@ -40,7 +40,7 @@ inkscape:showpageshadow="2" inkscape:deskcolor="#d1d1d1" /> + d="m 3.6920035,2.6881593 a 11.467682,10.686775 0 0 1 7.8443565,-2e-7 L 7.614182,12.730443 Z" + fill="#5ca7ff" + stroke="#5ca7ff" /> diff --git a/client/public/themes/olympus/images/buttons/scatter/3.svg b/client/public/themes/olympus/images/buttons/scatter/3.svg index ac0086e1..446228c2 100644 --- a/client/public/themes/olympus/images/buttons/scatter/3.svg +++ b/client/public/themes/olympus/images/buttons/scatter/3.svg @@ -40,7 +40,7 @@ inkscape:showpageshadow="2" inkscape:deskcolor="#d1d1d1" /> + d="m 5.6228404,2.2060238 a 11.467682,10.686775 0 0 1 3.9826836,10e-8 L 7.614182,12.730443 Z" + fill="#5ca7ff" + stroke="#5ca7ff" /> diff --git a/client/public/themes/olympus/images/buttons/threat/evade.svg b/client/public/themes/olympus/images/buttons/threat/evade.svg index 54d7b49f..fb5dc6ba 100644 --- a/client/public/themes/olympus/images/buttons/threat/evade.svg +++ b/client/public/themes/olympus/images/buttons/threat/evade.svg @@ -39,7 +39,8 @@ + id="path2" + style="stroke: none"/> + id="path6" + style="stroke: none"/> + id="path8" + style="stroke: none"/> + id="path10" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/buttons/threat/manoeuvre.svg b/client/public/themes/olympus/images/buttons/threat/manoeuvre.svg index fcc9376b..81fc8534 100644 --- a/client/public/themes/olympus/images/buttons/threat/manoeuvre.svg +++ b/client/public/themes/olympus/images/buttons/threat/manoeuvre.svg @@ -39,7 +39,8 @@ + id="path2" + style="stroke: none"/> + id="path2" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/buttons/threat/passive.svg b/client/public/themes/olympus/images/buttons/threat/passive.svg index ac558fef..c7a9d0d0 100644 --- a/client/public/themes/olympus/images/buttons/threat/passive.svg +++ b/client/public/themes/olympus/images/buttons/threat/passive.svg @@ -39,7 +39,8 @@ + id="path2" + style="stroke: none"/> + id="path6" + style="stroke: none"/> + id="path8" + style="stroke: none"/> + id="path10" + style="stroke: none"/> + id="path12" + style="stroke: none"/> diff --git a/client/public/themes/olympus/images/icons/circle-question-regular.svg b/client/public/themes/olympus/images/icons/circle-question-regular.svg new file mode 100644 index 00000000..588be4cf --- /dev/null +++ b/client/public/themes/olympus/images/icons/circle-question-regular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/public/themes/olympus/theme.css b/client/public/themes/olympus/theme.css index df1c6244..41953812 100644 --- a/client/public/themes/olympus/theme.css +++ b/client/public/themes/olympus/theme.css @@ -23,6 +23,7 @@ --accent-amber: #ffd828; --accent-green: #8bff63; --accent-light-blue: #5ca7ff; + --accent-dark-blue: #017DC1; --transparent-accent-light-blue: rgba(92, 167, 255, .33); --accent-light-red: #F5B6B6; diff --git a/client/src/constants/constants.ts b/client/src/constants/constants.ts index 37a1f040..98fc38b4 100644 --- a/client/src/constants/constants.ts +++ b/client/src/constants/constants.ts @@ -48,15 +48,15 @@ export const emissionsCountermeasuresDescriptions: string[] = [ ]; export const shotsScatterDescriptions: string[] = [ - "Large scatter", - "Medium scatter", - "Small scatter (Radar guided units will track shots when the enemy unit is close)" + "When performing scenic shooting tasks like simulated firefights, will shoot with a large scatter", + "When performing scenic shooting tasks like simulated firefights, will shoot with a medium scatter", + "When performing scenic shooting tasks like simulated firefights, will shoot with a small scatter (Radar guided units will track shots when the enemy unit is close)" ]; export const shotsIntensityDescriptions: string[] = [ - "Low intensity", - "Medium intensity", - "High intensity" + "When performing scenic shooting tasks like simulated firefights, will shoot with a low rate of fire", + "When performing scenic shooting tasks like simulated firefights, will shoot with a medium rate of fire", + "When performing scenic shooting tasks like simulated firefights, will shoot with a high rate of fire" ]; export const minSpeedValues: { [key: string]: number } = { Aircraft: 100, Helicopter: 0, NavyUnit: 0, GroundUnit: 0 }; diff --git a/client/src/interfaces.ts b/client/src/interfaces.ts index e795091d..8ff8102b 100644 --- a/client/src/interfaces.ts +++ b/client/src/interfaces.ts @@ -214,12 +214,17 @@ export interface UnitBlueprint { muzzleVelocity?: number; aimTime?: number; shotsToFire?: number; + shotsBaseInterval?: number; + shotsBaseScatter?: number; description?: string; abilities?: string; acquisitionRange?: number; engagementRange?: number; + targetingRange?: number; canTargetPoint?: boolean; canRearm?: boolean; + canAAA?: boolean; + indirectFire?: boolean; } export interface UnitSpawnOptions { diff --git a/client/src/unit/unit.ts b/client/src/unit/unit.ts index 4e75929f..fbc89a6b 100644 --- a/client/src/unit/unit.ts +++ b/client/src/unit/unit.ts @@ -447,7 +447,6 @@ export class Unit extends CustomMarker { return this.getDatabase()?.getSpawnPointsByName(this.getName()); } - /********************** Icon *************************/ createIcon(): void { /* Set the icon */ @@ -654,6 +653,14 @@ export class Unit extends CustomMarker { return this.getDatabase()?.getByName(this.#name)?.canRearm === true; } + canAAA() { + return this.getDatabase()?.getByName(this.#name)?.canAAA === true; + } + + indirectFire() { + return this.getDatabase()?.getByName(this.#name)?.indirectFire === true; + } + isTanker() { return this.canFulfillRole("Tanker"); } @@ -1462,7 +1469,7 @@ export class GroundUnit extends Unit { options["group-ground"] = { text: "Create group", tooltip: "Create a group from the selected units", type: "and" }; } - if (["AAA", "flak"].includes(this.getType())) { + if (this.canAAA()) { options["scenic-aaa"] = { text: "Scenic AAA", tooltip: "Shoot AAA in the air without aiming at any target, when a enemy unit gets close enough. WARNING: works correctly only on neutral units, blue or red units will aim", type: "and" }; options["miss-aaa"] = { text: "Miss on purpose AAA", tooltip: "Shoot AAA towards the closest enemy unit, but don't aim precisely. WARNING: works correctly only on neutral units, blue or red units will aim", type: "and" }; } diff --git a/client/views/panels/unitcontrol.ejs b/client/views/panels/unitcontrol.ejs index 0ff44f4f..85f287ac 100644 --- a/client/views/panels/unitcontrol.ejs +++ b/client/views/panels/unitcontrol.ejs @@ -76,31 +76,27 @@
-

Enable tanker

+

Enable tanker

-
Instructs the unit to operate as AAR tanker. A/A TACAN, radio frequency and callsign set in Settings dialog.
-

Airborne Early Warning

+

Airborne Early Warning

-
Enables datalink and AI radio calls. Radio frequency and callsign set in Settings dialog.
-

Operate as

+

Operate as

-
Determines if the unit will target red or blue units when performing scenic tasks.
-

Unit active

+

Unit active

-
Toggling this disables unit AI completely. It will no longer move, react or emit radio waves.
-

Follow roads

+

Follow roads

diff --git a/scripts/OlympusCommand.lua b/scripts/OlympusCommand.lua index 87bf92d5..7be6dc31 100644 --- a/scripts/OlympusCommand.lua +++ b/scripts/OlympusCommand.lua @@ -269,6 +269,14 @@ function Olympus.buildTask(groupName, options) point = {x = point.x, y = point.z}, } } + -- Attack unit + elseif options['id'] == 'AttackUnit' and options['unitID'] then + task = { + id = 'AttackUnit', + params = { + unitId = options['unitID'], + } + } end end return task diff --git a/src/core/include/groundunit.h b/src/core/include/groundunit.h index 8ef0fb35..22a4a455 100644 --- a/src/core/include/groundunit.h +++ b/src/core/include/groundunit.h @@ -17,6 +17,8 @@ public: virtual void setOnOff(bool newOnOff, bool force = false); virtual void setFollowRoads(bool newFollowRoads, bool force = false); + void aimAtPoint(Coords aimTarget, double horizontalScatterMultiplier = 1, double verticalScatterMultiplier = 1); + protected: virtual void AIloop(); static json::value database; diff --git a/src/core/include/unit.h b/src/core/include/unit.h index a428dcbe..c85cbf44 100644 --- a/src/core/include/unit.h +++ b/src/core/include/unit.h @@ -204,6 +204,7 @@ protected: /********** Other **********/ unsigned int taskCheckCounter = 0; unsigned int internalCounter = 0; + Unit* missOnPurposeTarget = nullptr; bool hasTaskAssigned = false; double initialFuel = 0; map updateTimeMap; diff --git a/src/core/src/groundunit.cpp b/src/core/src/groundunit.cpp index 0ee297a3..2b8016dc 100644 --- a/src/core/src/groundunit.cpp +++ b/src/core/src/groundunit.cpp @@ -148,6 +148,8 @@ void GroundUnit::AIloop() break; } case State::REACH_DESTINATION: { + setTask("Reaching destination"); + string enrouteTask = ""; bool looping = false; @@ -189,37 +191,8 @@ void GroundUnit::AIloop() case State::SIMULATE_FIRE_FIGHT: { setTask("Simulating fire fight"); - if (!getHasTask() || internalCounter == 0) { - double dist; - double bearing1; - double bearing2; - Geodesic::WGS84().Inverse(position.lat, position.lng, targetPosition.lat, targetPosition.lng, dist, bearing1, bearing2); - - double r = 15; /* m */ - /* Default gun values */ - double barrelHeight = 1.0; /* m */ - double muzzleVelocity = 860; /* m/s */ - if (database.has_object_field(to_wstring(name))) { - json::value databaseEntry = database[to_wstring(name)]; - if (databaseEntry.has_number_field(L"barrelHeight") && databaseEntry.has_number_field(L"muzzleVelocity")) { - barrelHeight = databaseEntry[L"barrelHeight"].as_number().to_double(); - muzzleVelocity = databaseEntry[L"muzzleVelocity"].as_number().to_double(); - } - } - - double barrelElevation = r * (9.81 * dist / (2 * muzzleVelocity * muzzleVelocity) + (targetPosition.alt - (position.alt + barrelHeight)) / dist); /* m */ - - double lat = 0; - double lng = 0; - double randomBearing = bearing1 + (((double)(rand()) / (double)(RAND_MAX) - 0.5) * 2) * 0; // TODO put defined constant here - Geodesic::WGS84().Direct(position.lat, position.lng, randomBearing, r, lat, lng); - - std::ostringstream taskSS; - taskSS.precision(10); - taskSS << "{id = 'FireAtPoint', lat = " << lat << ", lng = " << lng << ", alt = " << position.alt + barrelElevation + barrelHeight << ", radius = 0.001}"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); - scheduler->appendCommand(command); - setHasTask(true); + if (internalCounter == 0) { + aimAtPoint(targetPosition, 3.0, 0.0); } if (internalCounter == 0) @@ -264,6 +237,17 @@ void GroundUnit::AIloop() case State::MISS_ON_PURPOSE: { setTask("Missing on purpose"); + /* Check that the unit can perform AAA duties */ + bool canAAA = false; + if (database.has_object_field(to_wstring(name))) { + json::value databaseEntry = database[to_wstring(name)]; + if (databaseEntry.has_boolean_field(L"canAAA")) + canAAA = databaseEntry[L"canAAA"].as_bool(); + } + + if (!canAAA) + setState(State::IDLE); + /* Only run this when the internal counter reaches 0 to avoid excessive computations when no nearby target */ if (internalCounter == 0 && getOperateAs() > 0) { double distance = 0; @@ -276,8 +260,9 @@ void GroundUnit::AIloop() double aimTime = 10; /* s */ unsigned int shotsToFire = 10; double shotsBaseInterval = 15; /* s */ - double shotsBaseScatter = 5; /* degs */ + double shotsBaseScatter = 2; /* degs */ double engagementRange = 10000; /* m */ + double targetingRange = 0; /* m */ if (database.has_object_field(to_wstring(name))) { json::value databaseEntry = database[to_wstring(name)]; @@ -295,38 +280,61 @@ void GroundUnit::AIloop() shotsBaseInterval = databaseEntry[L"shotsBaseInterval"].as_number().to_double(); if (databaseEntry.has_number_field(L"shotsBaseScatter")) shotsBaseScatter = databaseEntry[L"shotsBaseScatter"].as_number().to_double(); + if (databaseEntry.has_number_field(L"targetingRange")) + targetingRange = databaseEntry[L"targetingRange"].as_number().to_double(); } /* Only do if we have a valid target close enough for AAA */ - if (target != nullptr && distance < 10000 /* m */) { + if (target != nullptr && distance < 3 * engagementRange) { /* Approximate the flight time */ if (muzzleVelocity != 0) aimTime += distance / muzzleVelocity; internalCounter = (aimTime + (3 - shotsIntensity) * shotsBaseInterval + 2) / FRAMERATE_TIME_INTERVAL; - /* Compute where the target will be in aimTime seconds. */ - double aimDistance = target->getHorizontalVelocity() * aimTime; - double aimLat = 0; - double aimLng = 0; - Geodesic::WGS84().Direct(target->getPosition().lat, target->getPosition().lng, target->getHeading() * 57.29577, aimDistance, aimLat, aimLng); /* TODO make util function */ - double aimAlt = target->getPosition().alt + target->getVerticalVelocity() * aimTime; + /* If the target is in targeting range and we are in highest precision mode, target it */ + if (distance < targetingRange && shotsScatter == 3) { + /* Send the command */ + std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'AttackUnit', unitID = " << target->getID() << " }"; + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); + scheduler->appendCommand(command); + setHasTask(true); + } + /* Else, do miss on purpose */ + else { + /* Compute where the target will be in aimTime seconds. */ + double aimDistance = target->getHorizontalVelocity() * aimTime; + double aimLat = 0; + double aimLng = 0; + Geodesic::WGS84().Direct(target->getPosition().lat, target->getPosition().lng, target->getHeading() * 57.29577, aimDistance, aimLat, aimLng); /* TODO make util function */ + double aimAlt = target->getPosition().alt + target->getVerticalVelocity() * aimTime; - /* Compute a random scattering depending on the distance and the selected shots scatter */ - double scatterDistance = distance * tan(shotsBaseScatter * (3 - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; - double scatterAngle = 180 * RANDOM_MINUS_ONE_TO_ONE; - Geodesic::WGS84().Direct(aimLat, aimLng, scatterAngle, scatterDistance, aimLat, aimLng); /* TODO make util function */ - aimAlt = aimAlt + distance * tan(shotsBaseScatter * (3 - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; + /* Send the command */ + if (distance > engagementRange) { + aimAtPoint(Coords(aimLat, aimLng, aimAlt)); + log("Aiming at point!"); + } + else { + /* Compute a random scattering depending on the distance and the selected shots scatter */ + double scatterDistance = distance * tan(shotsBaseScatter * (3 - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; + double scatterAngle = 180 * RANDOM_MINUS_ONE_TO_ONE; + Geodesic::WGS84().Direct(aimLat, aimLng, scatterAngle, scatterDistance, aimLat, aimLng); /* TODO make util function */ + aimAlt = aimAlt + distance * tan(shotsBaseScatter * (3 - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; - /* Send the command */ - std::ostringstream taskSS; - taskSS.precision(10); - taskSS << "{id = 'FireAtPoint', lat = " << aimLat << ", lng = " << aimLng << ", alt = " << aimAlt << ", radius = 0.001, expendQty = " << shotsToFire << " }"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); - scheduler->appendCommand(command); - setHasTask(true); + std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'FireAtPoint', lat = " << aimLat << ", lng = " << aimLng << ", alt = " << aimAlt << ", radius = 0.001, expendQty = " << shotsToFire << " }"; + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); + scheduler->appendCommand(command); + setHasTask(true); + } - setTargetPosition(Coords(aimLat, aimLng, target->getPosition().alt)); + setTargetPosition(Coords(aimLat, aimLng, target->getPosition().alt)); + } + + missOnPurposeTarget = target; } else { if (getHasTask()) @@ -343,6 +351,8 @@ void GroundUnit::AIloop() alertnessTimeConstant = databaseEntry[L"alertnessTimeConstant"].as_number().to_double(); } internalCounter = (5 + RANDOM_ZERO_TO_ONE * alertnessTimeConstant) / FRAMERATE_TIME_INTERVAL; + missOnPurposeTarget = nullptr; + setTargetPosition(Coords(NULL)); } internalCounter--; @@ -382,3 +392,45 @@ void GroundUnit::setFollowRoads(bool newFollowRoads, bool force) resetActiveDestination(); /* Reset active destination to apply option*/ } } + +void GroundUnit::aimAtPoint(Coords aimTarget, double horizontalScatterMultiplier, double verticalScatterMultiplier) { + double dist; + double bearing1; + double bearing2; + Geodesic::WGS84().Inverse(position.lat, position.lng, aimTarget.lat, aimTarget.lng, dist, bearing1, bearing2); + + double r = 15; /* m */ + /* Default gun values */ + double barrelHeight = 1.0; /* m */ + double muzzleVelocity = 860; /* m/s */ + double shotsBaseScatter = 5; /* degs */ + if (database.has_object_field(to_wstring(name))) { + json::value databaseEntry = database[to_wstring(name)]; + if (databaseEntry.has_number_field(L"barrelHeight") && databaseEntry.has_number_field(L"muzzleVelocity")) { + barrelHeight = databaseEntry[L"barrelHeight"].as_number().to_double(); + muzzleVelocity = databaseEntry[L"muzzleVelocity"].as_number().to_double(); + } + if (databaseEntry.has_number_field(L"shotsBaseScatter")) + shotsBaseScatter = databaseEntry[L"shotsBaseScatter"].as_number().to_double(); + } + + //double barrelElevation = r * (9.81 * dist / (2 * muzzleVelocity * muzzleVelocity) + (aimTarget.alt - (position.alt + barrelHeight)) / dist); /* m */ + double deltaHeight = (aimTarget.alt - (position.alt + barrelHeight)); + double alpha = 9.81 / 2 * dist * dist / (muzzleVelocity * muzzleVelocity); + double inner = dist * dist - 4 * alpha * (alpha + deltaHeight); + if (inner > 0) { + double barrelElevation = r * tan(atan((dist - sqrt(inner)) / (2 * alpha)) + RANDOM_MINUS_ONE_TO_ONE * (3 - shotsScatter) * verticalScatterMultiplier); + + double lat = 0; + double lng = 0; + double randomBearing = bearing1 + RANDOM_MINUS_ONE_TO_ONE * (3 - shotsScatter) * horizontalScatterMultiplier; + Geodesic::WGS84().Direct(position.lat, position.lng, randomBearing, r, lat, lng); + + std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'FireAtPoint', lat = " << lat << ", lng = " << lng << ", alt = " << position.alt + barrelElevation + barrelHeight << ", radius = 0.001}"; + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); + scheduler->appendCommand(command); + setHasTask(true); + } +} From a5bfb4f8d21d4d5f442080e292d070806fbb94d0 Mon Sep 17 00:00:00 2001 From: PeekabooSteam Date: Sun, 5 Nov 2023 13:05:46 +0000 Subject: [PATCH 7/9] Form submits on return press --- client/public/stylesheets/style/style.css | 10 +++------ client/src/olympusapp.ts | 27 ++++++++++++++--------- client/views/other/dialogs.ejs | 6 ++--- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/client/public/stylesheets/style/style.css b/client/public/stylesheets/style/style.css index dd5c7381..94b98cee 100644 --- a/client/public/stylesheets/style/style.css +++ b/client/public/stylesheets/style/style.css @@ -72,10 +72,6 @@ form { padding: 0; } -form>div { - margin: 20px 0; -} - .pill { background-color: var(--background-steel); border-radius: 999px; @@ -669,8 +665,8 @@ nav.ol-panel> :last-child { width:10px; } -.ol-navbar-buttons-group > .protectable > button.lock svg.locked { - filter:invert(100); +.ol-navbar-buttons-group > .protectable > button.lock svg.locked * { + fill:white !important; } .ol-navbar-buttons-group > .protectable > button:not([data-protected]).lock svg.unlocked, @@ -850,7 +846,7 @@ nav.ol-panel> :last-child { column-gap: 10px; display: flex; flex-direction: row; - margin: 10px 0px; + margin: 20px 0px; flex-wrap: wrap; width: 100%; row-gap: 10px; diff --git a/client/src/olympusapp.ts b/client/src/olympusapp.ts index ac2bc16e..22f2ebf8 100644 --- a/client/src/olympusapp.ts +++ b/client/src/olympusapp.ts @@ -403,19 +403,26 @@ export class OlympusApp { }); /* Try and connect with the Olympus REST server */ - document.addEventListener("tryConnection", () => { - const form = document.querySelector("#splash-content")?.querySelector("#authentication-form"); - const username = (form?.querySelector("#username") as HTMLInputElement).value; - const password = (form?.querySelector("#password") as HTMLInputElement).value; + const loginForm = document.getElementById("authentication-form"); + if (loginForm instanceof HTMLFormElement) { + loginForm.addEventListener("submit", (ev:SubmitEvent) => { + ev.preventDefault(); + ev.stopPropagation(); + const username = (loginForm.querySelector("#username") as HTMLInputElement).value; + const password = (loginForm.querySelector("#password") as HTMLInputElement).value; - /* Update the user credentials */ - this.getServerManager().setCredentials(username, password); + // Update the user credentials + this.getServerManager().setCredentials(username, password); - /* Start periodically requesting updates */ - this.getServerManager().startUpdate(); + // Start periodically requesting updates + this.getServerManager().startUpdate(); + + this.setLoginStatus("connecting"); + }); + } else { + console.error("Unable to find login form."); + } - this.setLoginStatus("connecting"); - }) /* Reload the page, used to mimic a restart of the app */ document.addEventListener("reloadPage", () => { diff --git a/client/views/other/dialogs.ejs b/client/views/other/dialogs.ejs index 14296f1c..738bc97d 100644 --- a/client/views/other/dialogs.ejs +++ b/client/views/other/dialogs.ejs @@ -6,11 +6,11 @@
Version v0.4.5-alpha
-
+
Username
Password
- -
+ +

From 073281135cd3f0e0aedfe65a3cedf4766bbcc8a4 Mon Sep 17 00:00:00 2001 From: PeekabooSteam Date: Sun, 5 Nov 2023 13:15:41 +0000 Subject: [PATCH 8/9] Fixed odd 'undefined' bug --- client/src/map/map.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/map/map.ts b/client/src/map/map.ts index 06a95d15..b82feb05 100644 --- a/client/src/map/map.ts +++ b/client/src/map/map.ts @@ -734,7 +734,7 @@ export class Map extends L.Map { const makeTitle = (isProtected:boolean) => { return ( isProtected ) ? "Unit type is protected and will ignore orders" : "Unit is NOT protected and will respond to orders"; } - this.#mapMarkerControls.forEach( (control:MapMarkerControl) => { + this.getMapMarkerControls().forEach( (control:MapMarkerControl) => { const toggles = `["${control.toggles.join('","')}"]`; const div = document.createElement("div"); div.className = control.protectable === true ? "protectable" : ""; @@ -901,5 +901,9 @@ export class Map extends L.Map { this.#visibilityOptions[option] = ev.currentTarget.checked; document.dispatchEvent(new CustomEvent("mapVisibilityOptionsChanged")); } + + getMapMarkerControls() { + return this.#mapMarkerControls; + } } From fa3d65bde678c34e011c475b3a9ba5dc3761b242 Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Sun, 5 Nov 2023 17:26:39 +0100 Subject: [PATCH 9/9] Completed miss on purpose functionality --- client/@types/olympus/index.d.ts | 48 + .../databasemanager/src/grounduniteditor.ts | 8 +- .../databases/units/aircraftdatabase.json | 21946 ++++++++-------- .../databases/units/groundunitdatabase.json | 564 +- .../databases/units/helicopterdatabase.json | 1988 +- client/src/interfaces.ts | 2 + client/src/unit/unit.ts | 4 + src/core/include/datatypes.h | 22 + src/core/include/unitsmanager.h | 1 + src/core/src/groundunit.cpp | 295 +- src/core/src/scheduler.cpp | 2 +- src/core/src/unitsmanager.cpp | 29 + 12 files changed, 12579 insertions(+), 12330 deletions(-) diff --git a/client/@types/olympus/index.d.ts b/client/@types/olympus/index.d.ts index 2b8e73ad..ca2c0589 100644 --- a/client/@types/olympus/index.d.ts +++ b/client/@types/olympus/index.d.ts @@ -83,6 +83,7 @@ declare module "controls/switch" { } declare module "constants/constants" { import { LatLng, LatLngBounds } from "leaflet"; + import { MapMarkerControl } from "map/map"; export const UNITS_URI = "units"; export const WEAPONS_URI = "weapons"; export const LOGS_URI = "logs"; @@ -194,6 +195,7 @@ declare module "constants/constants" { export const visibilityControls: string[]; export const visibilityControlsTypes: string[][]; export const visibilityControlsTooltips: string[]; + export const MAP_MARKER_CONTROLS: MapMarkerControl[]; export const IADSTypes: string[]; export const IADSDensities: { [key: string]: number; @@ -577,6 +579,8 @@ declare module "interfaces" { acquisitionRange?: number; engagementRange?: number; targetingRange?: number; + aimMethodRange?: number; + alertnessTimeConstant?: number; canTargetPoint?: boolean; canRearm?: boolean; canAAA?: boolean; @@ -621,6 +625,7 @@ declare module "interfaces" { export interface ShortcutOptions { altKey?: boolean; callback: CallableFunction; + context?: string; ctrlKey?: boolean; name?: string; shiftKey?: boolean; @@ -1121,6 +1126,7 @@ declare module "unit/unit" { isInViewport(): boolean; canTargetPoint(): boolean; canRearm(): boolean; + canLandAtPoint(): boolean; canAAA(): boolean; indirectFire(): boolean; isTanker(): boolean; @@ -1359,6 +1365,13 @@ declare module "contextmenus/airbasespawnmenu" { setAirbase(airbase: Airbase): void; } } +declare module "context/context" { + export interface ContextInterface { + } + export class Context { + constructor(config: ContextInterface); + } +} declare module "other/manager" { export class Manager { #private; @@ -1434,6 +1447,14 @@ declare module "map/map" { import { CoalitionArea } from "map/coalitionarea/coalitionarea"; import { CoalitionAreaContextMenu } from "contextmenus/coalitionareacontextmenu"; import { AirbaseSpawnContextMenu } from "contextmenus/airbasespawnmenu"; + export type MapMarkerControl = { + "image": string; + "isProtected"?: boolean; + "name": string; + "protectable"?: boolean; + "toggles": string[]; + "tooltip": string; + }; export class Map extends L.Map { #private; /** @@ -1481,6 +1502,7 @@ declare module "map/map" { getVisibilityOptions(): { [key: string]: boolean; }; + unitIsProtected(unit: Unit): boolean; } } declare module "mission/bullseye" { @@ -1749,7 +1771,9 @@ declare module "unit/unitsmanager" { */ getSelectedUnits(options?: { excludeHumans?: boolean; + excludeProtected?: boolean; onlyOnePerGroup?: boolean; + showProtectionReminder?: boolean; }): Unit[]; /** Deselects all currently selected units * @@ -2142,6 +2166,18 @@ declare module "panels/unitlistpanel" { toggle(): void; } } +declare module "context/contextmanager" { + import { Manager } from "other/manager"; + import { ContextInterface } from "context/context"; + export class ContextManager extends Manager { + #private; + constructor(); + add(name: string, contextConfig: ContextInterface): this; + currentContextIs(contextName: string): boolean; + getCurrentContext(): any; + setContext(contextName: string): false | undefined; + } +} declare module "olympusapp" { import { Map } from "map/map"; import { MissionManager } from "mission/missionmanager"; @@ -2151,11 +2187,15 @@ declare module "olympusapp" { import { WeaponsManager } from "weapon/weaponsmanager"; import { Manager } from "other/manager"; import { ServerManager } from "server/servermanager"; + import { ContextManager } from "context/contextmanager"; + import { Context } from "context/context"; export class OlympusApp { #private; constructor(); getDialogManager(): Manager; getMap(): Map; + getCurrentContext(): Context; + getContextManager(): ContextManager; getServerManager(): ServerManager; getPanelsManager(): Manager; getPopupsManager(): Manager; @@ -2207,3 +2247,11 @@ declare module "index" { import { OlympusApp } from "olympusapp"; export function getApp(): OlympusApp; } +declare module "context/contextmenumanager" { + import { ContextMenu } from "contextmenus/contextmenu"; + import { Manager } from "other/manager"; + export class ContextMenuManager extends Manager { + constructor(); + add(name: string, contextMenu: ContextMenu): this; + } +} diff --git a/client/plugins/databasemanager/src/grounduniteditor.ts b/client/plugins/databasemanager/src/grounduniteditor.ts index f8172a75..991c8e11 100644 --- a/client/plugins/databasemanager/src/grounduniteditor.ts +++ b/client/plugins/databasemanager/src/grounduniteditor.ts @@ -37,12 +37,14 @@ export class GroundUnitEditor extends UnitEditor { 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, "Targeting range [m]", String(blueprint.targetingRange)?? "", "number", (value: string) => {blueprint.targetingRange = parseFloat(value); }); + addStringInput(this.contentDiv2, "Aim method range [m]", String(blueprint.aimMethodRange)?? "", "number", (value: string) => {blueprint.aimMethodRange = 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); }); - addStringInput(this.contentDiv2, "Burst quantity", String(blueprint.shotsToFire)?? "", "number", (value: string) => {blueprint.shotsToFire = Math.round(parseFloat(value)); }); - addStringInput(this.contentDiv2, "Burst base interval [s]", String(blueprint.shotsBaseInterval)?? "", "number", (value: string) => {blueprint.shotsBaseInterval = Math.round(parseFloat(value)); }); - addStringInput(this.contentDiv2, "Base scatter [°]", String(blueprint.shotsBaseScatter)?? "", "number", (value: string) => {blueprint.shotsBaseScatter = Math.round(parseFloat(value)); }); + addStringInput(this.contentDiv2, "Shots to fire", String(blueprint.shotsToFire)?? "", "number", (value: string) => {blueprint.shotsToFire = Math.round(parseFloat(value)); }); + addStringInput(this.contentDiv2, "Shots base interval [s]", String(blueprint.shotsBaseInterval)?? "", "number", (value: string) => {blueprint.shotsBaseInterval = Math.round(parseFloat(value)); }); + addStringInput(this.contentDiv2, "Shots base scatter [°]", String(blueprint.shotsBaseScatter)?? "", "number", (value: string) => {blueprint.shotsBaseScatter = Math.round(parseFloat(value)); }); + addStringInput(this.contentDiv2, "Alertness time constant [s]", String(blueprint.alertnessTimeConstant)?? "", "number", (value: string) => {blueprint.alertnessTimeConstant = Math.round(parseFloat(value)); }); addCheckboxInput(this.contentDiv2, "Can target point", blueprint.canTargetPoint ?? false, (value: boolean) => {blueprint.canTargetPoint = value;}) addCheckboxInput(this.contentDiv2, "Can rearm", blueprint.canRearm ?? false, (value: boolean) => {blueprint.canRearm = value;}) addCheckboxInput(this.contentDiv2, "Can operate as AAA", blueprint.canAAA ?? false, (value: boolean) => {blueprint.canAAA = value;}) diff --git a/client/public/databases/units/aircraftdatabase.json b/client/public/databases/units/aircraftdatabase.json index 656ff16d..1f21a126 100644 --- a/client/public/databases/units/aircraftdatabase.json +++ b/client/public/databases/units/aircraftdatabase.json @@ -4,7 +4,7 @@ "coalition": "blue", "era": "Late Cold War", "label": "A-10C Warthog", - "shortLabel": "10", + "shortLabel": "A10", "loadouts": [ { "items": [ @@ -2787,7 +2787,7 @@ }, "type": "Aircraft", "description": "4 jet engine, swept wing, 15 crew. NATO reporting name: Mainstay", - "abilities": "Airbourne early warning", + "abilities": "AEW", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -2798,7 +2798,7 @@ "coalition": "blue", "label": "AJS37 Viggen", "era": "Mid Cold War", - "shortLabel": "37", + "shortLabel": "AJS", "loadouts": [ { "items": [ @@ -3477,7 +3477,7 @@ "coalition": "blue", "label": "AV8BNA Harrier", "era": "Late Cold War", - "shortLabel": "8", + "shortLabel": "AV8", "loadouts": [ { "items": [ @@ -4424,7 +4424,7 @@ }, "type": "Aircraft", "description": "Single jet engine, swept wing, 1 crew, all weather, VTOL attack aircraft. Harrier", - "abilities": "Drogue AAR", + "abilities": "Drogue AAR, Carrier", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": true, @@ -4435,7 +4435,7 @@ "coalition": "red", "label": "An-26B Curl", "era": "Mid Cold War", - "shortLabel": "26", + "shortLabel": "A26", "loadouts": [ { "items": [], @@ -4497,7 +4497,7 @@ }, "type": "Aircraft", "description": "2 turboprop, straight wing, 5 crew, cargo and passenger aircraft. NATO reporting name: Curl", - "abilities": "", + "abilities": "Transport", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -4508,7 +4508,7 @@ "coalition": "red", "label": "An-30M Clank", "era": "Mid Cold War", - "shortLabel": "30", + "shortLabel": "A30", "loadouts": [ { "items": [], @@ -4545,7 +4545,7 @@ }, "type": "Aircraft", "description": "2 turboprop, straight wing, 7 crew, weather reseach aircraft. NATO reporting name: Clank", - "abilities": "", + "abilities": "Transport", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -4556,33 +4556,8 @@ "coalition": "blue", "label": "B-1B Lancer", "era": "Late Cold War", - "shortLabel": "1", + "shortLabel": "B1", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "28 x Mk-82 - 500lb GP Bombs LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "Mk-82*84", - "name": "Mk-82*84", - "roles": [ - "Runway Attack", - "Strike" - ] - }, { "items": [ { @@ -4597,22 +4572,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "GBU-38*48", - "name": "GBU-38*48", - "roles": [ - "CAS", - "Strike", - "Strike" - ] - }, { "items": [ { @@ -4642,50 +4601,12 @@ ] }, { - "items": [ - { - "name": "10 x CBU-97 - 10 x SFW Cluster Bombs", - "quantity": 2 - }, - { - "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", - "quantity": 1 - } - ], + "items": [], "enabled": true, - "code": "GBU-38*16, CBU-97*20", - "name": "GBU-38*16, CBU-97*20", + "code": "", + "name": "Empty loadout", "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "8 x Mk-84 - 2000lb GP Bombs LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "Mk-84*24", - "name": "Mk-84*24", - "roles": [ - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "8 x GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "GBU-31*24", - "name": "GBU-31*24", - "roles": [ - "Strike", + "No task", "Strike" ] }, @@ -4704,6 +4625,21 @@ "Strike" ] }, + { + "items": [ + { + "name": "8 x GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bombs", + "quantity": 3 + } + ], + "enabled": true, + "code": "GBU-31*24", + "name": "GBU-31*24", + "roles": [ + "Strike", + "Strike" + ] + }, { "items": [ { @@ -4722,6 +4658,70 @@ "Strike", "Strike" ] + }, + { + "items": [ + { + "name": "10 x CBU-97 - 10 x SFW Cluster Bombs", + "quantity": 2 + }, + { + "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-38*16, CBU-97*20", + "name": "GBU-38*16, CBU-97*20", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", + "quantity": 3 + } + ], + "enabled": true, + "code": "GBU-38*48", + "name": "GBU-38*48", + "roles": [ + "CAS", + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "28 x Mk-82 - 500lb GP Bombs LD", + "quantity": 3 + } + ], + "enabled": true, + "code": "Mk-82*84", + "name": "Mk-82*84", + "roles": [ + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "8 x Mk-84 - 2000lb GP Bombs LD", + "quantity": 3 + } + ], + "enabled": true, + "code": "Mk-84*24", + "name": "Mk-84*24", + "roles": [ + "Runway Attack", + "Strike" + ] } ], "filename": "b-1.png", @@ -4736,7 +4736,7 @@ }, "type": "Aircraft", "description": "4 jet engine, swing wing, 2 crew bomber. Lancer", - "abilities": "", + "abilities": "Boom AAR", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": true, @@ -4747,8 +4747,40 @@ "coalition": "blue", "label": "B-52H Stratofortress", "era": "Early Cold War", - "shortLabel": "52", + "shortLabel": "B52", "loadouts": [ + { + "items": [ + { + "name": "8 x AGM-84A Harpoon ASM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-84A*8", + "name": "AGM-84A*8", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6 x AGM-86D on MER", + "quantity": 2 + }, + { + "name": "8 x AGM-86D", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-86C*20", + "name": "AGM-86C*20", + "roles": [ + "Strike" + ] + }, { "items": [], "enabled": true, @@ -4759,21 +4791,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "HSAB with 9 x Mk-83 - 1000lb GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-84*18", - "name": "Mk-84*18", - "roles": [ - "Strike", - "Runway Attack" - ] - }, { "items": [ { @@ -4793,6 +4810,21 @@ "Runway Attack" ] }, + { + "items": [ + { + "name": "HSAB with 9 x Mk-83 - 1000lb GP Bombs LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-84*18", + "name": "Mk-84*18", + "roles": [ + "Strike", + "Runway Attack" + ] + }, { "items": [ { @@ -4807,38 +4839,6 @@ "Strike", "Runway Attack" ] - }, - { - "items": [ - { - "name": "6 x AGM-86D on MER", - "quantity": 2 - }, - { - "name": "8 x AGM-86D", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-86C*20", - "name": "AGM-86C*20", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "8 x AGM-84A Harpoon ASM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-84A*8", - "name": "AGM-84A*8", - "roles": [ - "Antiship Strike" - ] } ], "filename": "b-52.png", @@ -4853,7 +4853,7 @@ }, "type": "Aircraft", "description": "8 jet engine, swept wing, 6 crew bomber. Stratofortress", - "abilities": "", + "abilities": "Boom AAR", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": true, @@ -5121,20 +5121,10 @@ "era": "Late Cold War", "shortLabel": "101", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, { "items": [ { - "name": "AIM-9P Sidewinder IR AAM", + "name": "Sea Eagle - ASM", "quantity": 2 }, { @@ -5143,182 +5133,38 @@ } ], "enabled": true, - "code": "2*AIM-9P, DEFA 553 CANNON (I)", - "name": "2*AIM-9P, DEFA 553 CANNON (I)", + "code": "2* SEA EAGLE, DEFA-553 CANNON", + "name": "2* SEA EAGLE, DEFA-553 CANNON", "roles": [ - "CAP" + "Antiship Strike" ] }, { "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, DEFA 553 CANNON (I)", - "name": "2*AIM-9M, DEFA 553 CANNON (I)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, DEFA 533 CANNON (II)", - "name": "2*AIM-9P, DEFA 533 CANNON (II)", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, { "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, AN-M3 CANNON (IV)", - "name": "2*AIM-9P, AN-M3 CANNON (IV)", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 }, { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, DEFA 553 CANNON", - "name": "2*R.550 MAGIC, DEFA 553 CANNON", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", + "name": "BIN-200 - 200kg Napalm Incendiary Bomb", "quantity": 2 }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, AN-M3 CANNON (III)", - "name": "2*AIM-9M, AN-M3 CANNON (III)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, DEFA 553 CANNON", - "name": "2*AIM-9P, DEFA 553 CANNON", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, DEFA 553 CANNON (III)", - "name": "2*R.550 MAGIC, DEFA 553 CANNON (III)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, { "name": "Belouga", "quantity": 2 }, { - "name": "AIM-9P Sidewinder IR AAM", + "name": "AIM-9M Sidewinder IR AAM", "quantity": 2 } ], "enabled": true, - "code": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", - "name": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", + "code": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", + "name": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", "roles": [ "CAS" ] }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "Sea Eagle - ASM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", - "name": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", - "roles": [ - "Antiship Strike" - ] - }, { "items": [ { @@ -5341,6 +5187,32 @@ "Antiship Strike" ] }, + { + "items": [ + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", + "name": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", + "roles": [ + "CAS" + ] + }, { "items": [ { @@ -5362,29 +5234,25 @@ { "items": [ { - "name": "Belouga", + "name": "AIM-9M Sidewinder IR AAM", "quantity": 2 }, { - "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", "quantity": 1 } ], "enabled": true, - "code": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", - "name": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", + "code": "2*AIM-9M, AN-M3 CANNON (III)", + "name": "2*AIM-9M, AN-M3 CANNON (III)", "roles": [ - "Strike" + "CAP" ] }, { "items": [ { - "name": "Sea Eagle - ASM", + "name": "AIM-9M Sidewinder IR AAM", "quantity": 2 }, { @@ -5393,10 +5261,68 @@ } ], "enabled": true, - "code": "2* SEA EAGLE, DEFA-553 CANNON", - "name": "2* SEA EAGLE, DEFA-553 CANNON", + "code": "2*AIM-9M, DEFA 533 CANNON (II)", + "name": "2*AIM-9M, DEFA 533 CANNON (II)", "roles": [ - "Antiship Strike" + "Escort" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9M, DEFA 553 CANNON (I)", + "name": "2*AIM-9M, DEFA 553 CANNON (I)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9M, DEFA 553 CANNON (IV)", + "name": "2*AIM-9M, DEFA 553 CANNON (IV)", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + }, + { + "name": "Belouga", + "quantity": 2 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", + "name": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", + "roles": [ + "CAS" ] }, { @@ -5428,41 +5354,113 @@ { "items": [ { - "name": "R550 Magic 2 IR AAM", + "name": "AIM-9P Sidewinder IR AAM", "quantity": 2 }, { - "name": "Sea Eagle - ASM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", "quantity": 1 } ], "enabled": true, - "code": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", - "name": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", + "code": "2*AIM-9P, AN-M3 CANNON (III)", + "name": "2*AIM-9P, AN-M3 CANNON (III)", "roles": [ - "Antiship Strike" + "CAP" ] }, { "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9P, AN-M3 CANNON (IV)", + "name": "2*AIM-9P, AN-M3 CANNON (IV)", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9P, DEFA 533 CANNON (II)", + "name": "2*AIM-9P, DEFA 533 CANNON (II)", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9P, DEFA 553 CANNON", + "name": "2*AIM-9P, DEFA 553 CANNON", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9P, DEFA 553 CANNON (I)", + "name": "2*AIM-9P, DEFA 553 CANNON (I)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, { "name": "DEFA-553 - 30mm Revolver Cannon", "quantity": 1 }, { - "name": "R550 Magic 2 IR AAM", + "name": "Sea Eagle - ASM", "quantity": 2 } ], "enabled": true, - "code": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", - "name": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", + "code": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", + "name": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", "roles": [ - "Reconnaissance" + "Antiship Strike" ] }, { @@ -5490,7 +5488,11 @@ { "items": [ { - "name": "AIM-9M Sidewinder IR AAM", + "name": "Belouga", + "quantity": 2 + }, + { + "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", "quantity": 2 }, { @@ -5499,10 +5501,58 @@ } ], "enabled": true, - "code": "2*AIM-9M, DEFA 553 CANNON (IV)", - "name": "2*AIM-9M, DEFA 553 CANNON (IV)", + "code": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", + "name": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", "roles": [ - "Reconnaissance" + "Strike" + ] + }, + { + "items": [ + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + }, + { + "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", + "quantity": 2 + }, + { + "name": "BR-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", + "name": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + }, + { + "name": "Sea Eagle - ASM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", + "name": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", + "roles": [ + "Antiship Strike" ] }, { @@ -5535,8 +5585,8 @@ } ], "enabled": true, - "code": "2*R550 Magic, DEFA 553 CANNON (I)", - "name": "2*R550 Magic, DEFA 553 CANNON (I)", + "code": "2*R.550 MAGIC, DEFA 553 CANNON", + "name": "2*R.550 MAGIC, DEFA 553 CANNON", "roles": [ "CAP" ] @@ -5544,104 +5594,26 @@ { "items": [ { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - }, - { - "name": "BIN-200 - 200kg Napalm Incendiary Bomb", + "name": "R550 Magic 2 IR AAM", "quantity": 2 }, - { - "name": "Belouga", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", - "name": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ { "name": "DEFA-553 - 30mm Revolver Cannon", "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 } ], "enabled": true, - "code": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", - "name": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, AN-M3 CANNON (III)", - "name": "2*AIM-9P, AN-M3 CANNON (III)", + "code": "2*R.550 MAGIC, DEFA 553 CANNON (III)", + "name": "2*R.550 MAGIC, DEFA 553 CANNON (III)", "roles": [ "CAP" ] }, { "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, { "name": "DEFA-553 - 30mm Revolver Cannon", "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, DEFA 533 CANNON (II)", - "name": "2*AIM-9M, DEFA 533 CANNON (II)", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", - "quantity": 2 - }, - { - "name": "BR-250 - 250kg GP Bomb LD", - "quantity": 2 }, { "name": "R550 Magic 2 IR AAM", @@ -5649,9 +5621,37 @@ } ], "enabled": true, - "code": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", - "name": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", + "code": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", + "name": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic, DEFA 553 CANNON (I)", + "name": "2*R550 Magic, DEFA 553 CANNON (I)", + "roles": [ + "CAP" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", "CAS" ] } @@ -5997,7 +5997,7 @@ }, "type": "Aircraft", "description": "4 turboprop, stright wing, 3 crew. Hercules", - "abilities": "", + "abilities": "Transport", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -6033,7 +6033,7 @@ }, "type": "Aircraft", "description": "4 jet engine, swept wing, 3 crew. Globemaster", - "abilities": "", + "abilities": "Transport", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -6042,9 +6042,9 @@ "E-2C": { "name": "E-2C", "coalition": "blue", - "label": "E-2C Hawkeye", + "label": "E-2D Hawkeye", "era": "Mid Cold War", - "shortLabel": "2C", + "shortLabel": "E2", "loadouts": [ { "items": [], @@ -6075,7 +6075,7 @@ }, "type": "Aircraft", "description": "2 turboprop, straight wing, 5 crew. Hawkeye", - "abilities": "Airbourne early warning", + "abilities": "AEW, Carrier", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -6119,7 +6119,7 @@ }, "type": "Aircraft", "description": "4 jet engine, swept wing, 17 crew. Sentry", - "abilities": "Airbourne early warning", + "abilities": "AEW", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -6142,20 +6142,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-12*2", - "name": "GBU-12*2", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -6170,6 +6156,20 @@ "Strike" ] }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-12*2", + "name": "GBU-12*2", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -6207,34 +6207,33 @@ "name": "F-14A-135-GR", "coalition": "blue", "label": "F-14A-135-GR Tomcat", - "era": "Mid Cold War", + "era": "Late Cold War", "shortLabel": "14A", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, { "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 2 + }, { "name": "Fuel tank 300 gal", "quantity": 2 + }, + { + "name": "ADM_141A", + "quantity": 4 } ], "enabled": true, - "code": "XT*2", - "name": "XT*2", + "code": "ADM-141a*4, Aim-7M*2, Aim-9M*2, XT 300 GAL*2", + "name": "ADM-141a*4, Aim-7M*2, Aim-9M*2, XT 300 GAL*2", "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" + "SEAD" ] }, { @@ -6243,43 +6242,26 @@ "name": "LAU-138 AIM-9L", "quantity": 2 }, + { + "name": "LAU-7 AIM-9L", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, { "name": "AIM-54A-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ + }, { "name": "AIM-7F", - "quantity": 6 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 + "quantity": 1 } ], "enabled": true, - "code": "AIM-7F*6, AIM-9L*2, XT*2", - "name": "AIM-7F*6, AIM-9L*2, XT*2", + "code": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", + "name": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", "roles": [ "CAP", "CAP", @@ -6316,39 +6298,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", - "name": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, { "items": [ { @@ -6407,6 +6356,198 @@ "CAP" ] }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 6 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", + "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-20", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", + "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 1 + }, + { + "name": "AIM-7F", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", + "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", + "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-20", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, { "items": [ { @@ -6468,359 +6609,26 @@ { "items": [ { - "name": "MAK79 4 BDU-33", - "quantity": 2 + "name": "AIM-7F", + "quantity": 6 }, - { - "name": "MAK79 3 BDU-33", - "quantity": 2 - } - ], - "enabled": true, - "code": "BDU-33*14", - "name": "BDU-33*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "3 BDU-33", - "quantity": 4 - } - ], - "enabled": true, - "code": "BDU-33*12", - "name": "BDU-33*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "GBU-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2", - "name": "GBU-10*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "GBU-12", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4", - "name": "GBU-12*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-16", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-16*4", - "name": "GBU-16*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-24", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-24*2", - "name": "GBU-24*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-84", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-84*4", - "name": "Mk-84*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-83", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-83*4", - "name": "Mk-83*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-82", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82*4", - "name": "Mk-82*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-82", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-82", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*14", - "name": "Mk-82*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-81", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-81", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-81*14", - "name": "Mk-81*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "Mk-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-20*4", - "name": "Mk-20*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82AIR", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82AIR*4", - "name": "Mk-82AIR*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*12", - "name": "Zuni*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 3 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*28", - "name": "Zuni*28", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 SUU-25 * 8 LUU-2", - "quantity": 1 - }, - { - "name": "SUU-25 * 8 LUU-2", - "quantity": 1 - } - ], - "enabled": true, - "code": "LUU-2*24", - "name": "LUU-2*24", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ { "name": "LAU-138 AIM-9L", "quantity": 2 }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, { "name": "Fuel tank 300 gal", "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 1 } ], "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", - "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", + "code": "AIM-7F*6, AIM-9L*2, XT*2", + "name": "AIM-7F*6, AIM-9L*2, XT*2", "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 1 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", - "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", - "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", - "roles": [ - "Strike", - "CAS" + "CAP", + "CAP", + "Escort", + "CAP" ] }, { @@ -6892,101 +6700,293 @@ { "items": [ { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "ADM_141A", + "name": "3 BDU-33", "quantity": 4 } ], "enabled": true, - "code": "ADM-141a*4, Aim-7M*2, Aim-9M*2, XT 300 GAL*2", - "name": "ADM-141a*4, Aim-7M*2, Aim-9M*2, XT 300 GAL*2", + "code": "BDU-33*12", + "name": "BDU-33*12", "roles": [ - "SEAD" + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "MAK79 4 BDU-33", + "quantity": 2 + }, + { + "name": "MAK79 3 BDU-33", + "quantity": 2 + } + ], + "enabled": true, + "code": "BDU-33*14", + "name": "BDU-33*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "GBU-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-10*2", + "name": "GBU-10*2", + "roles": [ + "Strike", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "GBU-12", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-12*4", + "name": "GBU-12*4", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-16", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-16*4", + "name": "GBU-16*4", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-24*2", + "name": "GBU-24*2", + "roles": [ + "Strike", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "2 SUU-25 * 8 LUU-2", + "quantity": 1 + }, + { + "name": "SUU-25 * 8 LUU-2", + "quantity": 1 + } + ], + "enabled": true, + "code": "LUU-2*24", + "name": "LUU-2*24", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-20", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-20*4", + "name": "Mk-20*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MAK79 4 Mk-81", + "quantity": 2 + }, + { + "name": "MAK79 3 Mk-81", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-81*14", + "name": "Mk-81*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "MAK79 4 Mk-82", + "quantity": 2 + }, + { + "name": "MAK79 3 Mk-82", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-82*14", + "name": "Mk-82*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "Mk-82", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-82*4", + "name": "Mk-82*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82AIR", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-82AIR*4", + "name": "Mk-82AIR*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-83", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-83*4", + "name": "Mk-83*4", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Mk-84", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-84*4", + "name": "Mk-84*4", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "XT*2", + "name": "XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "2 LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + }, + { + "name": "LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + } + ], + "enabled": true, + "code": "Zuni*12", + "name": "Zuni*12", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "2 LAU-10 - 4 ZUNI MK 71", + "quantity": 3 + }, + { + "name": "LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + } + ], + "enabled": true, + "code": "Zuni*28", + "name": "Zuni*28", + "roles": [ + "Strike", + "CAS" ] } ], @@ -7142,7 +7142,7 @@ }, "type": "Aircraft", "description": "2 Jet engine, swing wing, 2 crew. Tomcat", - "abilities": "Drogue AAR", + "abilities": "Drogue AAR, Carrier", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": true, @@ -7155,187 +7155,10 @@ "era": "Late Cold War", "shortLabel": "14B", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, { "items": [ { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "XT*2", - "name": "XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*6, AIM-9M*2, XT*2", - "name": "AIM-54A-MK47*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*6, AIM-9M*2, XT*2", - "name": "AIM-54A-MK60*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*6, AIM-9M*2, XT*2", - "name": "AIM-54C-MK47*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7M", - "quantity": 6 - }, - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7M*6, AIM-9M*2, XT*2", - "name": "AIM-7M*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7M", - "quantity": 6 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7M*6, AIM-9L*2, XT*2", - "name": "AIM-7M*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", + "name": "AIM-9M Sidewinder IR AAM", "quantity": 2 }, { @@ -7347,105 +7170,15 @@ "quantity": 2 }, { - "name": "AIM-54A-Mk47", + "name": "ADM_141A", "quantity": 4 } ], "enabled": true, - "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", + "code": "ADM-141a*4, Aim-7M*2, Aim-9M*2, XT 300 GAL*2", + "name": "ADM-141a*4, Aim-7M*2, Aim-9M*2, XT 300 GAL*2", "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", - "name": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "name": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" + "SEAD" ] }, { @@ -7521,7 +7254,36 @@ "quantity": 2 }, { - "name": "LAU-7 AIM-9M", + "name": "AIM-7M", + "quantity": 3 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", + "name": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-7M", "quantity": 2 }, { @@ -7529,17 +7291,13 @@ "quantity": 2 }, { - "name": "AIM-54A-Mk60", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 + "name": "AIM-54A-Mk47", + "quantity": 4 } ], "enabled": true, - "code": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", - "name": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", + "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", + "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", "roles": [ "CAP", "CAP", @@ -7554,7 +7312,7 @@ "quantity": 2 }, { - "name": "LAU-7 AIM-9M", + "name": "AIM-7M", "quantity": 2 }, { @@ -7562,17 +7320,13 @@ "quantity": 2 }, { - "name": "AIM-54C-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 + "name": "AIM-54A-Mk47", + "quantity": 4 } ], "enabled": true, - "code": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", - "name": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", + "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", + "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", "roles": [ "CAP", "CAP", @@ -7638,144 +7392,24 @@ "CAP" ] }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "name": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*4, AIM-9M*4, XT*2", - "name": "AIM-54C-MK47*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, { "items": [ { "name": "LAU-138 AIM-9L", "quantity": 2 }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", - "name": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7M", - "quantity": 4 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7M*4, AIM-9L*4, XT*2", - "name": "AIM-7M*4, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 3 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, { "name": "AIM-54A-Mk47", + "quantity": 6 + }, + { + "name": "Fuel tank 300 gal", "quantity": 2 } ], "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "name": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", + "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", + "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", "roles": [ "CAP", "CAP", @@ -7790,26 +7424,53 @@ "quantity": 2 }, { - "name": "AIM-7M", - "quantity": 3 + "name": "AIM-54A-Mk47", + "quantity": 6 }, { "name": "Fuel tank 300 gal", "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*6, AIM-9M*2, XT*2", + "name": "AIM-54A-MK47*6, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 }, { "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", "quantity": 2 + }, + { + "name": "Mk-20", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 } ], "enabled": true, - "code": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", - "name": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" + "Strike", + "CAS" ] }, { @@ -7819,286 +7480,29 @@ "quantity": 2 }, { - "name": "AIM-7M", - "quantity": 3 + "name": "LANTIRN Targeting Pod", + "quantity": 1 }, { "name": "Fuel tank 300 gal", "quantity": 2 }, - { - "name": "AIM-54C-Mk47", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "name": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "MAK79 4 BDU-33", - "quantity": 2 - }, - { - "name": "MAK79 3 BDU-33", - "quantity": 2 - } - ], - "enabled": true, - "code": "BDU-33*14", - "name": "BDU-33*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "3 BDU-33", - "quantity": 4 - } - ], - "enabled": true, - "code": "BDU-33*12", - "name": "BDU-33*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "GBU-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2", - "name": "GBU-10*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "GBU-12", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4", - "name": "GBU-12*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-16", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-16*4", - "name": "GBU-16*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-24", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-24*2", - "name": "GBU-24*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-84", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-84*4", - "name": "Mk-84*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-83", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-83*4", - "name": "Mk-83*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-82", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82*4", - "name": "Mk-82*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-82", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-82", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*14", - "name": "Mk-82*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-81", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-81", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-81*14", - "name": "Mk-81*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ { "name": "Mk-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-20*4", - "name": "Mk-20*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ + "quantity": 2 + }, { - "name": "Mk-82AIR", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82AIR*4", - "name": "Mk-82AIR*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", + "name": "AIM-7M", "quantity": 1 }, { - "name": "LAU-10 - 4 ZUNI MK 71", + "name": "AIM-54A-Mk60", "quantity": 1 } ], "enabled": true, - "code": "Zuni*12", - "name": "Zuni*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 3 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*28", - "name": "Zuni*28", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 SUU-25 * 8 LUU-2", - "quantity": 1 - }, - { - "name": "SUU-25 * 8 LUU-2", - "quantity": 1 - } - ], - "enabled": true, - "code": "LUU-2*24", - "name": "LUU-2*24", + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", "roles": [ "Strike", "CAS", @@ -8106,37 +7510,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", - "roles": [ - "Strike", - "CAS" - ] - }, { "items": [ { @@ -8183,7 +7556,7 @@ "quantity": 2 }, { - "name": "Mk-20", + "name": "Mk-82", "quantity": 2 }, { @@ -8192,13 +7565,340 @@ } ], "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", "roles": [ "Strike", "CAS" ] }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", + "name": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 3 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", + "name": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", + "name": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*4, AIM-9M*4, XT*2", + "name": "AIM-54A-MK60*4, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 6 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*6, AIM-9M*2, XT*2", + "name": "AIM-54A-MK60*6, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", + "name": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 3 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", + "name": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", + "name": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*4, AIM-9M*4, XT*2", + "name": "AIM-54C-MK47*4, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 6 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*6, AIM-9M*2, XT*2", + "name": "AIM-54C-MK47*6, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, { "items": [ { @@ -8268,85 +7968,40 @@ { "items": [ { - "name": "LAU-138 AIM-9M", + "name": "AIM-7M", + "quantity": 4 + }, + { + "name": "LAU-138 AIM-9L", "quantity": 2 }, { - "name": "LANTIRN Targeting Pod", - "quantity": 1 + "name": "LAU-7 AIM-9L", + "quantity": 2 }, { "name": "Fuel tank 300 gal", "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 } ], "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", + "code": "AIM-7M*4, AIM-9L*4, XT*2", + "name": "AIM-7M*4, AIM-9L*4, XT*2", "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" + "CAP", + "CAP", + "Escort", + "CAP" ] }, { "items": [ { - "name": "LAU-138 AIM-9M", + "name": "LAU-138 AIM-9L", "quantity": 2 }, { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M", + "name": "LAU-7 AIM-9M", "quantity": 2 }, { @@ -8354,15 +8009,360 @@ "quantity": 2 }, { - "name": "ADM_141A", + "name": "AIM-7M", "quantity": 4 } ], "enabled": true, - "code": "ADM-141a*4, Aim-7M*2, Aim-9M*2, XT 300 GAL*2", - "name": "ADM-141a*4, Aim-7M*2, Aim-9M*2, XT 300 GAL*2", + "code": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", + "name": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", "roles": [ - "SEAD" + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7M", + "quantity": 6 + }, + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-7M*6, AIM-9L*2, XT*2", + "name": "AIM-7M*6, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7M", + "quantity": 6 + }, + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-7M*6, AIM-9M*2, XT*2", + "name": "AIM-7M*6, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "3 BDU-33", + "quantity": 4 + } + ], + "enabled": true, + "code": "BDU-33*12", + "name": "BDU-33*12", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "MAK79 4 BDU-33", + "quantity": 2 + }, + { + "name": "MAK79 3 BDU-33", + "quantity": 2 + } + ], + "enabled": true, + "code": "BDU-33*14", + "name": "BDU-33*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "GBU-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-10*2", + "name": "GBU-10*2", + "roles": [ + "Strike", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "GBU-12", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-12*4", + "name": "GBU-12*4", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-16", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-16*4", + "name": "GBU-16*4", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-24*2", + "name": "GBU-24*2", + "roles": [ + "Strike", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "2 SUU-25 * 8 LUU-2", + "quantity": 1 + }, + { + "name": "SUU-25 * 8 LUU-2", + "quantity": 1 + } + ], + "enabled": true, + "code": "LUU-2*24", + "name": "LUU-2*24", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-20", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-20*4", + "name": "Mk-20*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MAK79 4 Mk-81", + "quantity": 2 + }, + { + "name": "MAK79 3 Mk-81", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-81*14", + "name": "Mk-81*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "MAK79 4 Mk-82", + "quantity": 2 + }, + { + "name": "MAK79 3 Mk-82", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-82*14", + "name": "Mk-82*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "Mk-82", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-82*4", + "name": "Mk-82*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82AIR", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-82AIR*4", + "name": "Mk-82AIR*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-83", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-83*4", + "name": "Mk-83*4", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Mk-84", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-84*4", + "name": "Mk-84*4", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "XT*2", + "name": "XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "2 LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + }, + { + "name": "LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + } + ], + "enabled": true, + "code": "Zuni*12", + "name": "Zuni*12", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "2 LAU-10 - 4 ZUNI MK 71", + "quantity": 3 + }, + { + "name": "LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + } + ], + "enabled": true, + "code": "Zuni*28", + "name": "Zuni*28", + "roles": [ + "Strike", + "CAS" ] } ], @@ -8494,7 +8494,7 @@ }, "type": "Aircraft", "description": "2 Jet engine, swing wing, 2 crew. Tomcat", - "abilities": "Drogue AAR", + "abilities": "Drogue AAR, Carrier", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": true, @@ -8505,15 +8505,51 @@ "coalition": "blue", "label": "F-15C Eagle", "era": "Late Cold War", - "shortLabel": "15", + "shortLabel": "15C", "loadouts": [ { - "items": [], + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 1 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "AIM-120*8,Fuel", + "name": "AIM-120*8,Fuel", "roles": [ - "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 3 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-120*8,Fuel*3", + "name": "AIM-120*8,Fuel*3", + "roles": [ + "Escort", + "CAP", "CAP" ] }, @@ -8554,7 +8590,7 @@ "quantity": 2 }, { - "name": "AIM-120B AMRAAM - Active Rdr AAM", + "name": "AIM-7M Sparrow Semi-Active Radar", "quantity": 4 }, { @@ -8563,54 +8599,8 @@ } ], "enabled": true, - "code": "AIM-9*2,AIM-120*6,Fuel", - "name": "AIM-9*2,AIM-120*6,Fuel", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-120*4,Fuel*3", - "name": "AIM-9*4,AIM-120*4,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-120*4,Fuel", - "name": "AIM-9*4,AIM-120*4,Fuel", + "code": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", + "name": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", "roles": [ "CAP" ] @@ -8643,6 +8633,32 @@ "CAP" ] }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9*2,AIM-120*6,Fuel", + "name": "AIM-9*2,AIM-120*6,Fuel", + "roles": [ + "CAP" + ] + }, { "items": [ { @@ -8671,6 +8687,52 @@ "CAP" ] }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9*4,AIM-120*4,Fuel", + "name": "AIM-9*4,AIM-120*4,Fuel", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 3 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-9*4,AIM-120*4,Fuel*3", + "name": "AIM-9*4,AIM-120*4,Fuel*3", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, { "items": [ { @@ -8693,28 +8755,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120*8,Fuel", - "name": "AIM-120*8,Fuel", - "roles": [ - "CAP" - ] - }, { "items": [ { @@ -8740,52 +8780,12 @@ ] }, { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], + "items": [], "enabled": true, - "code": "AIM-120*8,Fuel*3", - "name": "AIM-120*8,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", - "name": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", + "code": "", + "name": "Empty loadout", "roles": [ + "No task", "CAP" ] } @@ -8879,13 +8879,71 @@ "shortLabel": "16", "loadouts": [ { - "items": [], + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", + "name": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", "roles": [ - "No task", - "CAP" + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 3 x Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", + "name": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", + "roles": [ + "Runway Attack" ] }, { @@ -8962,300 +9020,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": null, - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*4, FUEL*2", - "name": "AIM-120C*2, AIM-9X*4, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*3", - "name": "AIM-120C*4, AIM-9X*2, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", - "name": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": null, - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*2", - "name": "AIM-120C*4, AIM-9X*2, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*3", - "name": "AIM-120C*6, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", - "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*2, ECM", - "name": "AIM-120C*6, FUEL*2, ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*2, ECM, TGP", - "name": "AIM-120C*6, FUEL*2, ECM, TGP", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": null, - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*2", - "name": "AIM-120C*6, FUEL*2", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*3, TGP", - "name": "AIM-120C*6, FUEL*3, TGP", - "roles": [ - "Escort" - ] - }, { "items": [ { @@ -9291,6 +9055,115 @@ "Strike" ] }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -9375,7 +9248,7 @@ "quantity": 2 }, { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", "quantity": 2 }, { @@ -9392,13 +9265,10 @@ } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", + "code": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" + "Strike" ] }, { @@ -9412,7 +9282,7 @@ "quantity": 2 }, { - "name": "TER-9A with 2 x CBU-97 - 10 x SFW Cluster Bomb", + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", "quantity": 2 }, { @@ -9423,19 +9293,20 @@ "name": "ALQ-184 Long - ECM Pod", "quantity": 1 }, + { + "name": "AN/ASQ-213 HTS - HARM Targeting System", + "quantity": 1 + }, { "name": "AN/AAQ-28 LITENING - Targeting Pod", "quantity": 1 } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", + "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", + "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" + "SEAD" ] }, { @@ -9449,7 +9320,7 @@ "quantity": 2 }, { - "name": "TER-9A with 2 x Mk-82 - 500lb GP Bomb LD", + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", "quantity": 2 }, { @@ -9457,7 +9328,11 @@ "quantity": 2 }, { - "name": "ALQ-184 - ECM Pod", + "name": "Fuel tank 300 gal", + "quantity": 1 + }, + { + "name": "AN/ASQ-213 HTS - HARM Targeting System", "quantity": 1 }, { @@ -9466,13 +9341,10 @@ } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", + "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", + "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" + "SEAD" ] }, { @@ -9486,52 +9358,15 @@ "quantity": 2 }, { - "name": "TER-9A with 2 x CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 4 }, { "name": "ALQ-184 Long - ECM Pod", "quantity": 1 }, { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", + "name": "AN/ASQ-213 HTS - HARM Targeting System", "quantity": 1 }, { @@ -9540,13 +9375,10 @@ } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", + "code": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", + "name": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" + "SEAD" ] }, { @@ -9634,7 +9466,7 @@ "quantity": 2 }, { - "name": "TER-9A with 3 x Mk-82 - 500lb GP Bomb LD", + "name": "TER-9A with 2 x CBU-87 - 202 x CEM Cluster Bomb", "quantity": 2 }, { @@ -9642,7 +9474,7 @@ "quantity": 2 }, { - "name": "ALQ-184 - ECM Pod", + "name": "ALQ-184 Long - ECM Pod", "quantity": 1 }, { @@ -9651,8 +9483,8 @@ } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", + "code": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", "roles": [ "Antiship Strike", "CAS", @@ -9671,7 +9503,7 @@ "quantity": 2 }, { - "name": "TER-9A with 3 x Mk-82 AIR Ballute - 500lb GP Bomb HD", + "name": "TER-9A with 2 x CBU-97 - 10 x SFW Cluster Bomb", "quantity": 2 }, { @@ -9688,8 +9520,8 @@ } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", + "code": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", "roles": [ "Antiship Strike", "CAS", @@ -9708,7 +9540,7 @@ "quantity": 2 }, { - "name": "TER-9A with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", + "name": "GBU-10 - 2000lb Laser Guided Bomb", "quantity": 2 }, { @@ -9725,106 +9557,8 @@ } ], "enabled": true, - "code": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", - "name": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 3 x Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", - "name": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", + "code": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", "roles": [ "Strike" ] @@ -9897,40 +9631,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -10112,7 +9812,7 @@ "quantity": 2 }, { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", + "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts Mk61, Practice", "quantity": 2 }, { @@ -10129,8 +9829,186 @@ } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", + "code": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 3 x Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 3 x Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", "roles": [ "Strike" ] @@ -10146,7 +10024,7 @@ "quantity": 2 }, { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", + "name": "Mk-84 - 2000lb GP Bomb LD", "quantity": 2 }, { @@ -10163,8 +10041,8 @@ } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", + "code": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", "roles": [ "Strike" ] @@ -10177,126 +10055,38 @@ }, { "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", - "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", "quantity": 4 }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": null, + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*4, FUEL*2", + "name": "AIM-120C*2, AIM-9X*4, FUEL*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, { "name": "ALQ-184 Long - ECM Pod", "quantity": 1 @@ -10311,8 +10101,8 @@ } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", - "name": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", + "code": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", + "name": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", "roles": [ "SEAD" ] @@ -10351,40 +10141,6 @@ "SEAD" ] }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "name": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, { "items": [ { @@ -10419,14 +10175,65 @@ "items": [ { "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 + "quantity": 4 }, { "name": "AIM-9X Sidewinder IR AAM", "quantity": 2 }, { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts Mk61, Practice", + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": null, + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AIM-9X*2, FUEL*2", + "name": "AIM-120C*4, AIM-9X*2, FUEL*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", + "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9X Sidewinder IR AAM", "quantity": 2 }, { @@ -10443,10 +10250,203 @@ } ], "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", + "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", "roles": [ - "FAC-A" + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AIM-9X*2, FUEL*3", + "name": "AIM-120C*4, AIM-9X*2, FUEL*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", + "name": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": null, + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*2", + "name": "AIM-120C*6, FUEL*2", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*2, ECM", + "name": "AIM-120C*6, FUEL*2, ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*2, ECM, TGP", + "name": "AIM-120C*6, FUEL*2, ECM, TGP", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*3", + "name": "AIM-120C*6, FUEL*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*3, TGP", + "name": "AIM-120C*6, FUEL*3, TGP", + "roles": [ + "Escort" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" ] } ], @@ -10781,60 +10781,6 @@ "era": "Mid Cold War", "shortLabel": "4", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-7 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-7*4", - "name": "AIM-9*4,AIM-7*4", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM45*2_AGM-65D*4_AIM7*2_ECM", - "name": "AGM45*2_AGM-65D*4_AIM7*2_ECM", - "roles": [ - "SEAD" - ] - }, { "items": [ { @@ -10861,158 +10807,6 @@ "SEAD" ] }, - { - "items": [ - { - "name": "MER6 with 6 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*18,AIM-7*2,ECM", - "name": "Mk-82*18,AIM-7*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-12*2,AIM-7*2,Fuel*2,ECM", - "name": "GBU-12*2,AIM-7*2,Fuel*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", - "quantity": 4 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk20*12,AIM-7*2,ECM", - "name": "Mk20*12,AIM-7*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*6,AIM-7*2,Fuel*2,ECM", - "name": "Mk-82*6,AIM-7*2,Fuel*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2,AIM-7*2,Fuel*2,ECM", - "name": "GBU-10*2,AIM-7*2,Fuel*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk20*6,AIM-7*2,Fuel*2,ECM", - "name": "Mk20*6,AIM-7*2,Fuel*2,ECM", - "roles": [ - "CAS" - ] - }, { "items": [ { @@ -11067,16 +10861,68 @@ "name": "F-4 Fuel tank-W", "quantity": 2 }, + { + "name": "LAU-88 with 2 x AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 4 + }, { "name": "F-4 Fuel tank-C", "quantity": 1 } ], "enabled": true, - "code": "Fuel*3", - "name": "Fuel*3", + "code": "AGM-65K*4,AIM-7M*4,Fuel*3", + "name": "AGM-65K*4,AIM-7M*4,Fuel*3", "roles": [ - "FAC-A" + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM45*2_AGM-65D*4_AIM7*2_ECM", + "name": "AGM45*2_AGM-65D*4_AIM7*2_ECM", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "LAU-7 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-9*4,AIM-7*4", + "name": "AIM-9*4,AIM-7*4", + "roles": [ + "CAP" ] }, { @@ -11103,6 +10949,138 @@ "CAP" ] }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "F-4 Fuel tank-C", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel*3", + "name": "Fuel*3", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-10*2,AIM-7*2,Fuel*2,ECM", + "name": "GBU-10*2,AIM-7*2,Fuel*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-12*2,AIM-7*2,Fuel*2,ECM", + "name": "GBU-12*2,AIM-7*2,Fuel*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MER6 with 6 x Mk-82 - 500lb GP Bombs LD", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-82*18,AIM-7*2,ECM", + "name": "Mk-82*18,AIM-7*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-82*6,AIM-7*2,Fuel*2,ECM", + "name": "Mk-82*6,AIM-7*2,Fuel*2,ECM", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -11125,6 +11103,28 @@ "Strike" ] }, + { + "items": [ + { + "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", + "quantity": 4 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk20*12,AIM-7*2,ECM", + "name": "Mk20*12,AIM-7*2,ECM", + "roles": [ + "CAS" + ] + }, { "items": [ { @@ -11132,23 +11132,23 @@ "quantity": 2 }, { - "name": "LAU-88 with 2 x AGM-65K - Maverick K (CCD Imp ASM)", + "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", "quantity": 2 }, { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 + "name": "ALQ-131 - ECM Pod", + "quantity": 1 }, { - "name": "F-4 Fuel tank-C", - "quantity": 1 + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 } ], "enabled": true, - "code": "AGM-65K*4,AIM-7M*4,Fuel*3", - "name": "AGM-65K*4,AIM-7M*4,Fuel*3", + "code": "Mk20*6,AIM-7*2,Fuel*2,ECM", + "name": "Mk20*6,AIM-7*2,Fuel*2,ECM", "roles": [ - "Antiship Strike" + "CAS" ] } ], @@ -11190,12 +11190,110 @@ "shortLabel": "5", "loadouts": [ { - "items": [], + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "AIM-9B*2", + "name": "AIM-9B*2", "roles": [ - "No task", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9B*2, Fuel 150", + "name": "AIM-9B*2, Fuel 150", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9B*2, Fuel 150*3", + "name": "AIM-9B*2, Fuel 150*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9B*2, Fuel 275", + "name": "AIM-9B*2, Fuel 275", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9B*2, Fuel 275*3", + "name": "AIM-9B*2, Fuel 275*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9P*2", + "name": "AIM-9P*2", + "roles": [ + "CAP", "CAP" ] }, @@ -11206,8 +11304,43 @@ "quantity": 2 }, { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 + "name": "F-5 150Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9P*2, Fuel 150", + "name": "AIM-9P*2, Fuel 150", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9P*2, Fuel 150*3", + "name": "AIM-9P*2, Fuel 150*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 }, { "name": "F-5 275Gal Fuel tank", @@ -11215,11 +11348,11 @@ } ], "enabled": true, - "code": "Mk-82LD*4,AIM-9P*2,Fuel 275", - "name": "Mk-82LD*4,AIM-9P*2,Fuel 275", + "code": "AIM-9P*2, Fuel 275", + "name": "AIM-9P*2, Fuel 275", "roles": [ - "CAS", - "Strike" + "CAP", + "CAP" ] }, { @@ -11247,38 +11380,32 @@ { "name": "AIM-9P5 Sidewinder IR AAM", "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 3 } ], "enabled": true, - "code": "AIM-9P5*2, Fuel 275*3", - "name": "AIM-9P5*2, Fuel 275*3", + "code": "AIM-9P5*2", + "name": "AIM-9P5*2", "roles": [ "CAP", - "Escort", "CAP" ] }, { "items": [ { - "name": "AIM-9P Sidewinder IR AAM", + "name": "AIM-9P5 Sidewinder IR AAM", "quantity": 2 }, { "name": "F-5 150Gal Fuel tank", - "quantity": 3 + "quantity": 1 } ], "enabled": true, - "code": "AIM-9P*2, Fuel 150*3", - "name": "AIM-9P*2, Fuel 150*3", + "code": "AIM-9P5*2, Fuel 150", + "name": "AIM-9P5*2, Fuel 150", "roles": [ "CAP", - "Escort", "CAP" ] }, @@ -11305,24 +11432,82 @@ { "items": [ { - "name": "AIM-9P Sidewinder IR AAM", + "name": "AIM-9P5 Sidewinder IR AAM", "quantity": 2 }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 4 - }, { "name": "F-5 275Gal Fuel tank", "quantity": 1 } ], "enabled": true, - "code": "Mk-82SE*4,AIM-9P*2,Fuel 275", - "name": "Mk-82SE*4,AIM-9P*2,Fuel 275", + "code": "AIM-9P5*2, Fuel 275", + "name": "AIM-9P5*2, Fuel 275", "roles": [ - "CAS", - "Strike" + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P5 Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9P5*2, Fuel 275*3", + "name": "AIM-9P5*2, Fuel 275*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AN/ASQ-T50 TCTS Pod - ACMI Pod", + "quantity": 1 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AN/ASQ-T50, AIM-9P, Fuel 150", + "name": "AN/ASQ-T50, AIM-9P, Fuel 150", + "roles": [] + }, + { + "items": [ + { + "name": "AIM-9P5 Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 4 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Antiship Mk82", + "name": "Antiship Mk82", + "roles": [ + "Antiship Strike" ] }, { @@ -11348,6 +11533,85 @@ "Strike" ] }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "CBU-52B - 220 x HE/Frag bomblets", + "quantity": 5 + } + ], + "enabled": true, + "code": "CBU-52B*5,AIM-9*2", + "name": "CBU-52B*5,AIM-9*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-12*4,AIM-9P*2,Fuel 275", + "name": "GBU-12*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 1 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 2 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", + "name": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", + "roles": [ + "CAS", + "Strike" + ] + }, { "items": [ { @@ -11394,6 +11658,33 @@ "Strike" ] }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 1 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 2 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", + "name": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", + "roles": [ + "CAS", + "Strike" + ] + }, { "items": [ { @@ -11470,17 +11761,13 @@ "quantity": 2 }, { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 + "name": "M117 - 750lb GP Bomb LD", + "quantity": 5 } ], "enabled": true, - "code": "GBU-12*4,AIM-9P*2,Fuel 275", - "name": "GBU-12*4,AIM-9P*2,Fuel 275", + "code": "M-117*5,AIM-9*2", + "name": "M-117*5,AIM-9*2", "roles": [ "CAS", "Strike" @@ -11493,13 +11780,17 @@ "quantity": 2 }, { - "name": "CBU-52B - 220 x HE/Frag bomblets", - "quantity": 5 + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 4 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 } ], "enabled": true, - "code": "CBU-52B*5,AIM-9*2", - "name": "CBU-52B*5,AIM-9*2", + "code": "Mk-82LD*4,AIM-9P*2,Fuel 275", + "name": "Mk-82LD*4,AIM-9P*2,Fuel 275", "roles": [ "CAS", "Strike" @@ -11524,25 +11815,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 5 - } - ], - "enabled": true, - "code": "Mk-82SE*5,AIM-9*2", - "name": "Mk-82SE*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, { "items": [ { @@ -11570,6 +11842,48 @@ "Strike" ] }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 4 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82SE*4,AIM-9P*2,Fuel 275", + "name": "Mk-82SE*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 5 + } + ], + "enabled": true, + "code": "Mk-82SE*5,AIM-9*2", + "name": "Mk-82SE*5,AIM-9*2", + "roles": [ + "CAS", + "Strike" + ] + }, { "items": [ { @@ -11596,320 +11910,6 @@ "CAS", "Strike" ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "name": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "name": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "M117 - 750lb GP Bomb LD", - "quantity": 5 - } - ], - "enabled": true, - "code": "M-117*5,AIM-9*2", - "name": "M-117*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 275", - "name": "AIM-9P*2, Fuel 275", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 150", - "name": "AIM-9P*2, Fuel 150", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 275", - "name": "AIM-9P5*2, Fuel 275", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 150", - "name": "AIM-9P5*2, Fuel 150", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 275", - "name": "AIM-9B*2, Fuel 275", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 150", - "name": "AIM-9B*2, Fuel 150", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 275*3", - "name": "AIM-9B*2, Fuel 275*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 150*3", - "name": "AIM-9B*2, Fuel 150*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AN/ASQ-T50 TCTS Pod - ACMI Pod", - "quantity": 1 - }, - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AN/ASQ-T50, AIM-9P, Fuel 150", - "name": "AN/ASQ-T50, AIM-9P, Fuel 150", - "roles": [] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9B*2", - "name": "AIM-9B*2", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9P*2", - "name": "AIM-9P*2", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9P5*2", - "name": "AIM-9P5*2", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Antiship Mk82", - "name": "Antiship Mk82", - "roles": [ - "Antiship Strike" - ] } ], "liveryID": [ @@ -12367,16 +12367,6 @@ "era": "Early Cold War", "shortLabel": "86", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, { "items": [ { @@ -12391,20 +12381,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - } - ], - "enabled": true, - "code": "200gal Fuel*2", - "name": "200gal Fuel*2", - "roles": [ - "CAP" - ] - }, { "items": [ { @@ -12423,23 +12399,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "LAU-7 with AIM-9B Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "GAR-8*2", - "name": "GAR-8*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, { "items": [ { @@ -12464,17 +12423,34 @@ { "items": [ { - "name": "2 x HVAR, UnGd Rkts", - "quantity": 8 + "name": "Fuel Tank 200 gallons", + "quantity": 2 } ], "enabled": true, - "code": "HVAR*16", - "name": "HVAR*16", + "code": "200gal Fuel*2", + "name": "200gal Fuel*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 200 gallons", + "quantity": 2 + }, + { + "name": "AN-M64 - 500lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "200gal Fuel*2, AN-M64*2", + "name": "200gal Fuel*2, AN-M64*2", "roles": [ - "Strike", "CAS", - "Antiship Strike" + "Strike" ] }, { @@ -12512,23 +12488,47 @@ "Antiship Strike" ] }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, { "items": [ { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - }, - { - "name": "AN-M64 - 500lb GP Bomb LD", + "name": "LAU-7 with AIM-9B Sidewinder IR AAM", "quantity": 2 } ], "enabled": true, - "code": "200gal Fuel*2, AN-M64*2", - "name": "200gal Fuel*2, AN-M64*2", + "code": "GAR-8*2", + "name": "GAR-8*2", "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "2 x HVAR, UnGd Rkts", + "quantity": 8 + } + ], + "enabled": true, + "code": "HVAR*16", + "name": "HVAR*16", + "roles": [ + "Strike", "CAS", - "Strike" + "Antiship Strike" ] }, { @@ -12720,16 +12720,6 @@ "label": "F/A-18C", "shortLabel": "18", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, { "items": [ { @@ -12737,93 +12727,27 @@ "quantity": 2 }, { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 + "name": "AGM-84D Harpoon AShM", + "quantity": 4 }, { - "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", - "quantity": 2 + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 }, { "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 3 + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 } ], "enabled": true, - "code": "AIM-9M*6, AIM-7M*2, FUEL*3", - "name": "AIM-9M*6, AIM-7M*2, FUEL*3", + "code": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", + "name": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*6, AIM-7M*2, FUEL*2", - "name": "AIM-9M*6, AIM-7M*2, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-84*2, FUEL*2", - "name": "AIM-9M*2, MK-84*2, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-83*4, FUEL*2", - "name": "AIM-9M*2, MK-83*4, FUEL*2", - "roles": [ - "Strike" + "Antiship Strike" ] }, { @@ -12835,12 +12759,40 @@ { "name": "FPU-8A Fuel Tank 330 gallons", "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 } ], "enabled": true, - "code": "Carrier Landing", - "name": "Carrier Landing", - "roles": [] + "code": "AIM-9M*2, AIM-7M*2, FUEL*1", + "name": "AIM-9M*2, AIM-7M*2, FUEL*1", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, AIM-7M*2, FUEL*2", + "name": "AIM-9M*2, AIM-7M*2, FUEL*2", + "roles": [ + "Escort" + ] }, { "items": [ @@ -12868,6 +12820,50 @@ "CAP" ] }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M*2, ATFLIR, FUEL", + "name": "AIM-9M*2, ATFLIR, FUEL", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M*2, ATFLIR, FUEL*2", + "name": "AIM-9M*2, ATFLIR, FUEL*2", + "roles": [ + "Reconnaissance" + ] + }, { "items": [ { @@ -12901,15 +12897,37 @@ "quantity": 2 }, { - "name": "BRU-33 with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", + "name": "BRU-33 with 2 x LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", "quantity": 2 } ], "enabled": true, - "code": "AIM-9M*2, MK-82SE*4, FUEL*2", - "name": "AIM-9M*2, MK-82SE*4, FUEL*2", + "code": "AIM-9M*2, LAU-61*4, FUEL*2", + "name": "AIM-9M*2, LAU-61*4, FUEL*2", "roles": [ - "CAS" + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, LAU-68*4, FUEL*2", + "name": "AIM-9M*2, LAU-68*4, FUEL*2", + "roles": [ + "Strike" ] }, { @@ -12967,15 +12985,15 @@ "quantity": 2 }, { - "name": "AIM-7M Sparrow Semi-Active Radar", + "name": "BRU-33 with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", "quantity": 2 } ], "enabled": true, - "code": "AIM-9M*2, AIM-7M*2, FUEL*2", - "name": "AIM-9M*2, AIM-7M*2, FUEL*2", + "code": "AIM-9M*2, MK-82SE*4, FUEL*2", + "name": "AIM-9M*2, MK-82SE*4, FUEL*2", "roles": [ - "Escort" + "CAS" ] }, { @@ -13000,6 +13018,50 @@ "Strike" ] }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, MK-83*4, FUEL*2", + "name": "AIM-9M*2, MK-83*4, FUEL*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, MK-84*2, FUEL*2", + "name": "AIM-9M*2, MK-84*2, FUEL*2", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -13029,61 +13091,21 @@ "quantity": 2 }, { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, LAU-61*4, FUEL*2", - "name": "AIM-9M*2, LAU-61*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", + "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", "quantity": 2 }, { "name": "FPU-8A Fuel Tank 330 gallons", "quantity": 2 }, - { - "name": "BRU-33 with 2 x LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, LAU-68*4, FUEL*2", - "name": "AIM-9M*2, LAU-68*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, { "name": "AIM-7M Sparrow Semi-Active Radar", "quantity": 2 } ], "enabled": true, - "code": "AIM-9M*2, AIM-7M*2, FUEL*1", - "name": "AIM-9M*2, AIM-7M*2, FUEL*1", + "code": "AIM-9M*6, AIM-7M*2, FUEL*2", + "name": "AIM-9M*6, AIM-7M*2, FUEL*2", "roles": [ "CAP" ] @@ -13091,45 +13113,15 @@ { "items": [ { - "name": "AIM-9X Sidewinder IR AAM", + "name": "AIM-9M Sidewinder IR AAM", "quantity": 2 }, { - "name": "GBU-31(V)4/B - JDAM, 2000lb GPS Guided Penetrator Bomb", - "quantity": 4 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", - "name": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", + "name": "AIM-7M Sparrow Semi-Active Radar", "quantity": 2 }, { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "LAU-115 with 2 x LAU-127 AIM-120C AMRAAM - Active Radar AAM", + "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", "quantity": 2 }, { @@ -13138,11 +13130,9 @@ } ], "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*6, FUEL*3", - "name": "AIM-9X*2, AIM-120C-5*6, FUEL*3", + "code": "AIM-9M*6, AIM-7M*2, FUEL*3", + "name": "AIM-9M*6, AIM-7M*2, FUEL*3", "roles": [ - "CAP", - "CAP", "CAP" ] }, @@ -13183,23 +13173,61 @@ "quantity": 2 }, { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "name": "AGM-84H SLAM-ER (Expanded Response)", "quantity": 2 }, { "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + }, + { + "name": "AWW-13 DATALINK POD", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", "quantity": 1 } ], "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", - "name": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", + "code": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", + "name": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", "roles": [ - "SEAD" + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-31(V)4/B - JDAM, 2000lb GPS Guided Penetrator Bomb", + "quantity": 4 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", + "name": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", + "roles": [ + "Runway Attack" ] }, { @@ -13243,61 +13271,51 @@ "quantity": 2 }, { - "name": "AGM-84H SLAM-ER (Expanded Response)", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "AWW-13 DATALINK POD", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", - "name": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-84D Harpoon AShM", + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", "quantity": 4 }, { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 }, { "name": "FPU-8A Fuel Tank 330 gallons", "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", + "name": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 }, { "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 + "quantity": 2 + }, + { + "name": "LAU-115 with 2 x LAU-127 AIM-120C AMRAAM - Active Radar AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 3 } ], "enabled": true, - "code": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", - "name": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", + "code": "AIM-9X*2, AIM-120C-5*6, FUEL*3", + "name": "AIM-9X*2, AIM-120C-5*6, FUEL*3", "roles": [ - "Antiship Strike" + "CAP", + "CAP", + "CAP" ] }, { @@ -13309,39 +13327,21 @@ { "name": "FPU-8A Fuel Tank 330 gallons", "quantity": 1 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 } ], "enabled": true, - "code": "AIM-9M*2, ATFLIR, FUEL", - "name": "AIM-9M*2, ATFLIR, FUEL", - "roles": [ - "FAC-A" - ] + "code": "Carrier Landing", + "name": "Carrier Landing", + "roles": [] }, { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - } - ], + "items": [], "enabled": true, - "code": "AIM-9M*2, ATFLIR, FUEL*2", - "name": "AIM-9M*2, ATFLIR, FUEL*2", + "code": "", + "name": "Empty loadout", "roles": [ - "Reconnaissance" + "No task", + "CAP" ] } ], @@ -13866,7 +13866,7 @@ }, "type": "Aircraft", "description": "2 Jet engine, swept wing, 1 crew, fighter and strike. Hornet", - "abilities": "Drogue AAR", + "abilities": "Drogue AAR, Carrier", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": true, @@ -13875,46 +13875,10 @@ "FW-190A8": { "name": "FW-190A8", "coalition": "red", - "label": "FW-190A8 Bosch", + "label": "FW-190A8 Würger", "era": "WW2", - "shortLabel": "190A8", + "shortLabel": "190", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": null, - "quantity": 1 - } - ], - "enabled": true, - "code": "Without pylon", - "name": "Without pylon", - "roles": [] - }, - { - "items": [ - { - "name": "4 x SC 50 - 50kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 50 * 4", - "name": "SC 50 * 4", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -13960,13 +13924,35 @@ { "items": [ { - "name": "SC 250 Type 1 L2 - 250kg GP Bomb LD", + "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", + "quantity": 2 + } + ], + "enabled": true, + "code": "BR 21", + "name": "BR 21", + "roles": [] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "300 liter Fuel Tank", "quantity": 1 } ], "enabled": true, - "code": "SC 250 L2", - "name": "SC 250 L2", + "code": "Fuel Tank 300 liters", + "name": "Fuel Tank 300 liters", "roles": [ "Strike" ] @@ -13985,6 +13971,34 @@ "Strike" ] }, + { + "items": [ + { + "name": "SC 250 Type 1 L2 - 250kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC 250 L2", + "name": "SC 250 L2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "4 x SC 50 - 50kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC 50 * 4", + "name": "SC 50 * 4", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -14044,27 +14058,13 @@ { "items": [ { - "name": "300 liter Fuel Tank", + "name": null, "quantity": 1 } ], "enabled": true, - "code": "Fuel Tank 300 liters", - "name": "Fuel Tank 300 liters", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", - "quantity": 2 - } - ], - "enabled": true, - "code": "BR 21", - "name": "BR 21", + "code": "Without pylon", + "name": "Without pylon", "roles": [] } ], @@ -14230,7 +14230,7 @@ } }, "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Shrike", + "description": "Single propellor, straight wing, 1 crew. Würger ", "abilities": "", "acquisitionRange": "", "engagementRange": "", @@ -14240,10 +14240,27 @@ "FW-190D9": { "name": "FW-190D9", "coalition": "red", - "label": "FW-190D9 Jerry", + "label": "FW-190D9 Dora", "era": "WW2", - "shortLabel": "190D9", + "shortLabel": "190", "loadouts": [ + { + "items": [ + { + "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", + "quantity": 2 + } + ], + "enabled": true, + "code": "BR 21", + "name": "BR 21", + "roles": [ + "CAP", + "CAP", + "Strike", + "CAS" + ] + }, { "items": [], "enabled": true, @@ -14254,23 +14271,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "SC 500 J - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC500", - "name": "SC500", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - }, { "items": [ { @@ -14307,18 +14307,18 @@ { "items": [ { - "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", - "quantity": 2 + "name": "SC 500 J - 500kg GP Bomb LD", + "quantity": 1 } ], "enabled": true, - "code": "BR 21", - "name": "BR 21", + "code": "SC500", + "name": "SC500", "roles": [ - "CAP", - "CAP", - "Strike", - "CAS" + "Runway Attack", + "CAS", + "Antiship Strike", + "Strike" ] } ], @@ -14388,7 +14388,7 @@ } }, "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Shrike", + "description": "Single propellor, straight wing, 1 crew. Dora", "abilities": "", "acquisitionRange": "", "engagementRange": "", @@ -14398,62 +14398,10 @@ "H-6J": { "name": "H-6J", "coalition": "red", - "label": "H-6J Badger", + "label": "H-6 J Badger", "era": "Mid Cold War", "shortLabel": "H6", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "YJ-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "YJ-12 x 2", - "name": "YJ-12 x 2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "YJ-12", - "quantity": 4 - } - ], - "enabled": true, - "code": "YJ-12 x 4", - "name": "YJ-12 x 4", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "YJ-83K", - "quantity": 6 - } - ], - "enabled": true, - "code": "YJ-83K x 6", - "name": "YJ-83K x 6", - "roles": [ - "Antiship Strike" - ] - }, { "items": [ { @@ -14496,20 +14444,26 @@ "Strike" ] }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Antiship Strike" + ] + }, { "items": [ { - "name": "KD-63", + "name": "KD-20", "quantity": 4 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 } ], "enabled": true, - "code": "KD-63 x 4", - "name": "KD-63 x 4", + "code": "KD-20 x 4", + "name": "KD-20 x 4", "roles": [ "Strike" ] @@ -14530,14 +14484,22 @@ }, { "items": [ + { + "name": "KD-63", + "quantity": 2 + }, + { + "name": "DATA-LINK POD", + "quantity": 1 + }, { "name": "KD-20", - "quantity": 4 + "quantity": 2 } ], "enabled": true, - "code": "KD-20 x 4", - "name": "KD-20 x 4", + "code": "KD-63 x 2, KD-20 x 2", + "name": "KD-63 x 2, KD-20 x 2", "roles": [ "Strike" ] @@ -14568,22 +14530,60 @@ "items": [ { "name": "KD-63", - "quantity": 2 + "quantity": 4 }, { "name": "DATA-LINK POD", "quantity": 1 - }, + } + ], + "enabled": true, + "code": "KD-63 x 4", + "name": "KD-63 x 4", + "roles": [ + "Strike" + ] + }, + { + "items": [ { - "name": "KD-20", + "name": "YJ-12", "quantity": 2 } ], "enabled": true, - "code": "KD-63 x 2, KD-20 x 2", - "name": "KD-63 x 2, KD-20 x 2", + "code": "YJ-12 x 2", + "name": "YJ-12 x 2", "roles": [ - "Strike" + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "YJ-12", + "quantity": 4 + } + ], + "enabled": true, + "code": "YJ-12 x 4", + "name": "YJ-12 x 4", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "YJ-83K", + "quantity": 6 + } + ], + "enabled": true, + "code": "YJ-83K x 6", + "name": "YJ-83K x 6", + "roles": [ + "Antiship Strike" ] } ], @@ -14612,29 +14612,20 @@ "era": "WW2", "shortLabel": "I16", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, { "items": [ { - "name": "RS-82", - "quantity": 6 + "name": "I-16 External Fuel Tank", + "quantity": 2 } ], "enabled": true, - "code": "6xRS-82", - "name": "6xRS-82", + "code": "2xDropTank-93L", + "name": "2xDropTank-93L", "roles": [ - "CAS", - "Strike" + "CAP", + "Reconnaissance", + "Escort" ] }, { @@ -14657,15 +14648,11 @@ { "name": "RS-82", "quantity": 6 - }, - { - "name": "FAB-100SV", - "quantity": 2 } ], "enabled": true, - "code": "6xRS-82, 2xFAB-100", - "name": "6xRS-82, 2xFAB-100", + "code": "6xRS-82", + "name": "6xRS-82", "roles": [ "CAS", "Strike" @@ -14693,17 +14680,30 @@ { "items": [ { - "name": "I-16 External Fuel Tank", + "name": "RS-82", + "quantity": 6 + }, + { + "name": "FAB-100SV", "quantity": 2 } ], "enabled": true, - "code": "2xDropTank-93L", - "name": "2xDropTank-93L", + "code": "6xRS-82, 2xFAB-100", + "name": "6xRS-82, 2xFAB-100", "roles": [ - "CAP", - "Reconnaissance", - "Escort" + "CAS", + "Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" ] } ], @@ -14865,7 +14865,7 @@ }, "type": "Aircraft", "description": "4 jet engine, swept wing, 5 crew. Cargo and passenger aircraft. NATO reporting name: Candid", - "abilities": "", + "abilities": "AEW", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -14938,8 +14938,86 @@ "coalition": "red", "label": "J-11A Flaming Dragon", "era": "Modern", - "shortLabel": "11", + "shortLabel": "J11", "loadouts": [ + { + "items": [ + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x B-8M1 - 20 S-8KOM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*S8-KOMx2, R-73x2, ECM", + "name": "2*S8-KOMx2, R-73x2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x B-8M1 - 20 S-8OFP2", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*S8-OFP2x2, R-73x2, ECM", + "name": "2*S8-OFP2x2, R-73x2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 6 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500ShPx6,R-73x2,ECM", + "name": "BetAB-500ShPx6,R-73x2,ECM", + "roles": [ + "Runway Attack" + ] + }, { "items": [], "enabled": true, @@ -14976,6 +15054,76 @@ "Strike" ] }, + { + "items": [ + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", + "quantity": 3 + } + ], + "enabled": true, + "code": "FAB-250x18,R-73x2,ECM", + "name": "FAB-250x18,R-73x2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "2 x FAB-250", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250x4, 2*FAB-250x2, R-73x2", + "name": "FAB-250x4, 2*FAB-250x2, R-73x2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "2 x FAB-500", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250x4, 2*FAB-500x2, R-73x2", + "name": "FAB-250x4, 2*FAB-500x2, R-73x2", + "roles": [ + "CAS" + ] + }, { "items": [ { @@ -15043,13 +15191,265 @@ "quantity": 2 }, { - "name": "2 x B-8M1 - 20 S-8KOM", + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", "quantity": 2 }, { - "name": "FAB-250 - 250kg GP Bomb LD", + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", "quantity": 4 }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-27ERx4,R-27ETx2,R-73x2,ECM", + "name": "R-27ERx4,R-27ETx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-27ERx6,R-73x2,ECM", + "name": "R-27ERx6,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-27ETx2,R-27ERx4,R-73x2,ECM", + "name": "R-27ETx2,R-27ERx4,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73x4,ECM", + "name": "R-73x4,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", + "name": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-77x2,R-27ETx2,R-73x2,ECM", + "name": "R-77x2,R-27ETx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-77x4,R-27ERx2,R-73x2,ECM", + "name": "R-77x4,R-27ERx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-77x4,R-27ETx2,R-73x2,ECM", + "name": "R-77x4,R-27ETx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 6 + }, { "name": "RKL609 ECM Pod (Right)", "quantity": 1 @@ -15060,10 +15460,56 @@ } ], "enabled": true, - "code": "S-8KOMx80,FAB-250x4,R-73x2,ECM", - "name": "S-8KOMx80,FAB-250x4,R-73x2,ECM", + "code": "R-77x6,R-73x2,ECM", + "name": "R-77x6,R-73x2,ECM", "roles": [ - "Strike" + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-77x6,R-73x4", + "name": "R-77x6,R-73x4", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + }, + { + "name": "RBK-250-275 - 150 x AO-1SCh, 250kg CBU HE/Frag", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", + "name": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", + "roles": [ + "CAS" ] }, { @@ -15134,339 +15580,7 @@ "quantity": 2 }, { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-27ERx4,R-27ETx2,R-73x2,ECM", - "name": "R-27ERx4,R-27ETx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77x6,R-73x2,ECM", - "name": "R-77x6,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-27ERx6,R-73x2,ECM", - "name": "R-27ERx6,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77x4,R-27ETx2,R-73x2,ECM", - "name": "R-77x4,R-27ETx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-77x4,R-27ERx2,R-73x2,ECM", - "name": "R-77x4,R-27ERx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 6 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500ShPx6,R-73x2,ECM", - "name": "BetAB-500ShPx6,R-73x2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73x4,ECM", - "name": "R-73x4,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77x2,R-27ETx2,R-73x2,ECM", - "name": "R-77x2,R-27ETx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-77x6,R-73x4", - "name": "R-77x6,R-73x4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", - "name": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-27ETx2,R-27ERx4,R-73x2,ECM", - "name": "R-27ETx2,R-27ERx4,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8TsM", + "name": "2 x B-8M1 - 20 S-8KOM", "quantity": 2 }, { @@ -15483,8 +15597,8 @@ } ], "enabled": true, - "code": "S-8TsMx80,FAB-250x4,R-73x2,ECM", - "name": "S-8TsMx80,FAB-250x4,R-73x2,ECM", + "code": "S-8KOMx80,FAB-250x4,R-73x2,ECM", + "name": "S-8KOMx80,FAB-250x4,R-73x2,ECM", "roles": [ "Strike" ] @@ -15521,6 +15635,18 @@ }, { "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x B-8M1 - 20 S-8TsM", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, { "name": "RKL609 ECM Pod (Right)", "quantity": 1 @@ -15528,140 +15654,14 @@ { "name": "RKL609 ECM Pod (Left)", "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", - "quantity": 3 } ], "enabled": true, - "code": "FAB-250x18,R-73x2,ECM", - "name": "FAB-250x18,R-73x2,ECM", + "code": "S-8TsMx80,FAB-250x4,R-73x2,ECM", + "name": "S-8TsMx80,FAB-250x4,R-73x2,ECM", "roles": [ "Strike" ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8KOM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*S8-KOMx2, R-73x2, ECM", - "name": "2*S8-KOMx2, R-73x2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8OFP2", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*S8-OFP2x2, R-73x2, ECM", - "name": "2*S8-OFP2x2, R-73x2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "2 x FAB-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250x4, 2*FAB-500x2, R-73x2", - "name": "FAB-250x4, 2*FAB-500x2, R-73x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "2 x FAB-250", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250x4, 2*FAB-250x2, R-73x2", - "name": "FAB-250x4, 2*FAB-250x2, R-73x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "RBK-250-275 - 150 x AO-1SCh, 250kg CBU HE/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", - "name": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", - "roles": [ - "CAS" - ] } ], "filename": "su-27.png", @@ -15807,7 +15807,7 @@ "coalition": "red", "label": "JF-17 Thunder", "era": "Modern", - "shortLabel": "17", + "shortLabel": "J17", "loadouts": [ { "items": [], @@ -15821,186 +15821,14 @@ }, { "items": [ - { - "name": "C802AK (DIS)", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C802AKx2, 800L Tank", - "name": "PL-5Ex2, C802AKx2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", - "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, { "name": "PL-5EII", "quantity": 2 } ], "enabled": true, - "code": "PL-5Ex2, 800L Tank, WMD7", - "name": "PL-5Ex2, 800L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GBU-10", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-10x2, WMD7", - "name": "PL-5Ex2, GBU-10x2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", - "name": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", + "code": "PL-5Ex2", + "name": "PL-5Ex2", "roles": [] }, { @@ -16030,25 +15858,17 @@ "quantity": 2 }, { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "CM802AKG (DIS)", + "name": "1100L Tank", "quantity": 2 }, { "name": "WMD7 POD", "quantity": 1 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 } ], "enabled": true, - "code": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", - "name": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", + "code": "PL-5Ex2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, 1100L Tankx2, WMD7", "roles": [] }, { @@ -16058,21 +15878,21 @@ "quantity": 2 }, { - "name": "800L Tank", + "name": "GDJ-II19 - 2 x GBU-12", + "quantity": 2 + }, + { + "name": "WMD7 POD", "quantity": 1 }, { "name": "1100L Tank", "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 } ], "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", - "name": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", + "code": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", + "name": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", "roles": [] }, { @@ -16086,17 +15906,41 @@ "quantity": 1 }, { - "name": "1100L Tank", + "name": "800L Tank", "quantity": 2 }, { - "name": "GBU-12", + "name": "GDJ-II19 - 2 x GBU-12", "quantity": 2 } ], "enabled": true, - "code": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", - "name": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", + "code": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", + "name": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "GDJ-II19 - 2 x GBU-12", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "GB-6", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", + "name": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", "roles": [] }, { @@ -16125,64 +15969,16 @@ }, { "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, 1100L Tankx2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 2 - }, { "name": "WMD7 POD", "quantity": 1 }, { - "name": "LD-10 x 2", - "quantity": 1 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", - "name": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", + "name": "GDJ-II19 - 2 x GBU-12", "quantity": 2 }, { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", + "name": "PL-5EII", "quantity": 2 }, { @@ -16191,8 +15987,8 @@ } ], "enabled": true, - "code": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", + "code": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", + "name": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", "roles": [] }, { @@ -16202,21 +15998,25 @@ "quantity": 2 }, { - "name": "WMD7 POD", + "name": "LD-10 x 2", "quantity": 1 }, { - "name": "1100L Tank", + "name": "SD-10 x 2", + "quantity": 1 + }, + { + "name": "CM802AKG (DIS)", "quantity": 2 }, { - "name": "C-701IR", - "quantity": 2 + "name": "DATA-LINK POD", + "quantity": 1 } ], "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", + "code": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", + "name": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", "roles": [] }, { @@ -16226,21 +16026,25 @@ "quantity": 2 }, { - "name": "WMD7 POD", + "name": "LD-10 x 2", "quantity": 1 }, { - "name": "1100L Tank", + "name": "SD-10 x 2", + "quantity": 1 + }, + { + "name": "GB-6", "quantity": 2 }, { - "name": "GBU-12", - "quantity": 2 + "name": "KG-600", + "quantity": 1 } ], "enabled": true, - "code": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", + "code": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", + "name": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", "roles": [] }, { @@ -16278,17 +16082,17 @@ "quantity": 1 }, { - "name": "1100L Tank", + "name": "GB-6-HE", "quantity": 2 }, { - "name": "LD-10", + "name": "LD-10 x 2", "quantity": 2 } ], "enabled": true, - "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", - "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", + "code": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", + "name": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", "roles": [] }, { @@ -16315,6 +16119,290 @@ "name": "PL-5Ex2, 2*LD-10x2, LS-6x2, SPJ", "roles": [] }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LS-6-100 Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "LS-6-100 Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", + "name": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LS-6-250 Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", + "name": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "LS-6-250 Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", + "name": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", + "name": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", + "name": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 1 + }, + { + "name": "GDJ-II19 - 2 x Mk-82", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", + "name": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "GDJ-II19 - 2 x LAU68 MK5", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Mk5x2, 800L Tank", + "name": "PL-5Ex2, 2*Mk5x2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "GDJ-II19 - 2 x LAU68 MK5", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Mk5x2, Mk-83x3", + "name": "PL-5Ex2, 2*Mk5x2, Mk-83x3", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*SD-10", + "name": "PL-5Ex2, 2*SD-10", + "roles": [] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", + "name": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", + "name": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "SD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*SD-10x2, 800L Tank", + "name": "PL-5Ex2, 2*SD-10x2, 800L Tank", + "roles": [] + }, { "items": [ { @@ -16326,17 +16414,13 @@ "quantity": 1 }, { - "name": "GB-6-HE", - "quantity": 2 - }, - { - "name": "LD-10 x 2", + "name": "SD-10 x 2", "quantity": 2 } ], "enabled": true, - "code": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", - "name": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", + "code": "PL-5Ex2, 2*SD-10x2, SPJ", + "name": "PL-5Ex2, 2*SD-10x2, SPJ", "roles": [] }, { @@ -16345,22 +16429,66 @@ "name": "PL-5EII", "quantity": 2 }, + { + "name": "TYPE-200A Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Type-200Ax2", + "name": "PL-5Ex2, 2*Type-200Ax2", + "roles": [] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2x1100L Tank", + "name": "PL-5Ex2, 2x1100L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, 800L Tank", + "name": "PL-5Ex2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "800L Tank", + "quantity": 2 + }, { "name": "WMD7 POD", "quantity": 1 }, { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "C-701IR", + "name": "PL-5EII", "quantity": 2 } ], "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", + "code": "PL-5Ex2, 800L Tank, WMD7", + "name": "PL-5Ex2, 800L Tank, WMD7", "roles": [] }, { @@ -16369,10 +16497,34 @@ "name": "PL-5EII", "quantity": 2 }, + { + "name": "1100L Tank", + "quantity": 2 + }, { "name": "WMD7 POD", "quantity": 1 }, + { + "name": "BRM-1_90MM", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", + "name": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, { "name": "1100L Tank", "quantity": 2 @@ -16383,104 +16535,8 @@ } ], "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", + "code": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", + "name": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", "roles": [] }, { @@ -16507,6 +16563,30 @@ "name": "PL-5Ex2, C-701 CCDx2, 1100L Tank, WMD7", "roles": [] }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "C-701T", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", + "roles": [] + }, { "items": [ { @@ -16538,25 +16618,41 @@ "quantity": 2 }, { - "name": "C-701IR", - "quantity": 1 - }, - { - "name": "C-701T", + "name": "WMD7 POD", "quantity": 1 }, { "name": "800L Tank", - "quantity": 1 + "quantity": 2 }, { - "name": "LS-6-500", + "name": "C-701T", "quantity": 2 } ], "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", - "name": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", + "code": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", + "name": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701T", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 CCDx2, SPJ", + "name": "PL-5Ex2, C-701 CCDx2, SPJ", "roles": [] }, { @@ -16615,6 +16711,654 @@ "name": "PL-5Ex2, C-701 IR/CCD, GB-6-SFWx2, 800L Tank", "roles": [] }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", + "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", + "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", + "name": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", + "name": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 1 + }, + { + "name": "C-701T", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "LS-6-500", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", + "name": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "C802AK (DIS)", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C802AKx2, 800L Tank", + "name": "PL-5Ex2, C802AKx2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "GBU-10", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, GBU-10x2, WMD7", + "name": "PL-5Ex2, GBU-10x2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "GBU-12", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", + "name": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "GBU-12", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "BRM-1_90MM", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "GBU-16", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", + "name": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", + "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LS-6-500", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "LS-6-500", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "GB-6", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", + "name": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 3 + } + ], + "enabled": true, + "code": "PL-5Ex2, Mk-84x3", + "name": "PL-5Ex2, Mk-84x3", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2", + "name": "PL-5Ex2, SD-10x2", + "roles": [] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", + "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, 2x1100L Tank", + "name": "PL-5Ex2, SD-10x2, 2x1100L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, 800L Tank", + "name": "PL-5Ex2, SD-10x2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, SPJ", + "name": "PL-5Ex2, SD-10x2, SPJ", + "roles": [] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", + "name": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, SPJ", + "name": "PL-5Ex2, SPJ", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "TYPE-200A", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, Type-200Ax2", + "name": "PL-5Ex2, Type-200Ax2", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "UG_90MM", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, Unguided 90mmx2, 800L Tank", + "name": "PL-5Ex2, Unguided 90mmx2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, WMD7", + "name": "PL-5Ex2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "LD-10 x 2", + "quantity": 1 + }, + { + "name": "KG-600", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", + "name": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "CM802AKG (DIS)", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "DATA-LINK POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", + "name": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", + "roles": [] + }, { "items": [ { @@ -16670,750 +17414,6 @@ "code": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, GBU-12", "name": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, GBU-12", "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 3 - }, - { - "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", - "name": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "PL-5Ex2, Mk-84x3", - "name": "PL-5Ex2, Mk-84x3", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x LAU68 MK5", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk5x2, 800L Tank", - "name": "PL-5Ex2, 2*Mk5x2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "UG_90MM", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, Unguided 90mmx2, 800L Tank", - "name": "PL-5Ex2, Unguided 90mmx2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 3 - }, - { - "name": "GDJ-II19 - 2 x LAU68 MK5", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk5x2, Mk-83x3", - "name": "PL-5Ex2, 2*Mk5x2, Mk-83x3", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "BRM-1_90MM", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", - "name": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2x1100L Tank", - "name": "PL-5Ex2, 2x1100L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 2x1100L Tank", - "name": "PL-5Ex2, SD-10x2, 2x1100L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", - "name": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 800L Tank", - "name": "PL-5Ex2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 800L Tank", - "name": "PL-5Ex2, SD-10x2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, 800L Tank", - "name": "PL-5Ex2, 2*SD-10x2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, SPJ", - "name": "PL-5Ex2, SD-10x2, SPJ", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, SPJ", - "name": "PL-5Ex2, SPJ", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, SPJ", - "name": "PL-5Ex2, 2*SD-10x2, SPJ", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2", - "name": "PL-5Ex2", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2", - "name": "PL-5Ex2, SD-10x2", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10", - "name": "PL-5Ex2, 2*SD-10", - "roles": [] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", - "name": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", - "roles": [] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", - "name": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", - "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "BRM-1_90MM", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GBU-16", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", - "name": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7", - "name": "PL-5Ex2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 1 - }, - { - "name": "GB-6", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", - "name": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, SPJ", - "name": "PL-5Ex2, C-701 CCDx2, SPJ", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 1 - }, - { - "name": "CM802AKG (DIS)", - "quantity": 2 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", - "name": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", - "roles": [] - }, - { - "items": [ - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "GDJ-II19 - 2 x Mk-82", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", - "name": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", - "roles": [] - }, - { - "items": [ - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "LS-6-500", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GB-6", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", - "name": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "LS-6-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GB-6", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "TYPE-200A Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Type-200Ax2", - "name": "PL-5Ex2, 2*Type-200Ax2", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "TYPE-200A", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, Type-200Ax2", - "name": "PL-5Ex2, Type-200Ax2", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "LS-6-250 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LS-6-250 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", - "name": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LS-6-100 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "LS-6-100 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", - "roles": [] } ], "filename": "jf-17.png", @@ -17567,7 +17567,7 @@ "coalition": "blue", "label": "KC-135 Stratotanker", "era": "Early Cold War", - "shortLabel": "35", + "shortLabel": "135", "loadouts": [ { "items": [], @@ -17609,7 +17609,7 @@ "coalition": "blue", "label": "KC-135 MPRS Stratotanker", "era": "Early Cold War", - "shortLabel": "35M", + "shortLabel": "135M", "loadouts": [ { "items": [], @@ -17640,7 +17640,7 @@ }, "type": "Aircraft", "description": "4 jet engine, swept wing, 3 crew. Tanker aircraft. Stratotanker", - "abilities": "Tanker, Drogue AAR", + "abilities": "Tanker, Drogue AAR, MPRS", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -17651,7 +17651,7 @@ "coalition": "red", "label": "L-39ZA", "era": "Mid Cold War", - "shortLabel": "39", + "shortLabel": "L39", "loadouts": [ { "items": [], @@ -17663,6 +17663,211 @@ "CAS" ] }, + { + "items": [ + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100x2", + "name": "FAB-100x2", + "roles": [ + "Antiship Strike", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel Tank 150 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100x2, PTB-150x2", + "name": "FAB-100x2, PTB-150x2", + "roles": [ + "Antiship Strike", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel Tank 350 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100x2, PTB-350x2", + "name": "FAB-100x2, PTB-350x2", + "roles": [ + "Antiship Strike", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "FAB-100x4", + "name": "FAB-100x4", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", + "quantity": 2 + }, + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "OFAB-100 Jupiter x4, FAB-100x2", + "name": "OFAB-100 Jupiter x4, FAB-100x2", + "roles": [ + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", + "quantity": 4 + } + ], + "enabled": true, + "code": "OFAB-100 Jupiter x8", + "name": "OFAB-100 Jupiter x8", + "roles": [ + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "PK-3 - 7.62mm GPMG", + "quantity": 2 + }, + { + "name": "Fuel Tank 150 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "PK-3x2, PTB-150x2", + "name": "PK-3x2, PTB-150x2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "PK-3 - 7.62mm GPMG", + "quantity": 4 + } + ], + "enabled": true, + "code": "PK-3x4", + "name": "PK-3x4", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-3Sx2", + "name": "R-3Sx2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + }, + { + "name": "PK-3 - 7.62mm GPMG", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-3Sx2, PK-3x2", + "name": "R-3Sx2, PK-3x2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60Mx2", + "name": "R-60Mx2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "PK-3 - 7.62mm GPMG", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60Mx2, PK-3x2", + "name": "R-60Mx2, PK-3x2", + "roles": [ + "CAP" + ] + }, { "items": [ { @@ -17682,12 +17887,16 @@ "items": [ { "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 + "quantity": 2 + }, + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 } ], "enabled": true, - "code": "S-5KOx64", - "name": "S-5KOx64", + "code": "S-5KOx32, FAB-100x2", + "name": "S-5KOx32, FAB-100x2", "roles": [ "CAS", "Strike" @@ -17735,176 +17944,17 @@ "items": [ { "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-5KOx32, FAB-100x2", - "name": "S-5KOx32, FAB-100x2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", - "quantity": 2 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "OFAB-100 Jupiter x4, FAB-100x2", - "name": "OFAB-100 Jupiter x4, FAB-100x2", - "roles": [ - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100x2", - "name": "FAB-100x2", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", "quantity": 4 } ], "enabled": true, - "code": "FAB-100x4", - "name": "FAB-100x4", + "code": "S-5KOx64", + "name": "S-5KOx64", "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", - "quantity": 4 - } - ], - "enabled": true, - "code": "OFAB-100 Jupiter x8", - "name": "OFAB-100 Jupiter x8", - "roles": [ - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel Tank 150 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100x2, PTB-150x2", - "name": "FAB-100x2, PTB-150x2", - "roles": [ - "Antiship Strike", "CAS", "Strike" ] }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel Tank 350 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100x2, PTB-350x2", - "name": "FAB-100x2, PTB-350x2", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 4 - } - ], - "enabled": true, - "code": "PK-3x4", - "name": "PK-3x4", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 2 - }, - { - "name": "Fuel Tank 150 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "PK-3x2, PTB-150x2", - "name": "PK-3x2, PTB-150x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60Mx2", - "name": "R-60Mx2", - "roles": [ - "CAP" - ] - }, { "items": [ { @@ -17918,56 +17968,6 @@ "roles": [ "FAC-A" ] - }, - { - "items": [ - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-3Sx2", - "name": "R-3Sx2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-3Sx2, PK-3x2", - "name": "R-3Sx2, PK-3x2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60Mx2, PK-3x2", - "name": "R-60Mx2, PK-3x2", - "roles": [ - "CAP" - ] } ], "filename": "l-39.png", @@ -18031,50 +18031,8 @@ "coalition": "blue", "label": "M-2000C Mirage", "era": "Late Cold War", - "shortLabel": "M2", + "shortLabel": "2k", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox", - "name": "Fox", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / Magic (QRA)", - "name": "Fox / Magic (QRA)", - "roles": [ - "CAP" - ] - }, { "items": [ { @@ -18089,54 +18047,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "Matra Super 530D", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / S530D / Magic", - "name": "Fox / S530D / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "Matra Super 530D", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - }, - { - "name": "Eclair 16 flares 16 chaffs", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / S530D / Magic / Eclair", - "name": "Fox / S530D / Magic / Eclair", - "roles": [ - "CAP" - ] - }, { "items": [ { @@ -18157,56 +18067,20 @@ "name": "Matra Magic II", "quantity": 2 }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - } - ], - "enabled": true, - "code": "Bravo / Magic", - "name": "Bravo / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ { "name": "RPL 541 2000 liters Fuel Tank ", "quantity": 2 }, { - "name": "RPL 522 1300 liters Fuel Tank", + "name": "AUF2 GBU-12 x 2", "quantity": 1 } ], "enabled": true, - "code": "Kilo", - "name": "Kilo", + "code": "Bravo / 2xGBU-12 / Magic", + "name": "Bravo / 2xGBU-12 / Magic", "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kilo / Magic", - "name": "Kilo / Magic", - "roles": [ - "CAP" + "Strike" ] }, { @@ -18242,15 +18116,15 @@ "quantity": 2 }, { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 4 } ], "enabled": true, - "code": "Bravo / GBU-12 / Magic", - "name": "Bravo / GBU-12 / Magic", + "code": "Bravo / 4xSnakeEye / Magic", + "name": "Bravo / 4xSnakeEye / Magic", "roles": [ - "Strike" + "CAP" ] }, { @@ -18264,13 +18138,35 @@ "quantity": 2 }, { - "name": "AUF2 GBU-12 x 2", + "name": "BAP-100 x 18", "quantity": 1 } ], "enabled": true, - "code": "Bravo / 2xGBU-12 / Magic", - "name": "Bravo / 2xGBU-12 / Magic", + "code": "Bravo / BAP-100 / Magic", + "name": "Bravo / BAP-100 / Magic", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 1 + } + ], + "enabled": true, + "code": "Bravo / GBU-12 / Magic", + "name": "Bravo / GBU-12 / Magic", "roles": [ "Strike" ] @@ -18328,37 +18224,35 @@ { "name": "RPL 541 2000 liters Fuel Tank ", "quantity": 2 - }, - { - "name": "BAP-100 x 18", - "quantity": 1 } ], "enabled": true, - "code": "Bravo / BAP-100 / Magic", - "name": "Bravo / BAP-100 / Magic", + "code": "Bravo / Magic", + "name": "Bravo / Magic", "roles": [ "CAP" ] }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, { "items": [ { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 4 + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 } ], "enabled": true, - "code": "Bravo / 4xSnakeEye / Magic", - "name": "Bravo / 4xSnakeEye / Magic", + "code": "Fox", + "name": "Fox", "roles": [ "CAP" ] @@ -18385,6 +18279,90 @@ "Strike" ] }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fox / Magic (QRA)", + "name": "Fox / Magic (QRA)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "Matra Super 530D", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fox / S530D / Magic", + "name": "Fox / S530D / Magic", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "Matra Super 530D", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + }, + { + "name": "Eclair 16 flares 16 chaffs", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fox / S530D / Magic / Eclair", + "name": "Fox / S530D / Magic / Eclair", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kilo", + "name": "Kilo", + "roles": [ + "CAP" + ] + }, { "items": [ { @@ -18410,6 +18388,28 @@ "roles": [ "Strike" ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kilo / Magic", + "name": "Kilo / Magic", + "roles": [ + "CAP" + ] } ], "filename": "m2000.png", @@ -18529,15 +18529,105 @@ "coalition": "blue", "label": "MB-339A", "era": "Mid Cold War", - "shortLabel": "39", + "shortLabel": "399", "loadouts": [ { - "items": [], + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": null, + "quantity": 6 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "A - 2*320L TipTanks [Clean]", + "name": "A - 2*320L TipTanks [Clean]", + "roles": [ + "Transport" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "Fuel Tank 330lt", + "quantity": 2 + }, + { + "name": null, + "quantity": 3 + } + ], + "enabled": true, + "code": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", + "name": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", + "roles": [ + "Transport" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 HEI Heavy", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + } + ], + "enabled": true, + "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", + "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + } + ], + "enabled": true, + "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", + "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", "roles": [ - "No task", "CAS" ] }, @@ -18578,45 +18668,43 @@ "quantity": 2 }, { - "name": null, + "name": "Mk-82 - 500lb GP Bomb LD", "quantity": 6 } ], "enabled": true, - "code": "A - 2*320L TipTanks [Clean]", - "name": "A - 2*320L TipTanks [Clean]", + "code": "A - 2*320L TipTanks + 6*Mk.82LD", + "name": "A - 2*320L TipTanks + 6*Mk.82LD", "roles": [ - "Transport" + "No task", + "Strike" ] }, { "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "AN/M3 Gunpod Right", - "quantity": 1 - }, - { - "name": "Photo-Recon Pod (4*70mm Vinten Cameras)", - "quantity": 1 - }, { "name": "Fuel Tank 330lt", "quantity": 2 }, { "name": null, + "quantity": 3 + }, + { + "name": "Cylindrical Tip Tank 500lt", "quantity": 2 + }, + { + "name": "Luggage Container", + "quantity": 1 } ], "enabled": true, - "code": "Recon", - "name": "Recon", + "code": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", + "name": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", "roles": [ - "Reconnaissance" + "No task", + "Transport" ] }, { @@ -18626,13 +18714,31 @@ "quantity": 2 }, { - "name": "BRD-4-250 - 4 x Mk 76 - 25lb Practice Bomb LD", + "name": "Matra Type 155 Rocket Pod", + "quantity": 2 + }, + { + "name": "BLG-66-AC Belouga", + "quantity": 2 + }, + { + "name": "AN/M3 Gunpod Right", "quantity": 1 }, { - "name": null, - "quantity": 2 - }, + "name": "AN/M3 Gunpod Left", + "quantity": 1 + } + ], + "enabled": true, + "code": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", + "name": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", + "roles": [ + "Strike" + ] + }, + { + "items": [ { "name": "DEFA553 Gunpod Right", "quantity": 1 @@ -18640,13 +18746,47 @@ { "name": "DEFA553 Gunpod Left", "quantity": 1 + }, + { + "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Cylindrical Tip Tank 500lt", + "quantity": 2 } ], "enabled": true, - "code": "Training", - "name": "Training", + "code": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", + "name": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", "roles": [] }, + { + "items": [ + { + "name": "Cylindrical Tip Tank 500lt", + "quantity": 2 + }, + { + "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", + "quantity": 2 + }, + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 4 + } + ], + "enabled": true, + "code": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", + "name": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -18703,254 +18843,6 @@ "CAS" ] }, - { - "items": [ - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": null, - "quantity": 3 - }, - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "Luggage Container", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", - "name": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", - "roles": [ - "No task", - "Transport" - ] - }, - { - "items": [ - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 4 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", - "name": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": null, - "quantity": 3 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", - "name": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", - "roles": [ - "Transport" - ] - }, - { - "items": [ - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "Matra Type 155 Rocket Pod", - "quantity": 2 - }, - { - "name": "BLG-66-AC Belouga", - "quantity": 2 - }, - { - "name": "AN/M3 Gunpod Right", - "quantity": 1 - }, - { - "name": "AN/M3 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", - "name": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 4 - }, - { - "name": "Matra Type 155 Rocket Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "Runway Interdiction", - "name": "Runway Interdiction", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", - "name": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", - "roles": [] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", - "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 HEI Heavy", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", - "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 6 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 6*Mk.82LD", - "name": "A - 2*320L TipTanks + 6*Mk.82LD", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "14-3-M2 - 6 x BAP-100 - 32kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 6 - } - ], - "enabled": true, - "code": "Runway Interdiction (36*BAP-100)", - "name": "Runway Interdiction (36*BAP-100)", - "roles": [ - "Runway Attack" - ] - }, { "items": [ { @@ -18998,6 +18890,114 @@ "roles": [ "CAS" ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "AN/M3 Gunpod Right", + "quantity": 1 + }, + { + "name": "Photo-Recon Pod (4*70mm Vinten Cameras)", + "quantity": 1 + }, + { + "name": "Fuel Tank 330lt", + "quantity": 2 + }, + { + "name": null, + "quantity": 2 + } + ], + "enabled": true, + "code": "Recon", + "name": "Recon", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", + "quantity": 4 + }, + { + "name": "Matra Type 155 Rocket Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "Runway Interdiction", + "name": "Runway Interdiction", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "14-3-M2 - 6 x BAP-100 - 32kg Concrete Piercing Chute Retarded Bomb w/Booster", + "quantity": 6 + } + ], + "enabled": true, + "code": "Runway Interdiction (36*BAP-100)", + "name": "Runway Interdiction (36*BAP-100)", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Cylindrical Tip Tank 500lt", + "quantity": 2 + }, + { + "name": "BRD-4-250 - 4 x Mk 76 - 25lb Practice Bomb LD", + "quantity": 1 + }, + { + "name": null, + "quantity": 2 + }, + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + } + ], + "enabled": true, + "code": "Training", + "name": "Training", + "roles": [] } ], "filename": "c-101.png", @@ -19087,8 +19087,46 @@ "coalition": "blue", "label": "MQ-9 Reaper", "era": "Modern", - "shortLabel": "9", + "shortLabel": "MQ9", "loadouts": [ + { + "items": [ + { + "name": "M299 - 4 x AGM-114K Hellfire", + "quantity": 2 + }, + { + "name": "AGM-114K * 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-114K*12", + "name": "AGM-114K*12", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "M299 - 4 x AGM-114K Hellfire", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-114K*8,GBU-38*2", + "name": "AGM-114K*8,GBU-38*2", + "roles": [ + "CAS", + "Strike" + ] + }, { "items": [], "enabled": true, @@ -19128,44 +19166,6 @@ "CAS", "Strike" ] - }, - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-114K*8,GBU-38*2", - "name": "AGM-114K*8,GBU-38*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - }, - { - "name": "AGM-114K * 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-114K*12", - "name": "AGM-114K*12", - "roles": [ - "CAS", - "Strike" - ] } ], "filename": "i-16.png", @@ -19217,46 +19217,6 @@ "era": "Early Cold War", "shortLabel": "M15", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "FAB-50 - 50kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*FAB-50", - "name": "2*FAB-50", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100M - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*FAB-100M", - "name": "2*FAB-100M", - "roles": [ - "CAS", - "Strike" - ] - }, { "items": [ { @@ -19299,6 +19259,46 @@ "CAP" ] }, + { + "items": [ + { + "name": "FAB-100M - 100kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*FAB-100M", + "name": "2*FAB-100M", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-50 - 50kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*FAB-50", + "name": "2*FAB-50", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, { "items": [ { @@ -19514,7 +19514,7 @@ "coalition": "red", "label": "MiG-19 Farmer", "era": "Early Cold War", - "shortLabel": "19", + "shortLabel": "M19", "loadouts": [ { "items": [], @@ -19529,39 +19529,69 @@ { "items": [ { - "name": "Fuel Tank 760 liters", + "name": "FAB-100M - 100kg GP Bomb LD", "quantity": 2 } ], "enabled": true, - "code": "PTB-760 x 2", - "name": "PTB-760 x 2", + "code": "FAB-100M x 2", + "name": "FAB-100M x 2", "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" + "CAS", + "Strike" ] }, { "items": [ { - "name": "K-13A", + "name": "FAB-100M - 100kg GP Bomb LD", "quantity": 2 }, { - "name": "Fuel Tank 760 liters", + "name": "ORO-57K - S-5M x 8", "quantity": 2 } ], "enabled": true, - "code": "K-13A x 2, PTB-760 x 2", - "name": "K-13A x 2, PTB-760 x 2", + "code": "FAB-100M x 2, ORO-57K x 2", + "name": "FAB-100M x 2, ORO-57K x 2", "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250 x 2", + "name": "FAB-250 x 2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "ORO-57K - S-5M x 8", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250 x 2, ORO-57K x 2", + "name": "FAB-250 x 2, ORO-57K x 2", + "roles": [ + "CAS", + "Strike" ] }, { @@ -19604,6 +19634,42 @@ "Strike" ] }, + { + "items": [ + { + "name": "K-13A", + "quantity": 2 + }, + { + "name": "Fuel Tank 760 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "K-13A x 2, PTB-760 x 2", + "name": "K-13A x 2, PTB-760 x 2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "ORO-57K - S-5M x 8", + "quantity": 2 + } + ], + "enabled": true, + "code": "ORO-57K x 2", + "name": "ORO-57K x 2", + "roles": [ + "CAS", + "Strike" + ] + }, { "items": [ { @@ -19641,84 +19707,18 @@ { "items": [ { - "name": "ORO-57K - S-5M x 8", + "name": "Fuel Tank 760 liters", "quantity": 2 } ], "enabled": true, - "code": "ORO-57K x 2", - "name": "ORO-57K x 2", + "code": "PTB-760 x 2", + "name": "PTB-760 x 2", "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100M - 100kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100M x 2, ORO-57K x 2", - "name": "FAB-100M x 2, ORO-57K x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250 x 2, ORO-57K x 2", - "name": "FAB-250 x 2, ORO-57K x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100M - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100M x 2", - "name": "FAB-100M x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250 x 2", - "name": "FAB-250 x 2", - "roles": [ - "CAS", - "Strike" + "CAP", + "Escort", + "CAP", + "CAP" ] } ], @@ -19810,8 +19810,42 @@ "coalition": "red", "label": "MiG-21 Fishbed", "era": "Mid Cold War", - "shortLabel": "21", + "shortLabel": "M21", "loadouts": [ + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Aerial attack, hard targets, CLUSTERS", + "name": "Aerial attack, hard targets, CLUSTERS", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Smoke - white - 21", + "quantity": 1 + } + ], + "enabled": true, + "code": "AEROBATIC", + "name": "AEROBATIC", + "roles": [] + }, { "items": [], "enabled": true, @@ -19822,6 +19856,344 @@ "CAP" ] }, + { + "items": [ + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 2 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + } + ], + "enabled": true, + "code": "Escort", + "name": "Escort", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "SPS-141-100 (21) - jamming and countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Escort, JAMMER", + "name": "Escort, JAMMER", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "Kh-66 Grom (21) - AGM, radar guided APU-68", + "quantity": 2 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Few big targets, GROM + BOMBS", + "name": "Few big targets, GROM + BOMBS", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "Hard targets, BOMBS", + "name": "Hard targets, BOMBS", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "S-24A (21) - 180 kg, cumulative unguided rocket", + "quantity": 4 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Hard targets, ROCKETS, PENETRATION", + "name": "Hard targets, ROCKETS, PENETRATION", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 490 L Central (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Long range, INFRA RED MISSILES", + "name": "Long range, INFRA RED MISSILES", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "SPS-141-100 (21) - jamming and countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Long range, JAMMER", + "name": "Long range, JAMMER", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 490 L Central (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Long range, MIX", + "name": "Long range, MIX", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 490 L Central (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 2 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Long range, RADAR GUIDED MISSILES", + "name": "Long range, RADAR GUIDED MISSILES", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "SAB-100MN - 100 kg Illumination Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "Night, ILLUMINATOR", + "name": "Night, ILLUMINATOR", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "RN-24 - 470kg, nuclear bomb, free fall", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + } + ], + "enabled": true, + "code": "NUCLEAR A", + "name": "NUCLEAR A", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "RN-28 - 260 kg, nuclear bomb, free fall", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + } + ], + "enabled": true, + "code": "NUCLEAR B", + "name": "NUCLEAR B", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "SPS-141-100 (21) - jamming and countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Patrol, JAMMER", + "name": "Patrol, JAMMER", + "roles": [ + "CAP" + ] + }, { "items": [ { @@ -19902,76 +20274,28 @@ }, { "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, { "name": "Fuel Tank 800 L (21)", "quantity": 1 }, { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "Hard targets, BOMBS", - "name": "Hard targets, BOMBS", - "roles": [ - "CAS" - ] - }, - { - "items": [ + "name": "R-3R - AAM, radar guided", + "quantity": 2 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + }, { "name": "ASO-2 - countermeasures pod", "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "UB-32M - 32 S-5M", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 } ], "enabled": true, - "code": "Unknown or mixed targets, BOMBS + ROCKETS", - "name": "Unknown or mixed targets, BOMBS + ROCKETS", + "code": "Short range", + "name": "Short range", "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "UB-32M - 32 S-5M", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, CLUSTERS + ROCKETS", - "name": "Soft targets, CLUSTERS + ROCKETS", - "roles": [ - "CAS" + "CAP" ] }, { @@ -20006,120 +20330,24 @@ "name": "ASO-2 - countermeasures pod", "quantity": 1 }, - { - "name": "UPK-23-250 - gun pod", - "quantity": 2 - }, { "name": "Fuel Tank 800 L (21)", "quantity": 1 }, { - "name": "FAB-250 - 250kg GP Bomb LD", + "name": "UB-32M - 32 S-5M", "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, scattered", - "name": "Soft targets, scattered", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Kh-66 Grom (21) - AGM, radar guided APU-68", - "quantity": 2 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Few big targets, GROM + BOMBS", - "name": "Few big targets, GROM + BOMBS", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "Very hard target, PENETRATION", - "name": "Very hard target, PENETRATION", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 }, { "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 + "quantity": 2 } ], "enabled": true, - "code": "Aerial attack, hard targets, CLUSTERS", - "name": "Aerial attack, hard targets, CLUSTERS", + "code": "Soft targets, CLUSTERS + ROCKETS", + "name": "Soft targets, CLUSTERS + ROCKETS", "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "S-24A (21) - 180 kg, cumulative unguided rocket", - "quantity": 4 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Hard targets, ROCKETS, PENETRATION", - "name": "Hard targets, ROCKETS, PENETRATION", - "roles": [ - "Strike" + "CAS" ] }, { @@ -20146,208 +20374,26 @@ }, { "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, { "name": "ASO-2 - countermeasures pod", "quantity": 1 }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, MIX", - "name": "Long range, MIX", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, RADAR GUIDED MISSILES", - "name": "Long range, RADAR GUIDED MISSILES", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, INFRA RED MISSILES", - "name": "Long range, INFRA RED MISSILES", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Escort", - "name": "Escort", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "SPS-141-100 (21) - jamming and countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Escort, JAMMER", - "name": "Escort, JAMMER", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "Night, ILLUMINATOR", - "name": "Night, ILLUMINATOR", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "SPS-141-100 (21) - jamming and countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, JAMMER", - "name": "Long range, JAMMER", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, { "name": "UPK-23-250 - gun pod", "quantity": 2 }, { - "name": "UB-16UM - 16 S-5M", + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", "quantity": 2 } ], "enabled": true, - "code": "Soft targets, UPK + ROCKETS", - "name": "Soft targets, UPK + ROCKETS", + "code": "Soft targets, scattered", + "name": "Soft targets, scattered", "roles": [ "CAS" ] @@ -20381,87 +20427,53 @@ { "items": [ { - "name": "R-3R - AAM, radar guided", + "name": "ASO-2 - countermeasures pod", "quantity": 1 }, { - "name": "R-3S - AAM, IR guided", + "name": "Fuel Tank 800 L (21)", "quantity": 1 }, { - "name": "SPS-141-100 (21) - jamming and countermeasures pod", - "quantity": 1 + "name": "UPK-23-250 - gun pod", + "quantity": 2 }, { - "name": "Fuel Tank 490 L (21)", + "name": "UB-16UM - 16 S-5M", "quantity": 2 } ], "enabled": true, - "code": "Patrol, JAMMER", - "name": "Patrol, JAMMER", + "code": "Soft targets, UPK + ROCKETS", + "name": "Soft targets, UPK + ROCKETS", "roles": [ - "CAP" + "CAS" ] }, { "items": [ - { - "name": "RN-24 - 470kg, nuclear bomb, free fall", - "quantity": 1 - }, { "name": "ASO-2 - countermeasures pod", "quantity": 1 }, { - "name": "Fuel Tank 490 L (21)", + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "UB-32M - 32 S-5M", "quantity": 2 }, { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - } - ], - "enabled": true, - "code": "NUCLEAR A", - "name": "NUCLEAR A", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RN-28 - 260 kg, nuclear bomb, free fall", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", + "name": "FAB-250 - 250kg GP Bomb LD", "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 } ], "enabled": true, - "code": "NUCLEAR B", - "name": "NUCLEAR B", + "code": "Unknown or mixed targets, BOMBS + ROCKETS", + "name": "Unknown or mixed targets, BOMBS + ROCKETS", "roles": [ - "Strike" + "CAS" ] }, { @@ -20471,36 +20483,24 @@ "quantity": 1 }, { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", "quantity": 2 }, { "name": "ASO-2 - countermeasures pod", "quantity": 1 - } - ], - "enabled": true, - "code": "Short range", - "name": "Short range", - "roles": [ - "CAP" - ] - }, - { - "items": [ + }, { - "name": "Smoke - white - 21", - "quantity": 1 + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 } ], "enabled": true, - "code": "AEROBATIC", - "name": "AEROBATIC", - "roles": [] + "code": "Very hard target, PENETRATION", + "name": "Very hard target, PENETRATION", + "roles": [ + "Strike" + ] } ], "filename": "mig-21.png", @@ -20822,30 +20822,6 @@ "era": "Mid Cold War", "shortLabel": "23", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*4", - "name": "R-60M*4", - "roles": [ - "CAP" - ] - }, { "items": [ { @@ -20868,10 +20844,20 @@ "Strike" ] }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, { "items": [ { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "name": "FAB-250 - 250kg GP Bomb LD", "quantity": 2 }, { @@ -20884,8 +20870,8 @@ } ], "enabled": true, - "code": "UB-32*2,R-60M*2,Fuel-800", - "name": "UB-32*2,R-60M*2,Fuel-800", + "code": "FAB-250*2,R-60M*2,Fuel-800", + "name": "FAB-250*2,R-60M*2,Fuel-800", "roles": [ "Strike" ] @@ -20893,11 +20879,11 @@ { "items": [ { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", + "name": "FAB-500 M-62 - 500kg GP Bomb LD", "quantity": 2 }, { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", "quantity": 2 }, { @@ -20906,11 +20892,31 @@ } ], "enabled": true, - "code": "R-24R*2,R-60M*4,Fuel-800", - "name": "R-24R*2,R-60M*4,Fuel-800", + "code": "FAB-500*2,R-60M*2,Fuel-800", + "name": "FAB-500*2,R-60M*2,Fuel-800", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-24T (AA-7 Apex IR) - Infra Red", + "quantity": 1 + }, + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-24R,R-24T,R-60M*4", + "name": "R-24R,R-24T,R-60M*4", "roles": [ - "Escort", - "CAP", "CAP" ] }, @@ -20942,48 +20948,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*4,Fuel-800", - "name": "R-60M*4,Fuel-800", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*2,R-60M*2,Fuel-800", - "name": "FAB-500*2,R-60M*2,Fuel-800", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -21005,11 +20969,11 @@ { "items": [ { - "name": "FAB-250 - 250kg GP Bomb LD", + "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", "quantity": 2 }, { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", "quantity": 2 }, { @@ -21018,10 +20982,46 @@ } ], "enabled": true, - "code": "FAB-250*2,R-60M*2,Fuel-800", - "name": "FAB-250*2,R-60M*2,Fuel-800", + "code": "R-24R*2,R-60M*4,Fuel-800", + "name": "R-24R*2,R-60M*4,Fuel-800", "roles": [ - "Strike" + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60M*4", + "name": "R-60M*4", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-60M*4,Fuel-800", + "name": "R-60M*4,Fuel-800", + "roles": [ + "Escort", + "CAP", + "CAP" ] }, { @@ -21071,23 +21071,23 @@ { "items": [ { - "name": "R-24T (AA-7 Apex IR) - Infra Red", - "quantity": 1 - }, - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", "quantity": 2 }, { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", "quantity": 1 } ], "enabled": true, - "code": "R-24R,R-24T,R-60M*4", - "name": "R-24R,R-24T,R-60M*4", + "code": "UB-32*2,R-60M*2,Fuel-800", + "name": "UB-32*2,R-60M*2,Fuel-800", "roles": [ - "CAP" + "Strike" ] } ], @@ -21142,7 +21142,7 @@ "coalition": "red", "label": "MiG-25PD Foxbat", "era": "Mid Cold War", - "shortLabel": "25", + "shortLabel": "25P", "loadouts": [ { "items": [], @@ -21175,23 +21175,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-40R*4", - "name": "R-40R*4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, { "items": [ { @@ -21212,6 +21195,23 @@ "Escort", "CAP" ] + }, + { + "items": [ + { + "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-40R*4", + "name": "R-40R*4", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] } ], "filename": "mig-25.png", @@ -21244,7 +21244,7 @@ "coalition": "red", "label": "MiG-25RBT Foxbat", "era": "Mid Cold War", - "shortLabel": "25", + "shortLabel": "25R", "loadouts": [ { "items": [], @@ -21319,8 +21319,66 @@ "coalition": "red", "label": "MiG-27K Flogger-D", "era": "Mid Cold War", - "shortLabel": "27", + "shortLabel": "M27", "loadouts": [ + { + "items": [ + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "B-8*4", + "name": "B-8*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "BetAB-500*2,FAB-500*2,R-60*2", + "name": "BetAB-500*2,FAB-500*2,R-60*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "BetAB-500ShP*2,FAB-250*2,R-60*2", + "name": "BetAB-500ShP*2,FAB-250*2,R-60*2", + "roles": [ + "Runway Attack" + ] + }, { "items": [], "enabled": true, @@ -21360,7 +21418,11 @@ { "items": [ { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", "quantity": 2 }, { @@ -21368,15 +21430,81 @@ "quantity": 2 }, { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 + "name": "Fuel tank 800L", + "quantity": 1 } ], "enabled": true, - "code": "BetAB-500ShP*2,FAB-250*2,R-60*2", - "name": "BetAB-500ShP*2,FAB-250*2,R-60*2", + "code": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", + "name": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", "roles": [ - "Runway Attack" + "Strike" + ] + }, + { + "items": [ + { + "name": "KAB-500LG - 500kg Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-500*2,R-60M*2,Fuel", + "name": "KAB-500*2,R-60M*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-25ML*2,R-60M*2,Fuel", + "name": "Kh-25ML*2,R-60M*2,Fuel", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-25MPU*2,R-60M*2,Fuel", + "name": "Kh-25MPU*2,R-60M*2,Fuel", + "roles": [ + "SEAD" ] }, { @@ -21417,52 +21545,16 @@ } ], "enabled": true, - "code": "Kh-29L*2,R-60M*2,Fuel", - "name": "Kh-29L*2,R-60M*2,Fuel", + "code": "Kh-29L*2,R-60*2,Fuel", + "name": "Kh-29L*2,R-60*2,Fuel", "roles": [ - "Strike" + "Antiship Strike" ] }, { "items": [ { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "B-8*4", - "name": "B-8*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*2,FAB-500*2,R-60*2", - "name": "BetAB-500*2,FAB-500*2,R-60*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", "quantity": 2 }, { @@ -21475,10 +21567,10 @@ } ], "enabled": true, - "code": "Kh-25MPU*2,R-60M*2,Fuel", - "name": "Kh-25MPU*2,R-60M*2,Fuel", + "code": "Kh-29L*2,R-60M*2,Fuel", + "name": "Kh-29L*2,R-60M*2,Fuel", "roles": [ - "SEAD" + "Strike" ] }, { @@ -21503,76 +21595,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", - "name": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-25ML*2,R-60M*2,Fuel", - "name": "Kh-25ML*2,R-60M*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-500*2,R-60M*2,Fuel", - "name": "KAB-500*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -21608,28 +21630,6 @@ "roles": [ "Strike" ] - }, - { - "items": [ - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60*2,Fuel", - "name": "Kh-29L*2,R-60*2,Fuel", - "roles": [ - "Antiship Strike" - ] } ], "filename": "mig-23.png", @@ -21662,34 +21662,28 @@ "coalition": "red", "label": "MiG-29A Fulcrum", "era": "Late Cold War", - "shortLabel": "29A", + "shortLabel": "M29", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, { "items": [ { - "name": "Fuel tank 1150L MiG-29", + "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 2 }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, { "name": "Fuel tank 1400L", "quantity": 1 } ], "enabled": true, - "code": "Fuel-1150*2,Fuel-1500", - "name": "Fuel-1150*2,Fuel-1500", + "code": "B-8*4,R-73*2,Fuel", + "name": "B-8*4,R-73*2,Fuel", "roles": [ - "FAC-A" + "Strike" ] }, { @@ -21699,7 +21693,7 @@ "quantity": 2 }, { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", "quantity": 4 }, { @@ -21708,10 +21702,20 @@ } ], "enabled": true, - "code": "RBK-500AO*4,R-73*2,Fuel", - "name": "RBK-500AO*4,R-73*2,Fuel", + "code": "BetAB-500*4,R-73*2,Fuel", + "name": "BetAB-500*4,R-73*2,Fuel", "roles": [ - "CAS" + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" ] }, { @@ -21743,7 +21747,7 @@ "quantity": 2 }, { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "name": "FAB-500 M-62 - 500kg GP Bomb LD", "quantity": 4 }, { @@ -21752,12 +21756,30 @@ } ], "enabled": true, - "code": "B-8*4,R-73*2,Fuel", - "name": "B-8*4,R-73*2,Fuel", + "code": "FAB-500*4,R-73*2,Fuel", + "name": "FAB-500*4,R-73*2,Fuel", "roles": [ "Strike" ] }, + { + "items": [ + { + "name": "Fuel tank 1150L MiG-29", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel-1150*2,Fuel-1500", + "name": "Fuel-1150*2,Fuel-1500", + "roles": [ + "FAC-A" + ] + }, { "items": [ { @@ -21779,7 +21801,7 @@ { "items": [ { - "name": "R-73 (AA-11 Archer) - Infra Red", + "name": "R-60M (AA-8 Aphid) - Infra Red", "quantity": 4 }, { @@ -21792,8 +21814,8 @@ } ], "enabled": true, - "code": "R-73*4,R-27R*2,Fuel-1500", - "name": "R-73*4,R-27R*2,Fuel-1500", + "code": "R-60M*4,R-27R*2,Fuel-1500", + "name": "R-60M*4,R-27R*2,Fuel-1500", "roles": [ "CAP", "CAP", @@ -21803,21 +21825,15 @@ { "items": [ { - "name": "R-73 (AA-11 Archer) - Infra Red", + "name": "R-60M (AA-8 Aphid) - Infra Red", "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 } ], "enabled": true, - "code": "R-73*6,Fuel-1500", - "name": "R-73*6,Fuel-1500", + "code": "R-60M*6", + "name": "R-60M*6", "roles": [ - "CAP", - "CAP", - "Escort" + "CAP" ] }, { @@ -21840,96 +21856,24 @@ "Escort" ] }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*4,R-73*2,Fuel", - "name": "S-24*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*4,R-73*2,Fuel", - "name": "FAB-500*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, { "items": [ { "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-60M*6", - "name": "R-60M*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ + "quantity": 2 + }, { "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 2 }, { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 } ], "enabled": true, - "code": "BetAB-500*4,R-73*2,Fuel", - "name": "BetAB-500*4,R-73*2,Fuel", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*6", - "name": "R-73*6", + "code": "R-73*2,R-60M*2,R-27R*2", + "name": "R-73*2,R-60M*2,R-27R*2", "roles": [ "CAP" ] @@ -21965,7 +21909,25 @@ { "items": [ { - "name": "R-60M (AA-8 Aphid) - Infra Red", + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2", + "name": "R-73*4,R-27R*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 4 }, { @@ -21978,8 +21940,42 @@ } ], "enabled": true, - "code": "R-60M*4,R-27R*2,Fuel-1500", - "name": "R-60M*4,R-27R*2,Fuel-1500", + "code": "R-73*4,R-27R*2,Fuel-1500", + "name": "R-73*4,R-27R*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*6", + "name": "R-73*6", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 6 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*6,Fuel-1500", + "name": "R-73*6,Fuel-1500", "roles": [ "CAP", "CAP", @@ -22012,40 +22008,22 @@ "items": [ { "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", "quantity": 4 }, { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 + "name": "Fuel tank 1400L", + "quantity": 1 } ], "enabled": true, - "code": "R-73*4,R-27R*2", - "name": "R-73*4,R-27R*2", + "code": "RBK-500AO*4,R-73*2,Fuel", + "name": "RBK-500AO*4,R-73*2,Fuel", "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2", - "name": "R-73*2,R-60M*2,R-27R*2", - "roles": [ - "CAP" + "CAS" ] }, { @@ -22073,6 +22051,28 @@ "roles": [ "Antiship Strike" ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-24*4,R-73*2,Fuel", + "name": "S-24*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] } ], "filename": "mig-29.png", @@ -22177,8 +22177,52 @@ "coalition": "red", "label": "MiG-29S Fulcrum", "era": "Late Cold War", - "shortLabel": "29S", + "shortLabel": "M29", "loadouts": [ + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "B-8*4,R-73*2,Fuel", + "name": "B-8*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500*4,R-73*2,Fuel", + "name": "BetAB-500*4,R-73*2,Fuel", + "roles": [ + "Runway Attack" + ] + }, { "items": [], "enabled": true, @@ -22189,6 +22233,144 @@ "CAP" ] }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*4,R-73*2,Fuel", + "name": "FAB-250*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*4,R-73*2,Fuel", + "name": "FAB-500*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel tank 1150L MiG-29", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel-1150*2,Fuel-1500", + "name": "Fuel-1150*2,Fuel-1500", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60M*4,R-27R*2", + "name": "R-60M*4,R-27R*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-60M*4,R-27R*2,Fuel-1500", + "name": "R-60M*4,R-27R*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-60M*6", + "name": "R-60M*6", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 6 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-60M*6,Fuel-1500", + "name": "R-60M*6,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, { "items": [ { @@ -22211,6 +22393,52 @@ "CAP" ] }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", + "name": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2", + "name": "R-73*4,R-27R*2", + "roles": [ + "CAP" + ] + }, { "items": [ { @@ -22235,6 +22463,20 @@ "Escort" ] }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*6", + "name": "R-73*6", + "roles": [ + "CAP" + ] + }, { "items": [ { @@ -22255,146 +22497,6 @@ "Escort" ] }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*6,Fuel-1500", - "name": "R-60M*6,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*4,R-73*2,Fuel", - "name": "S-24*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*4,R-73*2,Fuel", - "name": "FAB-500*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*4,R-73*2,Fuel", - "name": "BetAB-500*4,R-73*2,Fuel", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500AO*4,R-73*2,Fuel", - "name": "RBK-500AO*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "name": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, { "items": [ { @@ -22423,132 +22525,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*4,R-73*2,Fuel", - "name": "B-8*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*4,R-73*2,Fuel", - "name": "RBK-250*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*6", - "name": "R-73*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel tank 1150L MiG-29", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel-1150*2,Fuel-1500", - "name": "Fuel-1150*2,Fuel-1500", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-60M*6", - "name": "R-60M*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2", - "name": "R-60M*4,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2", - "name": "R-73*4,R-27R*2", - "roles": [ - "CAP" - ] - }, { "items": [ { @@ -22567,52 +22543,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,R-73*2,Fuel", - "name": "FAB-250*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2,Fuel-1500", - "name": "R-60M*4,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, { "items": [ { @@ -22637,6 +22567,54 @@ "Escort" ] }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-250*4,R-73*2,Fuel", + "name": "RBK-250*4,R-73*2,Fuel", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-500AO*4,R-73*2,Fuel", + "name": "RBK-500AO*4,R-73*2,Fuel", + "roles": [ + "CAS" + ] + }, { "items": [ { @@ -22662,6 +22640,28 @@ "roles": [ "Antiship Strike" ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-24*4,R-73*2,Fuel", + "name": "S-24*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] } ], "filename": "mig-29.png", @@ -22783,7 +22783,7 @@ "coalition": "red", "label": "MiG-31 Foxhound", "era": "Late Cold War", - "shortLabel": "31", + "shortLabel": "M31", "loadouts": [ { "items": [], @@ -22798,7 +22798,7 @@ { "items": [ { - "name": "R-40TD (AA-6 Acrid) - Infra Red", + "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", "quantity": 2 }, { @@ -22807,8 +22807,8 @@ } ], "enabled": true, - "code": "R-40T*2,R-33*4", - "name": "R-40T*2,R-33*4", + "code": "R-40R*2,R-33*4", + "name": "R-40R*2,R-33*4", "roles": [ "CAP", "CAP", @@ -22844,7 +22844,7 @@ { "items": [ { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", + "name": "R-40TD (AA-6 Acrid) - Infra Red", "quantity": 2 }, { @@ -22853,8 +22853,8 @@ } ], "enabled": true, - "code": "R-40R*2,R-33*4", - "name": "R-40R*2,R-33*4", + "code": "R-40T*2,R-33*4", + "name": "R-40T*2,R-33*4", "roles": [ "CAP", "CAP", @@ -22920,197 +22920,28 @@ "coalition": "blue", "label": "Mirage-F1EE", "era": "Mid Cold War", - "shortLabel": "F1EE", + "shortLabel": "MF1", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", - "name": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "R530F EM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", - "name": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", - "name": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "R530F EM", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 1*R530EM", - "name": "2*AIM9-JULI, 1*R530EM", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 1*R530IR", - "name": "2*R550 Magic I, 1*R530IR", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", - "name": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", - "name": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", - "roles": [ - "CAP" - ] - }, { "items": [ { "name": "AIM-9J Sidewinder IR AAM", "quantity": 2 }, - { - "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 251 F1B HE", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 2 - }, { "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 2 + }, + { + "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Chute Retarded Bomb HD", "quantity": 1 } ], "enabled": true, - "code": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", - "name": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", + "code": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", + "name": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", "roles": [ - "CAP" + "CAS" ] }, { @@ -23138,137 +22969,24 @@ { "items": [ { - "name": "AIM-9J Sidewinder IR AAM", + "name": "AIM-9JULI Sidewinder IR AAM", "quantity": 2 }, { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Chute Retarded Bomb HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", - "name": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", + "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", "quantity": 4 }, { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "name": "CLB 4 - 4 x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", "quantity": 1 } ], "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", + "code": "2*AIM-9JULI, 8*BLU107 Durandal", + "name": "2*AIM-9JULI, 8*BLU107 Durandal", "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "SAMP-250 - 250 kg GP Chute Retarded Bomb HD", - "quantity": 2 - }, - { - "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "name": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "roles": [ - "CAS" + "Strike", + "Runway Attack" ] }, { @@ -23319,24 +23037,117 @@ { "items": [ { - "name": "AIM-9JULI Sidewinder IR AAM", + "name": "AIM-9J Sidewinder IR AAM", "quantity": 2 }, { - "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 4 + "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 251 F1B HE", + "quantity": 2 }, { - "name": "CLB 4 - 4 x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", + "name": "R530F IR", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", "quantity": 1 } ], "enabled": true, - "code": "2*AIM-9JULI, 8*BLU107 Durandal", - "name": "2*AIM-9JULI, 8*BLU107 Durandal", + "code": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", + "name": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", "roles": [ - "Strike", - "Runway Attack" + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "R530F EM", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-JULI, 1*R530EM", + "name": "2*AIM9-JULI, 1*R530EM", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", + "name": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "R530F EM", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", + "name": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", + "name": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" ] }, { @@ -23364,6 +23175,71 @@ "CAP" ] }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 1*R530IR", + "name": "2*R550 Magic I, 1*R530IR", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", + "name": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", + "name": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, { "items": [ { @@ -23417,6 +23293,130 @@ "Escort", "CAP" ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "SAMP-250 - 250 kg GP Chute Retarded Bomb HD", + "quantity": 2 + }, + { + "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", + "name": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", + "quantity": 4 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", + "name": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", + "quantity": 4 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", + "name": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", + "quantity": 4 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", + "name": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", + "quantity": 4 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", + "name": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] } ], "filename": "f-5.png", @@ -23877,16 +23877,50 @@ "coalition": "blue", "label": "Mosquito FB MkVI", "era": "WW2", - "shortLabel": "Mo", + "shortLabel": "Mos", "loadouts": [ { - "items": [], + "items": [ + { + "name": "100 gal. Drop Tank", + "quantity": 2 + }, + { + "name": "500 lb MC Short tail", + "quantity": 2 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "100 gal Drop tank*2, 500 lb MC Short tail*2", + "name": "100 gal Drop tank*2, 500 lb MC Short tail*2", "roles": [ - "No task", - "CAP" + "CAP", + "Strike" + ] + }, + { + "items": [ + { + "name": "2 x RP-3 60lb F No1 Mk.I", + "quantity": 2 + }, + { + "name": "100 gal. Drop Tank", + "quantity": 2 + }, + { + "name": "250 lb MC Mk.II", + "quantity": 2 + } + ], + "enabled": true, + "code": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", + "name": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", + "roles": [ + "CAP", + "Antiship Strike", + "CAS", + "Strike" ] }, { @@ -23932,20 +23966,28 @@ { "items": [ { - "name": "100 gal. Drop Tank", - "quantity": 2 - }, - { - "name": "500 lb MC Short tail", - "quantity": 2 + "name": "500 lb GP Short tail", + "quantity": 4 } ], "enabled": true, - "code": "100 gal Drop tank*2, 500 lb MC Short tail*2", - "name": "100 gal Drop tank*2, 500 lb MC Short tail*2", + "code": "500 lb GP Short tail*4", + "name": "500 lb GP Short tail*4", "roles": [ "CAP", - "Strike" + "Strike", + "CAS", + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" ] }, { @@ -23972,48 +24014,6 @@ "CAS", "Strike" ] - }, - { - "items": [ - { - "name": "2 x RP-3 60lb F No1 Mk.I", - "quantity": 2 - }, - { - "name": "100 gal. Drop Tank", - "quantity": 2 - }, - { - "name": "250 lb MC Mk.II", - "quantity": 2 - } - ], - "enabled": true, - "code": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", - "name": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", - "roles": [ - "CAP", - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "500 lb GP Short tail", - "quantity": 4 - } - ], - "enabled": true, - "code": "500 lb GP Short tail*4", - "name": "500 lb GP Short tail*4", - "roles": [ - "CAP", - "Strike", - "CAS", - "Runway Attack" - ] } ], "filename": "mosquito.png", @@ -24115,45 +24115,6 @@ "era": "WW2", "shortLabel": "P47", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "AN-M65 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AN-M65*2", - "name": "AN-M65*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "150 US gal. Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel150*2", - "name": "Fuel150*2", - "roles": [ - "Escort", - "CAP" - ] - }, { "items": [ { @@ -24190,24 +24151,40 @@ { "items": [ { - "name": "3 x 4.5 inch M8 UnGd Rocket", + "name": "AN-M65 - 1000lb GP Bomb LD", "quantity": 2 - }, - { - "name": "AN-M57 - 250lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "110 US gal. Fuel Tank", - "quantity": 1 } ], "enabled": true, - "code": "M8*6, AN-M57*2, Fuel110", - "name": "M8*6, AN-M57*2, Fuel110", + "code": "AN-M65*2", + "name": "AN-M65*2", "roles": [ - "Strike", - "CAS" + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "150 US gal. Fuel Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "Fuel150*2", + "name": "Fuel150*2", + "roles": [ + "Escort", + "CAP" ] }, { @@ -24228,6 +24205,29 @@ "Strike", "CAS" ] + }, + { + "items": [ + { + "name": "3 x 4.5 inch M8 UnGd Rocket", + "quantity": 2 + }, + { + "name": "AN-M57 - 250lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "110 US gal. Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "M8*6, AN-M57*2, Fuel110", + "name": "M8*6, AN-M57*2, Fuel110", + "roles": [ + "Strike", + "CAS" + ] } ], "filename": "p-47.png", @@ -24384,6 +24384,40 @@ "FAC-A" ] }, + { + "items": [ + { + "name": "HVAR, UnGd Rkt", + "quantity": 10 + } + ], + "enabled": true, + "code": "HVAR*10", + "name": "HVAR*10", + "roles": [ + "CAS", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "HVAR, UnGd Rkt", + "quantity": 6 + } + ], + "enabled": true, + "code": "HVAR*6", + "name": "HVAR*6", + "roles": [ + "CAS", + "Strike", + "Antiship Strike", + "FAC-A" + ] + }, { "items": [ { @@ -24422,23 +24456,6 @@ "Antiship Strike" ] }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 6 - } - ], - "enabled": true, - "code": "HVAR*6", - "name": "HVAR*6", - "roles": [ - "CAS", - "Strike", - "Antiship Strike", - "FAC-A" - ] - }, { "items": [ { @@ -24456,23 +24473,6 @@ "Runway Attack" ] }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 10 - } - ], - "enabled": true, - "code": "HVAR*10", - "name": "HVAR*10", - "roles": [ - "CAS", - "Strike", - "Runway Attack", - "Antiship Strike" - ] - }, { "items": [ { @@ -24637,7 +24637,7 @@ }, "type": "Aircraft", "description": "2 jet engine, straight wing, 4 crew. Viking", - "abilities": "Tanker, Drogue AAR", + "abilities": "Tanker, Drogue AAR, Carrier", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -24648,80 +24648,8 @@ "coalition": "red", "label": "Su-17M4 Fitter", "era": "Mid Cold War", - "shortLabel": "17M", + "shortLabel": "S17", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-32*4,R-60M*2,FAB-250*4", - "name": "UB-32*4,R-60M*2,FAB-250*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 6 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100*24,R-60M*2", - "name": "FAB-100*24,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-32*4,R-60M*2,Fuel*2", - "name": "UB-32*4,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -24744,28 +24672,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60M*2,Fuel*2", - "name": "Kh-29L*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -24788,28 +24694,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-60M*2,Fuel*2", - "name": "Kh-29T*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -24828,6 +24712,132 @@ "Runway Attack" ] }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 6 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100*24,R-60M*2", + "name": "FAB-100*24,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*16,R-60M*2", + "name": "FAB-250*16,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-500*6,R-60M*2", + "name": "FAB-500*6,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel tank 1150L", + "quantity": 4 + } + ], + "enabled": true, + "code": "Fuel*4", + "name": "Fuel*4", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-25ML*2,Kh-29L*2,R-60*2", + "name": "Kh-25ML*2,Kh-29L*2,R-60*2", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-25ML*4,R-60M*2,Fuel*2", + "name": "Kh-25ML*4,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, { "items": [ { @@ -24853,11 +24863,11 @@ { "items": [ { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 }, { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", "quantity": 2 }, { @@ -24866,8 +24876,30 @@ } ], "enabled": true, - "code": "S-24*4,R-60M*2,Fuel*2", - "name": "S-24*4,R-60M*2,Fuel*2", + "code": "Kh-29L*2,R-60M*2,Fuel*2", + "name": "Kh-29L*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29T*2,R-60M*2,Fuel*2", + "name": "Kh-29T*2,R-60M*2,Fuel*2", "roles": [ "Strike" ] @@ -24924,50 +24956,6 @@ "SEAD" ] }, - { - "items": [ - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*16,R-60M*2", - "name": "FAB-250*16,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25ML*4,R-60M*2,Fuel*2", - "name": "Kh-25ML*4,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, { "items": [ { @@ -25016,31 +25004,21 @@ { "items": [ { - "name": "Fuel tank 1150L", + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", "quantity": 4 - } - ], - "enabled": true, - "code": "Fuel*4", - "name": "Fuel*4", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 }, { "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 } ], "enabled": true, - "code": "FAB-500*6,R-60M*2", - "name": "FAB-500*6,R-60M*2", + "code": "S-24*4,R-60M*2,Fuel*2", + "name": "S-24*4,R-60M*2,Fuel*2", "roles": [ "Strike" ] @@ -25048,23 +25026,45 @@ { "items": [ { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 }, { "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", "quantity": 2 }, { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", "quantity": 2 } ], "enabled": true, - "code": "Kh-25ML*2,Kh-29L*2,R-60*2", - "name": "Kh-25ML*2,Kh-29L*2,R-60*2", + "code": "UB-32*4,R-60M*2,FAB-250*4", + "name": "UB-32*4,R-60M*2,FAB-250*4", "roles": [ - "Antiship Strike" + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "UB-32*4,R-60M*2,Fuel*2", + "name": "UB-32*4,R-60M*2,Fuel*2", + "roles": [ + "Strike" ] } ], @@ -25116,135 +25116,26 @@ "coalition": "red", "label": "Su-24M Fencer", "era": "Mid Cold War", - "shortLabel": "24", + "shortLabel": "S24", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, { "items": [ { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-13*4,FAB-500*2", - "name": "UB-13*4,FAB-500*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31A*2,R-60M*2,Fuel", - "name": "Kh-31A*2,R-60M*2,Fuel", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-13*4", - "name": "UB-13*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "KAB-500*4,R-60M*2", - "name": "KAB-500*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", "quantity": 2 }, { "name": "Fuel tank 3000L", "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 } ], "enabled": true, - "code": "S-25*2,Fuel*3", - "name": "S-25*2,Fuel*3", + "code": "B-8*2,Fuel*2", + "name": "B-8*2,Fuel*2", "roles": [ "Strike" ] }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh31P*2_Kh25ML*2_L-081", - "name": "Kh31P*2_Kh25ML*2_L-081", - "roles": [ - "SEAD", - "Antiship Strike" - ] - }, { "items": [ { @@ -25270,31 +25161,13 @@ { "items": [ { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-1500*2,R-60M*2", - "name": "FAB-1500*2,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", "quantity": 4 } ], "enabled": true, - "code": "S-24*4", - "name": "S-24*4", + "code": "B-8*6", + "name": "B-8*6", "roles": [ "Strike" ] @@ -25317,6 +25190,138 @@ "Runway Attack" ] }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "FAB-100*24", + "name": "FAB-100*24", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-1500*2,R-60M*2", + "name": "FAB-1500*2,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 8 + } + ], + "enabled": true, + "code": "FAB-250*8", + "name": "FAB-250*8", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "FAB-500*4,R-60M*2", + "name": "FAB-500*4,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel tank 3000L", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel*3", + "name": "Fuel*3", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "KAB-1500L - 1500kg Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-1500*2,R-60M*2,Fuel", + "name": "KAB-1500*2,R-60M*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "KAB-500LG - 500kg Laser Guided Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "KAB-500*4,R-60M*2", + "name": "KAB-500*4,R-60M*2", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -25348,13 +25353,35 @@ { "items": [ { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 } ], "enabled": true, - "code": "FAB-100*24", - "name": "FAB-100*24", + "code": "Kh-29L*2,R-60M*2", + "name": "Kh-29L*2,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29T*2,R-60M*2", + "name": "Kh-29T*2,R-60M*2", "roles": [ "Strike" ] @@ -25380,11 +25407,11 @@ { "items": [ { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", "quantity": 2 }, { - "name": "Fuel tank 3000L", + "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", "quantity": 2 }, { @@ -25393,8 +25420,30 @@ } ], "enabled": true, - "code": "UB-13*2,Fuel*3", - "name": "UB-13*2,Fuel*3", + "code": "Kh-31A*2,R-60M*2,Fuel", + "name": "Kh-31A*2,R-60M*2,Fuel", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-59M*2,R-60M*2,Fuel", + "name": "Kh-59M*2,R-60M*2,Fuel", "roles": [ "Strike" ] @@ -25402,19 +25451,46 @@ { "items": [ { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", "quantity": 2 }, { - "name": "Fuel tank 3000L", + "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", "quantity": 2 + }, + { + "name": "L-081 Fantasmagoria ELINT pod", + "quantity": 1 } ], "enabled": true, - "code": "B-8*2,Fuel*2", - "name": "B-8*2,Fuel*2", + "code": "Kh25MPU*2_Kh25ML*2_L-081", + "name": "Kh25MPU*2_Kh25ML*2_L-081", "roles": [ - "Strike" + "SEAD" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "L-081 Fantasmagoria ELINT pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh31P*2_Kh25ML*2_L-081", + "name": "Kh31P*2_Kh25ML*2_L-081", + "roles": [ + "SEAD", + "Antiship Strike" ] }, { @@ -25453,20 +25529,6 @@ "CAS" ] }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-32*4", - "name": "UB-32*4", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -25474,15 +25536,15 @@ "quantity": 2 }, { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 } ], "enabled": true, - "code": "Kh-29L*2,R-60M*2", - "name": "Kh-29L*2,R-60M*2", + "code": "RBK-500AO*4,R-60M*2", + "name": "RBK-500AO*4,R-60M*2", "roles": [ - "Strike" + "CAS" ] }, { @@ -25510,39 +25572,13 @@ { "items": [ { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh25MPU*2_Kh25ML*2_L-081", - "name": "Kh25MPU*2_Kh25ML*2_L-081", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", "quantity": 4 } ], "enabled": true, - "code": "FAB-500*4,R-60M*2", - "name": "FAB-500*4,R-60M*2", + "code": "S-24*4", + "name": "S-24*4", "roles": [ "Strike" ] @@ -25550,19 +25586,9 @@ { "items": [ { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 8 - } - ], - "enabled": true, - "code": "FAB-250*8", - "name": "FAB-250*8", - "roles": [ - "Strike" - ] - }, - { - "items": [ + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, { "name": "Fuel tank 3000L", "quantity": 2 @@ -25573,38 +25599,34 @@ } ], "enabled": true, - "code": "Fuel*3", - "name": "Fuel*3", + "code": "S-25*2,Fuel*3", + "name": "S-25*2,Fuel*3", "roles": [ - "FAC-A" + "Strike" ] }, { "items": [ { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", "quantity": 4 } ], "enabled": true, - "code": "RBK-500AO*4,R-60M*2", - "name": "RBK-500AO*4,R-60M*2", + "code": "S-25*4", + "name": "S-25*4", "roles": [ - "CAS" + "Strike" ] }, { "items": [ { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", "quantity": 2 }, { - "name": "KAB-1500L - 1500kg Laser Guided Bomb", + "name": "Fuel tank 3000L", "quantity": 2 }, { @@ -25613,8 +25635,8 @@ } ], "enabled": true, - "code": "KAB-1500*2,R-60M*2,Fuel", - "name": "KAB-1500*2,R-60M*2,Fuel", + "code": "UB-13*2,Fuel*3", + "name": "UB-13*2,Fuel*3", "roles": [ "Strike" ] @@ -25622,17 +25644,13 @@ { "items": [ { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", "quantity": 4 } ], "enabled": true, - "code": "UB-32*4,FAB-250*4", - "name": "UB-32*4,FAB-250*4", + "code": "UB-13*4", + "name": "UB-13*4", "roles": [ "Strike" ] @@ -25640,17 +25658,17 @@ { "items": [ { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 4 }, { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "name": "FAB-500 M-62 - 500kg GP Bomb LD", "quantity": 2 } ], "enabled": true, - "code": "Kh-29T*2,R-60M*2", - "name": "Kh-29T*2,R-60M*2", + "code": "UB-13*4,FAB-500*2", + "name": "UB-13*4,FAB-500*2", "roles": [ "Strike" ] @@ -25680,21 +25698,13 @@ { "items": [ { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 } ], "enabled": true, - "code": "Kh-59M*2,R-60M*2,Fuel", - "name": "Kh-59M*2,R-60M*2,Fuel", + "code": "UB-32*4", + "name": "UB-32*4", "roles": [ "Strike" ] @@ -25702,27 +25712,17 @@ { "items": [ { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*4", - "name": "S-25*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ + }, { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "name": "FAB-250 - 250kg GP Bomb LD", "quantity": 4 } ], "enabled": true, - "code": "B-8*6", - "name": "B-8*6", + "code": "UB-32*4,FAB-250*4", + "name": "UB-32*4,FAB-250*4", "roles": [ "Strike" ] @@ -25784,114 +25784,6 @@ "era": "Late Cold War", "shortLabel": "S25", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", - "name": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 6 - } - ], - "enabled": true, - "code": "S-25L*6,UB-13*2,R-60M*2", - "name": "S-25L*6,UB-13*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 6 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25*6,SPPU-22*2,R-60M*2", - "name": "S-25*6,SPPU-22*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, { "items": [ { @@ -25929,7 +25821,7 @@ "quantity": 2 }, { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", "quantity": 6 }, { @@ -25938,8 +25830,102 @@ } ], "enabled": true, - "code": "S-8KOM*120,R-60M*2,Fuel*2", - "name": "S-8KOM*120,R-60M*2,Fuel*2", + "code": "BetAB-500*6,R-60M*2,Fuel*2", + "name": "BetAB-500*6,R-60M*2,Fuel*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 8 + } + ], + "enabled": true, + "code": "BetAB-500ShP*8,R-60M*2", + "name": "BetAB-500ShP*8,R-60M*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100*16,R-60M*2,Fuel*2", + "name": "FAB-100*16,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 8 + } + ], + "enabled": true, + "code": "FAB-100*32,R-60M*2", + "name": "FAB-100*32,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "SAB-100MN - 100 kg Illumination Bomb", + "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", + "name": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", "roles": [ "Strike" ] @@ -25970,142 +25956,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", - "name": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", - "name": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-60M*2,Fuel*2", - "name": "RBK-500AO*6,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "RBK-250*8,R-60M*2", - "name": "RBK-250*8,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,R-60M*2", - "name": "Kh-29L*2,Kh-25ML*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "RBK-250*4,S-8KOM*80,R-60M*2", - "name": "RBK-250*4,S-8KOM*80,R-60M*2", - "roles": [ - "CAS" - ] - }, { "items": [ { @@ -26139,35 +25989,21 @@ "quantity": 2 }, { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8TsM SM Orange", - "quantity": 8 - } - ], - "enabled": true, - "code": "S-8TsM*160,R-60*2", - "name": "S-8TsM*160,R-60*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", "quantity": 2 }, { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "name": "FAB-250 - 250kg GP Bomb LD", "quantity": 4 }, { - "name": "Fuel tank 800L Wing", + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", "quantity": 2 } ], "enabled": true, - "code": "Kh-25ML*4,R-60M*2,Fuel*2", - "name": "Kh-25ML*4,R-60M*2,Fuel*2", + "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", + "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", "roles": [ "Strike" ] @@ -26179,57 +26015,17 @@ "quantity": 2 }, { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 8 - } - ], - "enabled": true, - "code": "BetAB-500ShP*8,R-60M*2", - "name": "BetAB-500ShP*8,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 6 }, { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 8 - } - ], - "enabled": true, - "code": "SAB-100*8,R-60*2", - "name": "SAB-100*8,R-60*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "name": "Fuel tank 800L Wing", "quantity": 2 } ], "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", - "name": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", + "code": "FAB-250*6,R-60M*2,Fuel*2", + "name": "FAB-250*6,R-60M*2,Fuel*2", "roles": [ "Strike" ] @@ -26256,6 +26052,50 @@ "Strike" ] }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-25*4,Kh-29T*2,R-60*2", + "name": "Kh-25*4,Kh-29T*2,R-60*2", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-25ML*4,R-60M*2,Fuel*2", + "name": "Kh-25ML*4,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -26282,6 +26122,54 @@ "Strike" ] }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,Kh-25ML*4,R-60M*2", + "name": "Kh-29L*2,Kh-25ML*4,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", + "name": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -26311,15 +26199,23 @@ "quantity": 2 }, { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 8 + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 } ], "enabled": true, - "code": "FAB-100*32,R-60M*2", - "name": "FAB-100*32,R-60M*2", + "code": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", + "name": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", "roles": [ - "Strike" + "CAS" ] }, { @@ -26329,7 +26225,51 @@ "quantity": 2 }, { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "RBK-250*4,S-8KOM*80,R-60M*2", + "name": "RBK-250*4,S-8KOM*80,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 8 + } + ], + "enabled": true, + "code": "RBK-250*8,R-60M*2", + "name": "RBK-250*8,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", "quantity": 4 }, { @@ -26338,10 +26278,10 @@ } ], "enabled": true, - "code": "FAB-100*16,R-60M*2,Fuel*2", - "name": "FAB-100*16,R-60M*2,Fuel*2", + "code": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", + "name": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", "roles": [ - "Strike" + "CAS" ] }, { @@ -26351,7 +26291,7 @@ "quantity": 2 }, { - "name": "FAB-250 - 250kg GP Bomb LD", + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", "quantity": 6 }, { @@ -26360,32 +26300,10 @@ } ], "enabled": true, - "code": "FAB-250*6,R-60M*2,Fuel*2", - "name": "FAB-250*6,R-60M*2,Fuel*2", + "code": "RBK-500AO*6,R-60M*2,Fuel*2", + "name": "RBK-500AO*6,R-60M*2,Fuel*2", "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-60M*2,Fuel*2", - "name": "BetAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Runway Attack" + "CAS" ] }, { @@ -26417,43 +26335,22 @@ "quantity": 2 }, { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", "quantity": 6 }, { - "name": "Fuel tank 800L Wing", + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", "quantity": 2 } ], "enabled": true, - "code": "UB-13*6,R-60M*2,Fuel*2", - "name": "UB-13*6,R-60M*2,Fuel*2", + "code": "S-25*6,SPPU-22*2,R-60M*2", + "name": "S-25*6,SPPU-22*2,R-60M*2", "roles": [ + "CAS", "Strike" ] }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25*4,Kh-29T*2,R-60*2", - "name": "Kh-25*4,Kh-29T*2,R-60*2", - "roles": [ - "Antiship Strike" - ] - }, { "items": [ { @@ -26475,10 +26372,113 @@ "roles": [ "Antiship Strike" ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 6 + } + ], + "enabled": true, + "code": "S-25L*6,UB-13*2,R-60M*2", + "name": "S-25L*6,UB-13*2,R-60M*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-8KOM*120,R-60M*2,Fuel*2", + "name": "S-8KOM*120,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8TsM SM Orange", + "quantity": 8 + } + ], + "enabled": true, + "code": "S-8TsM*160,R-60*2", + "name": "S-8TsM*160,R-60*2", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "SAB-100MN - 100 kg Illumination Bomb", + "quantity": 8 + } + ], + "enabled": true, + "code": "SAB-100*8,R-60*2", + "name": "SAB-100*8,R-60*2", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "UB-13*6,R-60M*2,Fuel*2", + "name": "UB-13*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] } ], "filename": "su-25.png", - "enabled": true, + "enabled": false, "liveries": { "broken camo scheme #2 (native). 452th shap": { "name": "broken camo scheme #2 (native). 452th shap.", @@ -26587,6 +26587,114 @@ "era": "Late Cold War", "shortLabel": "S25", "loadouts": [ + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", + "quantity": 2 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + }, + { + "name": "Mercury LLTV Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", + "name": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 2 + }, + { + "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", + "quantity": 2 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + }, + { + "name": "Mercury LLTV Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", + "name": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "BetAB-500*6,R-60M*2,Fuel*2", + "name": "BetAB-500*6,R-60M*2,Fuel*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 8 + } + ], + "enabled": true, + "code": "BetAB-500ShP*8,R-60M*2", + "name": "BetAB-500ShP*8,R-60M*2", + "roles": [ + "Runway Attack" + ] + }, { "items": [], "enabled": true, @@ -26597,6 +26705,72 @@ "CAS" ] }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100*16,R-60M*2,Fuel*2", + "name": "FAB-100*16,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 8 + } + ], + "enabled": true, + "code": "FAB-100*32,R-60M*2", + "name": "FAB-100*32,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", + "name": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -26623,6 +26797,172 @@ "Strike" ] }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", + "name": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", + "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*6,R-60M*2,Fuel*2", + "name": "FAB-250*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-500*6,R-60M*2,Fuel*2", + "name": "FAB-500*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel tank 800L Wing", + "quantity": 4 + } + ], + "enabled": true, + "code": "Fuel*4", + "name": "Fuel*4", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "KAB-500Kr - 500kg TV Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", + "name": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", + "name": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", + "roles": [ + "Antiship Strike" + ] + }, { "items": [ { @@ -26668,165 +27008,17 @@ "quantity": 2 }, { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", "quantity": 2 }, { - "name": "KAB-500Kr - 500kg TV Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", - "name": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", - "name": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 8 - } - ], - "enabled": true, - "code": "BetAB-500ShP*8,R-60M*2", - "name": "BetAB-500ShP*8,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-13*6,R-60M*2,Fuel*2", - "name": "UB-13*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", - "name": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", + "name": "Mercury LLTV Pod", "quantity": 1 } ], "enabled": true, - "code": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", - "name": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", + "code": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", + "name": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", "roles": [ "Strike" ] @@ -26882,25 +27074,25 @@ { "items": [ { - "name": "R-60M (AA-8 Aphid) - Infra Red", + "name": "MPS-410", "quantity": 2 }, { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 2 }, { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 + "name": "Fuel tank 800L Wing", + "quantity": 2 }, { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", "quantity": 2 } ], "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", + "code": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", + "name": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", "roles": [ "Strike" ] @@ -26908,37 +27100,31 @@ { "items": [ { - "name": "R-60M (AA-8 Aphid) - Infra Red", + "name": "MPS-410", "quantity": 2 }, { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 }, { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-500*6,R-60M*2,Fuel*2", - "name": "FAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel tank 800L Wing", + "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + }, + { + "name": "L-081 Fantasmagoria ELINT pod", + "quantity": 1 } ], "enabled": true, - "code": "Fuel*4", - "name": "Fuel*4", + "code": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", + "name": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", "roles": [ - "FAC-A" + "SEAD" ] }, { @@ -26953,328 +27139,22 @@ }, { "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "name": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-8KOM*120,R-60M*2,Fuel*2", - "name": "S-8KOM*120,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", - "name": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*6,R-60M*2,Fuel*2", - "name": "FAB-250*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", - "name": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 8 - } - ], - "enabled": true, - "code": "FAB-100*32,R-60M*2", - "name": "FAB-100*32,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "RBK-250*8,R-60M*2", - "name": "RBK-250*8,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 6 - } - ], - "enabled": true, - "code": "S-25L*6,UB-13*2,R-60M*2", - "name": "S-25L*6,UB-13*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", "quantity": 4 }, { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", + "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", "quantity": 2 }, { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", - "name": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", - "quantity": 8 - } - ], - "enabled": true, - "code": "KMGU-2 (AO-2.5RT)*8,R-60M*2", - "name": "KMGU-2 (AO-2.5RT)*8,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 2 - }, - { - "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", + "name": "L-081 Fantasmagoria ELINT pod", "quantity": 1 } ], "enabled": true, - "code": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "name": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", + "code": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", + "name": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25*6,R-60M*2,Fuel*2", - "name": "S-25*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-60M*2,Fuel*2", - "name": "RBK-500AO*6,R-60M*2,Fuel*2", - "roles": [ - "CAS" + "SEAD" ] }, { @@ -27318,49 +27198,16 @@ "quantity": 2 }, { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 + "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", + "quantity": 8 } ], "enabled": true, - "code": "RBK-250*4,UB-32*4,R-60M*2", - "name": "RBK-250*4,UB-32*4,R-60M*2", + "code": "KMGU-2 (AO-2.5RT)*8,R-60M*2", + "name": "KMGU-2 (AO-2.5RT)*8,R-60M*2", "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", - "name": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", - "roles": [ - "SEAD" + "CAS", + "Strike" ] }, { @@ -27370,19 +27217,16 @@ "quantity": 2 }, { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 + "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", + "quantity": 8 } ], "enabled": true, - "code": "BetAB-500*6,R-60M*2,Fuel*2", - "name": "BetAB-500*6,R-60M*2,Fuel*2", + "code": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", + "name": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", "roles": [ - "Runway Attack" + "CAS", + "Strike" ] }, { @@ -27418,7 +27262,51 @@ "quantity": 2 }, { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "RBK-250*4,UB-32*4,R-60M*2", + "name": "RBK-250*4,UB-32*4,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 8 + } + ], + "enabled": true, + "code": "RBK-250*8,R-60M*2", + "name": "RBK-250*8,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", "quantity": 4 }, { @@ -27427,8 +27315,79 @@ } ], "enabled": true, - "code": "FAB-100*16,R-60M*2,Fuel*2", - "name": "FAB-100*16,R-60M*2,Fuel*2", + "code": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", + "name": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-500AO*6,R-60M*2,Fuel*2", + "name": "RBK-500AO*6,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 4 + } + ], + "enabled": true, + "code": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", + "name": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-25*6,R-60M*2,Fuel*2", + "name": "S-25*6,R-60M*2,Fuel*2", "roles": [ "Strike" ] @@ -27436,27 +27395,68 @@ { "items": [ { - "name": "MPS-410", + "name": "R-60M (AA-8 Aphid) - Infra Red", "quantity": 2 }, { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", "quantity": 2 }, { - "name": "R-73 (AA-11 Archer) - Infra Red", + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 6 + } + ], + "enabled": true, + "code": "S-25L*6,UB-13*2,R-60M*2", + "name": "S-25L*6,UB-13*2,R-60M*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", "quantity": 2 } ], "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", - "name": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", + "code": "S-8KOM*120,R-60M*2,Fuel*2", + "name": "S-8KOM*120,R-60M*2,Fuel*2", "roles": [ - "Antiship Strike" + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "UB-13*6,R-60M*2,Fuel*2", + "name": "UB-13*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" ] } ], @@ -27535,8 +27535,368 @@ "coalition": "red", "label": "Su-27 Flanker", "era": "Late Cold War", - "shortLabel": "27", + "shortLabel": "S27", "loadouts": [ + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": " CAS S-25 Rockets", + "name": " CAS S-25 Rockets", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500ShP*6,R-73*2,ECM", + "name": "BetAB-500ShP*6,R-73*2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS S-13 Rockets", + "name": "CAS S-13 Rockets", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-25 Rockets + FAB-500 Bombs", + "name": "CAS S-25 Rockets + FAB-500 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets", + "name": "CAS S-8KOM Rockets", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + FAB-100 Bombs", + "name": "CAS S-8KOM Rockets + FAB-100 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 5 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", + "quantity": 1 + }, + { + "name": "MBD3-U6-68 with 3 x FAB-250 - 250kg GP Bombs LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + FAB-250 Bombs", + "name": "CAS S-8KOM Rockets + FAB-250 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + FAB-500 Bombs", + "name": "CAS S-8KOM Rockets + FAB-500 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", + "quantity": 3 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + KMGU PTAB", + "name": "CAS S-8KOM Rockets + KMGU PTAB", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", + "name": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + RBK-500 PTAB1", + "name": "CAS S-8KOM Rockets + RBK-500 PTAB1", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + RBK-500 PTAB10", + "name": "CAS S-8KOM Rockets + RBK-500 PTAB10", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS S-8OFP Rockets", + "name": "CAS S-8OFP Rockets", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8OFP Rockets + FAB-100 Bombs", + "name": "CAS S-8OFP Rockets + FAB-100 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8OFP Rockets + FAB-500 Bombs", + "name": "CAS S-8OFP Rockets + FAB-500 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "ECM", + "name": "ECM", + "roles": [ + "FAC-A" + ] + }, { "items": [], "enabled": true, @@ -27550,26 +27910,27 @@ { "items": [ { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 }, { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 2 }, { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 } ], "enabled": true, - "code": "R-73*4,R-27ER*4,R-27ET*2", - "name": "R-73*4,R-27ER*4,R-27ET*2", + "code": "FAB-500*6,R-73*2,ECM", + "name": "FAB-500*6,R-73*2,ECM", "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" + "Strike" ] }, { @@ -27598,32 +27959,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500ShP*6,R-73*2,ECM", - "name": "BetAB-500ShP*6,R-73*2,ECM", - "roles": [ - "Runway Attack" - ] - }, { "items": [ { @@ -27650,6 +27985,39 @@ "Strike" ] }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-27ER*4,R-27ET*2,ECM", + "name": "R-73*2,R-27ER*4,R-27ET*2,ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, { "items": [ { @@ -27679,6 +28047,77 @@ "CAP" ] }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*4,ECM", + "name": "R-73*4,ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-73*4,R-27ER*4,R-27ET*2", + "name": "R-73*4,R-27ER*4,R-27ET*2", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*4,R-27ER*6", + "name": "R-73*4,R-27ER*6", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, { "items": [ { @@ -27730,129 +28169,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-27ER*6", - "name": "R-73*4,R-27ER*6", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27ER*4,R-27ET*2,ECM", - "name": "R-73*2,R-27ER*4,R-27ET*2,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*4,ECM", - "name": "R-73*4,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*6,R-73*2,ECM", - "name": "FAB-500*6,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -27904,322 +28220,6 @@ "roles": [ "Antiship Strike" ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + RBK-500 PTAB1", - "name": "CAS S-8KOM Rockets + RBK-500 PTAB1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8OFP Rockets + FAB-500 Bombs", - "name": "CAS S-8OFP Rockets + FAB-500 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-8OFP Rockets", - "name": "CAS S-8OFP Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8OFP Rockets + FAB-100 Bombs", - "name": "CAS S-8OFP Rockets + FAB-100 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + FAB-100 Bombs", - "name": "CAS S-8KOM Rockets + FAB-100 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-13 Rockets", - "name": "CAS S-13 Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 5 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - }, - { - "name": "MBD3-U6-68 with 3 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + FAB-250 Bombs", - "name": "CAS S-8KOM Rockets + FAB-250 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", - "name": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets", - "name": "CAS S-8KOM Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + FAB-500 Bombs", - "name": "CAS S-8KOM Rockets + FAB-500 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + RBK-500 PTAB10", - "name": "CAS S-8KOM Rockets + RBK-500 PTAB10", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 3 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + KMGU PTAB", - "name": "CAS S-8KOM Rockets + KMGU PTAB", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": " CAS S-25 Rockets", - "name": " CAS S-25 Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-25 Rockets + FAB-500 Bombs", - "name": "CAS S-25 Rockets + FAB-500 Bombs", - "roles": [ - "CAS" - ] } ], "filename": "su-27.png", @@ -28422,8 +28422,52 @@ "coalition": "red", "label": "Su-30 Super Flanker", "era": "Late Cold War", - "shortLabel": "30", + "shortLabel": "S30", "loadouts": [ + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500*6,R-73*2,ECM", + "name": "BetAB-500*6,R-73*2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "ECM", + "name": "ECM", + "roles": [ + "FAC-A" + ] + }, { "items": [], "enabled": true, @@ -28444,9 +28488,13 @@ "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 2 }, + { + "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", + "quantity": 2 + }, { "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 + "quantity": 2 }, { "name": "L005 Sorbtsiya ECM pod (right)", @@ -28454,13 +28502,10 @@ } ], "enabled": true, - "code": "R-73*2,R-77*6,ECM", - "name": "R-73*2,R-77*6,ECM", + "code": "FAB-1500*2,R-73*2,R-77*2,ECM", + "name": "FAB-1500*2,R-73*2,R-77*2,ECM", "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" + "Strike" ] }, { @@ -28474,11 +28519,11 @@ "quantity": 2 }, { - "name": "R-27T (AA-10 Alamo B) - Infra Red", + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", "quantity": 2 }, { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "name": "FAB-250 - 250kg GP Bomb LD", "quantity": 4 }, { @@ -28487,13 +28532,10 @@ } ], "enabled": true, - "code": "R-73*2,R-27T*2,R-27R*4", - "name": "R-73*2,R-27T*2,R-27R*4", + "code": "FAB-250*4,B-8*2,R-73*2,ECM", + "name": "FAB-250*4,B-8*2,R-73*2,ECM", "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" + "Strike" ] }, { @@ -28507,7 +28549,67 @@ "quantity": 2 }, { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*4,S-25*2,R-73*2,ECM", + "name": "FAB-250*4,S-25*2,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*4,UB-13*2,R-73*2,ECM", + "name": "FAB-250*4,UB-13*2,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", "quantity": 6 }, { @@ -28516,10 +28618,156 @@ } ], "enabled": true, - "code": "RBK-500AO*6,R-73*2,ECM", - "name": "RBK-500AO*6,R-73*2,ECM", + "code": "FAB-250*6,R-73*2,ECM", + "name": "FAB-250*6,R-73*2,ECM", "roles": [ - "CAS" + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*6,R-73*2,ECM", + "name": "FAB-500*6,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "KAB-1500L - 1500kg Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-1500*2,R-73*2,R-77*2,ECM", + "name": "KAB-1500*2,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "KAB-500LG - 500kg Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-500*4,R-73*2,R-77*2,ECM", + "name": "KAB-500*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*4,R-73*2,R-77*2,ECM", + "name": "Kh-29L*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29T*4,R-73*2,R-77*2,ECM", + "name": "Kh-29T*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" ] }, { @@ -28557,31 +28805,6 @@ "Antiship Strike" ] }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27T (AA-10 Alamo B) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4,R-27T*2,R-27R*4", - "name": "R-73*4,R-27T*2,R-27R*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, { "items": [ { @@ -28593,11 +28816,11 @@ "quantity": 2 }, { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 + "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", + "quantity": 4 }, { - "name": "Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", + "name": "R-77 (AA-12 Adder) - Active Rdr", "quantity": 2 }, { @@ -28606,10 +28829,10 @@ } ], "enabled": true, - "code": "R-73*2,R-77*2,Kh-35*2,ECM", - "name": "R-73*2,R-77*2,Kh-35*2,ECM", + "code": "Kh-31P*4,R-73*2,R-77*2,ECM", + "name": "Kh-31P*4,R-73*2,R-77*2,ECM", "roles": [ - "Antiship Strike" + "SEAD" ] }, { @@ -28657,55 +28880,7 @@ "quantity": 2 }, { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,B-8*2,R-73*2,ECM", - "name": "FAB-250*4,B-8*2,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-1500L - 1500kg Laser Guided Bomb", + "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", "quantity": 2 }, { @@ -28718,85 +28893,8 @@ } ], "enabled": true, - "code": "KAB-1500*2,R-73*2,R-77*2,ECM", - "name": "KAB-1500*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*6,R-73*2,ECM", - "name": "RBK-250*6,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-77*6", - "name": "R-73*4,R-77*6", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,S-25*2,R-73*2,ECM", - "name": "FAB-250*4,S-25*2,R-73*2,ECM", + "code": "Kh-59M*2,R-73*2,R-77*2,ECM", + "name": "Kh-59M*2,R-73*2,R-77*2,ECM", "roles": [ "Strike" ] @@ -28881,129 +28979,22 @@ "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 2 }, - { - "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-1500*2,R-73*2,R-77*2,ECM", - "name": "FAB-1500*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, { "name": "R-27T (AA-10 Alamo B) - Infra Red", "quantity": 2 }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-27T*2,R-27ER*2,R-77*2", - "name": "R-73*4,R-27T*2,R-27ER*2,R-77*2", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-59M*2,R-73*2,R-77*2,ECM", - "name": "Kh-59M*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*6,R-73*2,ECM", - "name": "FAB-500*6,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, { "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 + "quantity": 4 }, { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 } ], "enabled": true, - "code": "R-73*4,R-27R*2,R-27ER*4", - "name": "R-73*4,R-27R*2,R-27ER*4", + "code": "R-73*2,R-27T*2,R-27R*4", + "name": "R-73*2,R-27T*2,R-27R*4", "roles": [ "Escort", "CAP", @@ -29021,97 +29012,24 @@ "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 2 }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 4 - }, { "name": "R-77 (AA-12 Adder) - Active Rdr", "quantity": 2 }, { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*4,R-73*2,R-77*2,ECM", - "name": "Kh-29L*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", + "name": "Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", "quantity": 2 }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, { "name": "L005 Sorbtsiya ECM pod (right)", "quantity": 1 } ], "enabled": true, - "code": "BetAB-500*6,R-73*2,ECM", - "name": "BetAB-500*6,R-73*2,ECM", + "code": "R-73*2,R-77*2,Kh-35*2,ECM", + "name": "R-73*2,R-77*2,Kh-35*2,ECM", "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4", - "name": "R-73*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-73*2,ECM", - "name": "FAB-250*4,UB-13*2,R-73*2,ECM", - "roles": [ - "Strike" + "Antiship Strike" ] }, { @@ -29157,38 +29075,8 @@ "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 2 }, - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 4 - }, { "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-500*4,R-73*2,R-77*2,ECM", - "name": "KAB-500*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", "quantity": 6 }, { @@ -29197,10 +29085,109 @@ } ], "enabled": true, - "code": "FAB-250*6,R-73*2,ECM", - "name": "FAB-250*6,R-73*2,ECM", + "code": "R-73*2,R-77*6,ECM", + "name": "R-73*2,R-77*6,ECM", "roles": [ - "Strike" + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-73*4", + "name": "R-73*4", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2,R-27ER*4", + "name": "R-73*4,R-27R*2,R-27ER*4", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27T (AA-10 Alamo B) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-73*4,R-27T*2,R-27ER*2,R-77*2", + "name": "R-73*4,R-27T*2,R-27ER*2,R-77*2", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27T (AA-10 Alamo B) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-73*4,R-27T*2,R-27R*4", + "name": "R-73*4,R-27T*2,R-27R*4", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" ] }, { @@ -29230,32 +29217,23 @@ }, { "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, { "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", "quantity": 4 }, { "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 + "quantity": 6 } ], "enabled": true, - "code": "Kh-29T*4,R-73*2,R-77*2,ECM", - "name": "Kh-29T*4,R-73*2,R-77*2,ECM", + "code": "R-73*4,R-77*6", + "name": "R-73*4,R-77*6", "roles": [ - "Strike" + "Escort", + "CAP", + "CAP", + "CAP" ] }, { @@ -29269,12 +29247,8 @@ "quantity": 2 }, { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 6 }, { "name": "L005 Sorbtsiya ECM pod (right)", @@ -29282,10 +29256,36 @@ } ], "enabled": true, - "code": "Kh-31P*4,R-73*2,R-77*2,ECM", - "name": "Kh-31P*4,R-73*2,R-77*2,ECM", + "code": "RBK-250*6,R-73*2,ECM", + "name": "RBK-250*6,R-73*2,ECM", "roles": [ - "SEAD" + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-500AO*6,R-73*2,ECM", + "name": "RBK-500AO*6,R-73*2,ECM", + "roles": [ + "CAS" ] } ], @@ -29367,16 +29367,36 @@ "coalition": "red", "label": "Su-33 Navy Flanker", "era": "Late Cold War", - "shortLabel": "33", + "shortLabel": "S33", "loadouts": [ { - "items": [], + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "B-8*4,FAB-250*4,R-73*2,ECM", + "name": "B-8*4,FAB-250*4,R-73*2,ECM", "roles": [ - "No task", - "CAP" + "Strike" ] }, { @@ -29394,7 +29414,7 @@ "quantity": 2 }, { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", "quantity": 6 }, { @@ -29403,8 +29423,30 @@ } ], "enabled": true, - "code": "RBK-250*6,R-73*2,R-27R*2,ECM", - "name": "RBK-250*6,R-73*2,R-27R*2,ECM", + "code": "BetAB-500*6,R-73*2,R-27R*2,ECM", + "name": "BetAB-500*6,R-73*2,R-27R*2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-13 Rockets + FAB100", + "name": "CAS S-13 Rockets + FAB100", "roles": [ "CAS" ] @@ -29414,16 +29456,21 @@ { "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 4 + }, + { + "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 } ], "enabled": true, - "code": "R-73*4", - "name": "R-73*4", + "code": "CAS S-13 Rockets + FAB500", + "name": "CAS S-13 Rockets + FAB500", "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" + "CAS" ] }, { @@ -29433,22 +29480,133 @@ "quantity": 4 }, { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", "quantity": 2 }, { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 } ], "enabled": true, - "code": "R-73*4,R-27R*2,R-27ER*6", - "name": "R-73*4,R-27R*2,R-27ER*6", + "code": "CAS S-25 Rockets + FAB500", + "name": "CAS S-25 Rockets + FAB500", "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS S-8KOM rockets + FAB250", + "name": "CAS S-8KOM rockets + FAB250", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM rockets + FAB500", + "name": "CAS S-8KOM rockets + FAB500", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM rockets + RBK500 PTAB1", + "name": "CAS S-8KOM rockets + RBK500 PTAB1", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM rockets + RBK500 PTAB10", + "name": "CAS S-8KOM rockets + RBK500 PTAB10", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8OFP rockets + FAB500", + "name": "CAS S-8OFP rockets + FAB500", + "roles": [ + "CAS" ] }, { @@ -29457,55 +29615,25 @@ "name": "L005 Sorbtsiya ECM pod (left)", "quantity": 1 }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, { "name": "L005 Sorbtsiya ECM pod (right)", "quantity": 1 } ], "enabled": true, - "code": "R-73*2,R-27ET*2,R-27ER*6,ECM", - "name": "R-73*2,R-27ET*2,R-27ER*6,ECM", + "code": "ECM", + "name": "ECM", "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" + "FAC-A" ] }, { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - } - ], + "items": [], "enabled": true, - "code": "R-73*4,R-27ET*2,R-27ER*6", - "name": "R-73*4,R-27ET*2,R-27ER*6", + "code": "", + "name": "Empty loadout", "roles": [ - "CAP", - "Escort", - "CAP", + "No task", "CAP" ] }, @@ -29539,6 +29667,69 @@ "Strike" ] }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*6,R-73*2,R-27R*2,ECM", + "name": "FAB-500*6,R-73*2,R-27R*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-27ET*2,R-27ER*6,ECM", + "name": "R-73*2,R-27ET*2,R-27ER*6,ECM", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, { "items": [ { @@ -29575,19 +29766,68 @@ { "items": [ { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 } ], "enabled": true, - "code": "ECM", - "name": "ECM", + "code": "R-73*4", + "name": "R-73*4", "roles": [ - "FAC-A" + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*4,R-27ET*2,R-27ER*6", + "name": "R-73*4,R-27ET*2,R-27ER*6", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2,R-27ER*6", + "name": "R-73*4,R-27R*2,R-27ER*6", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" ] }, { @@ -29605,7 +29845,7 @@ "quantity": 2 }, { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", "quantity": 6 }, { @@ -29614,10 +29854,10 @@ } ], "enabled": true, - "code": "BetAB-500*6,R-73*2,R-27R*2,ECM", - "name": "BetAB-500*6,R-73*2,R-27R*2,ECM", + "code": "RBK-250*6,R-73*2,R-27R*2,ECM", + "name": "RBK-250*6,R-73*2,R-27R*2,ECM", "roles": [ - "Runway Attack" + "CAS" ] }, { @@ -29650,36 +29890,6 @@ "CAS" ] }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-13*4,FAB-250*4,R-73*2,ECM", - "name": "UB-13*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -29710,66 +29920,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*6,R-73*2,R-27R*2,ECM", - "name": "FAB-500*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*4,FAB-250*4,R-73*2,ECM", - "name": "B-8*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -29795,181 +29945,31 @@ { "items": [ { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 }, { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "name": "R-73 (AA-11 Archer) - Infra Red", "quantity": 2 }, { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 } ], "enabled": true, - "code": "CAS S-8KOM rockets + FAB500", - "name": "CAS S-8KOM rockets + FAB500", + "code": "UB-13*4,FAB-250*4,R-73*2,ECM", + "name": "UB-13*4,FAB-250*4,R-73*2,ECM", "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8OFP rockets + FAB500", - "name": "CAS S-8OFP rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-13 Rockets + FAB500", - "name": "CAS S-13 Rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-13 Rockets + FAB100", - "name": "CAS S-13 Rockets + FAB100", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + FAB250", - "name": "CAS S-8KOM rockets + FAB250", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-25 Rockets + FAB500", - "name": "CAS S-25 Rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + RBK500 PTAB10", - "name": "CAS S-8KOM rockets + RBK500 PTAB10", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + RBK500 PTAB1", - "name": "CAS S-8KOM rockets + RBK500 PTAB1", - "roles": [ - "CAS" + "Strike" ] } ], @@ -30044,7 +30044,7 @@ }, "type": "Aircraft", "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR", + "abilities": "Drogue AAR, Carrier", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": true, @@ -30055,15 +30055,39 @@ "coalition": "red", "label": "Su-34 Hellduck", "era": "Modern", - "shortLabel": "34", + "shortLabel": "S34", "loadouts": [ { - "items": [], + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "B-8*6,R-73*2,R-27R*2,ECM", + "name": "B-8*6,R-73*2,R-27R*2,ECM", "roles": [ - "No task", "Strike" ] }, @@ -30078,12 +30102,8 @@ "quantity": 2 }, { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 8 }, { "name": "L005 Sorbtsiya ECM pod (right)", @@ -30091,9 +30111,37 @@ } ], "enabled": true, - "code": "UB-13*4,FAB-250*4,R-73*2,ECM", - "name": "UB-13*4,FAB-250*4,R-73*2,ECM", + "code": "BetAB-500*8,R-73*2,ECM", + "name": "BetAB-500*8,R-73*2,ECM", "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "ECM", + "name": "ECM", + "roles": [ + "FAC-A" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", "Strike" ] }, @@ -30127,218 +30175,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*8,R-73*2,ECM", - "name": "BetAB-500*8,R-73*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*4,R-73*2,R-77*2,ECM", - "name": "Kh-29L*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-500*4,R-73*2,R-77*2,ECM", - "name": "KAB-500*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", - "name": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*8,R-73*2,ECM", - "name": "FAB-250*8,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29T*4,R-73*2,R-77*2,ECM", - "name": "Kh-29T*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500 PTAB-10-5*8,R-73*2,ECM", - "name": "RBK-500 PTAB-10-5*8,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, { "items": [ { @@ -30380,12 +30216,8 @@ "quantity": 2 }, { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", - "quantity": 2 + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 8 }, { "name": "L005 Sorbtsiya ECM pod (right)", @@ -30393,42 +30225,8 @@ } ], "enabled": true, - "code": "Kh-59M*2,R-73*2,R-77*2,ECM", - "name": "Kh-59M*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*6,R-73*2,R-27R*2,ECM", - "name": "B-8*6,R-73*2,R-27R*2,ECM", + "code": "FAB-250*8,R-73*2,ECM", + "name": "FAB-250*8,R-73*2,ECM", "roles": [ "Strike" ] @@ -30489,6 +30287,96 @@ "Strike" ] }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "KAB-500LG - 500kg Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-500*4,R-73*2,R-77*2,ECM", + "name": "KAB-500*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*4,R-73*2,R-27R*2,ECM", + "name": "Kh-29L*4,R-73*2,R-27R*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*4,R-73*2,R-77*2,ECM", + "name": "Kh-29L*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -30519,6 +30407,36 @@ "CAS" ] }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29T*4,R-73*2,R-77*2,ECM", + "name": "Kh-29T*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -30624,11 +30542,11 @@ "quantity": 2 }, { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 4 + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 }, { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", "quantity": 2 }, { @@ -30637,11 +30555,93 @@ } ], "enabled": true, - "code": "Kh-29L*4,R-73*2,R-27R*2,ECM", - "name": "Kh-29L*4,R-73*2,R-27R*2,ECM", + "code": "Kh-59M*2,R-73*2,R-77*2,ECM", + "name": "Kh-59M*2,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 8 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", + "name": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", "roles": [ "CAS" ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 8 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-500 PTAB-10-5*8,R-73*2,ECM", + "name": "RBK-500 PTAB-10-5*8,R-73*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "UB-13*4,FAB-250*4,R-73*2,ECM", + "name": "UB-13*4,FAB-250*4,R-73*2,ECM", + "roles": [ + "Strike" + ] } ], "filename": "su-34.png", @@ -30675,16 +30675,6 @@ "era": "Late Cold War", "shortLabel": "GR4", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, { "items": [ { @@ -30752,8 +30742,8 @@ "quantity": 2 }, { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 2 + "name": "BL-755 CBU - 450kg, 147 Frag/Pen bomblets", + "quantity": 4 }, { "name": "Sky-Shadow ECM Pod", @@ -30761,11 +30751,19 @@ } ], "enabled": true, - "code": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", - "name": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", + "code": "BL755*4, AIM-9M*2, Fuel*2, ECM", + "name": "BL755*4, AIM-9M*2, Fuel*2, ECM", "roles": [ - "Strike", - "FAC-A", + "Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", "Strike" ] }, @@ -30784,8 +30782,8 @@ "quantity": 2 }, { - "name": "BL-755 CBU - 450kg, 147 Frag/Pen bomblets", - "quantity": 4 + "name": "GBU-16 - 1000lb Laser Guided Bomb", + "quantity": 2 }, { "name": "Sky-Shadow ECM Pod", @@ -30793,9 +30791,11 @@ } ], "enabled": true, - "code": "BL755*4, AIM-9M*2, Fuel*2, ECM", - "name": "BL755*4, AIM-9M*2, Fuel*2, ECM", + "code": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", + "name": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", "roles": [ + "Strike", + "FAC-A", "Strike" ] }, @@ -30885,6 +30885,62 @@ "era": "Late Cold War", "shortLabel": "IDS", "loadouts": [ + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 1 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 2 + }, + { + "name": "Sky-Shadow ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-88*2,AIM-9*2,Fuel*2,ECM", + "name": "AGM-88*2,AIM-9*2,Fuel*2,ECM", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 1 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 4 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Sky-Shadow ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-88*4,AIM-9*2,ECM", + "name": "AGM-88*4,AIM-9*2,ECM", + "roles": [ + "SEAD" + ] + }, { "items": [], "enabled": true, @@ -30904,21 +30960,13 @@ { "name": "TORNADO Fuel tank", "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Kormoran - ASM", - "quantity": 2 } ], "enabled": true, - "code": "Kormoran*2,AIM-9*2,Fuel*2", - "name": "Kormoran*2,AIM-9*2,Fuel*2", + "code": "Fuel*2", + "name": "Fuel*2", "roles": [ - "Antiship Strike" + "FAC-A" ] }, { @@ -30953,49 +31001,31 @@ "name": "BOZ-107 - Countermeasure Dispenser", "quantity": 2 }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel*2", - "name": "Fuel*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, { "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 + "quantity": 2 }, { "name": "AIM-9M Sidewinder IR AAM", "quantity": 2 }, { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 + "name": "Kormoran - ASM", + "quantity": 2 } ], "enabled": true, - "code": "AGM-88*4,AIM-9*2,ECM", - "name": "AGM-88*4,AIM-9*2,ECM", + "code": "Kormoran*2,AIM-9*2,AGM-88*2", + "name": "Kormoran*2,AIM-9*2,AGM-88*2", "roles": [ - "SEAD" + "Antiship Strike" ] }, { "items": [ { "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 + "quantity": 2 }, { "name": "TORNADO Fuel tank", @@ -31006,19 +31036,15 @@ "quantity": 2 }, { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "name": "Kormoran - ASM", "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 } ], "enabled": true, - "code": "AGM-88*2,AIM-9*2,Fuel*2,ECM", - "name": "AGM-88*2,AIM-9*2,Fuel*2,ECM", + "code": "Kormoran*2,AIM-9*2,Fuel*2", + "name": "Kormoran*2,AIM-9*2,Fuel*2", "roles": [ - "SEAD" + "Antiship Strike" ] }, { @@ -31043,32 +31069,6 @@ "Antiship Strike" ] }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Kormoran - ASM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kormoran*2,AIM-9*2,AGM-88*2", - "name": "Kormoran*2,AIM-9*2,AGM-88*2", - "roles": [ - "Antiship Strike" - ] - }, { "items": [ { @@ -31282,29 +31282,16 @@ { "items": [ { - "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", + "name": "33 x FAB-250 - 250kg GP Bombs LD", "quantity": 1 } ], "enabled": true, - "code": "Kh-22N", - "name": "Kh-22N", + "code": "FAB-250*33", + "name": "FAB-250*33", "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-22N*2", - "name": "Kh-22N*2", - "roles": [ - "Antiship Strike" + "Strike", + "Runway Attack" ] }, { @@ -31363,16 +31350,29 @@ { "items": [ { - "name": "33 x FAB-250 - 250kg GP Bombs LD", + "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", "quantity": 1 } ], "enabled": true, - "code": "FAB-250*33", - "name": "FAB-250*33", + "code": "Kh-22N", + "name": "Kh-22N", "roles": [ - "Strike", - "Runway Attack" + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-22N*2", + "name": "Kh-22N*2", + "roles": [ + "Antiship Strike" ] } ], @@ -31400,7 +31400,7 @@ "coalition": "red", "label": "Tu-95MS Bear", "era": "Mid Cold War", - "shortLabel": "95", + "shortLabel": "T95", "loadouts": [ { "items": [], @@ -31455,15 +31455,69 @@ "enabled": true, "loadouts": [ { - "items": [], + "items": [ + { + "name": "Captive AIM-9M for ACM", + "quantity": 1 + }, + { + "name": "BDU-50LGB * 2", + "quantity": 2 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": null, + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", + "name": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", "roles": [ - "No task", "Strike" ] }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "Mk-82 * 6", + "quantity": 2 + }, + { + "name": null, + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", + "name": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", + "roles": [ + "CAS" + ] + }, { "items": [ { @@ -31500,270 +31554,42 @@ }, { "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, { "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 + "quantity": 2 + }, + { + "name": "GBU-12 * 4", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": null, + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "GBU-10 * 2", + "quantity": 1 }, { "name": "Fuel tank 610 gal", "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 } ], "enabled": true, - "code": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", - "name": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "CBU-87 * 3", - "quantity": 2 - }, - { - "name": null, - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", - "name": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", - "name": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": null, - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Mk-82 * 6", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": null, - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "CBU-97 * 3", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", - "name": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Captive AIM-9M for ACM", - "quantity": 3 - }, - { - "name": null, - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "CATM-9M x 3, AIM-120B", - "name": "CATM-9M x 3, AIM-120B", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": null, - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": null, - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "CATM-9M, CAIM-120", - "name": "CATM-9M, CAIM-120", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "BDU-50LGB * 2", - "quantity": 2 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": null, - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", - "name": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", + "code": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", + "name": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", "roles": [ "Strike" ] @@ -31817,11 +31643,11 @@ "quantity": 2 }, { - "name": "Mk-82 * 6", - "quantity": 2 + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 }, { - "name": null, + "name": "AN/AAQ-13 LANTIRN NAV POD", "quantity": 1 }, { @@ -31830,12 +31656,103 @@ } ], "enabled": true, - "code": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", - "name": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", + "code": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", + "name": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 AIR * 6", + "quantity": 2 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", + "name": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", + "roles": [ + "Strike", "CAS" ] }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", + "name": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": null, + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", + "name": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", + "roles": [ + "CAP" + ] + }, { "items": [ { @@ -31866,87 +31783,6 @@ "CAS" ] }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-12 * 4", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": null, - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "GBU-10 * 2", - "quantity": 1 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", - "name": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": null, - "quantity": 3 - } - ], - "enabled": true, - "code": "Clean", - "name": "Clean", - "roles": [] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "Mk-20 Rockeye * 6", - "quantity": 2 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", - "roles": [ - "Strike", - "CAS" - ] - }, { "items": [ { @@ -31981,20 +31817,141 @@ { "items": [ { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", "quantity": 2 }, + { + "name": "CBU-87 * 3", + "quantity": 2 + }, + { + "name": null, + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", + "name": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "Mk-20 Rockeye * 6", + "quantity": 2 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", + "name": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, { "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Mk-82 * 6", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": null, + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "CBU-97 * 3", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", + "name": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": null, + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", + "name": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Captive AIM-9M for ACM", "quantity": 3 }, { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 + "name": null, + "quantity": 1 }, { - "name": "Mk-82 AIR * 6", - "quantity": 2 + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 }, { "name": "AN/AAQ-14 LANTIRN TGT Pod", @@ -32006,11 +31963,54 @@ } ], "enabled": true, - "code": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", - "name": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", + "code": "CATM-9M x 3, AIM-120B", + "name": "CATM-9M x 3, AIM-120B", "roles": [ - "Strike", - "CAS" + "CAP" + ] + }, + { + "items": [ + { + "name": "Captive AIM-9M for ACM", + "quantity": 1 + }, + { + "name": null, + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "CATM-9M, CAIM-120", + "name": "CATM-9M, CAIM-120", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": null, + "quantity": 3 + } + ], + "enabled": true, + "code": "Clean", + "name": "Clean", + "roles": [] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" ] } ], diff --git a/client/public/databases/units/groundunitdatabase.json b/client/public/databases/units/groundunitdatabase.json index cf7ca6af..04fe6d6b 100644 --- a/client/public/databases/units/groundunitdatabase.json +++ b/client/public/databases/units/groundunitdatabase.json @@ -3,10 +3,10 @@ "name": "1L13 EWR", "coalition": "red", "era": "Late Cold War", - "label": "Box Spring", - "shortLabel": "1L13 EWR", + "label": "Box Spring 1L13 EWR", + "shortLabel": "Box spring", "filename": "", - "type": "EW Radar", + "type": "Radar (EWR)", "enabled": true, "liveries": { "desert": { @@ -16,8 +16,8 @@ }, "acquisitionRange": 300000, "engagementRange": 0, - "description": "EWR built on a truck trailer", - "abilities": "", + "description": "Box Spring 1L13 early warning radar built on the back of a trailer", + "abilities": "EWR, Radar, Fixed", "canTargetPoint": false, "canRearm": false }, @@ -55,9 +55,13 @@ "acquisitionRange": 0, "engagementRange": 7000, "description": "Man portable 120mm mortar", - "abilities": "", + "abilities": "Indirect fire,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "barrelHeight": 1, + "muzzleVelocity": 325, + "aimTime": 5, + "shotsToFire": 100 }, "2S6 Tunguska": { "name": "2S6 Tunguska", @@ -67,7 +71,7 @@ "shortLabel": "SA-19", "range": "Short", "filename": "", - "type": "AAA", + "type": "SAM Site", "enabled": true, "liveries": { "winter": { @@ -109,19 +113,24 @@ }, "acquisitionRange": 18000, "engagementRange": 8000, - "description": "2K22 Tunguska. Tracked self-propelled anti-aircraft 30mm guns and missiles", - "abilities": "", + "description": "2K22 Tunguska. Tracked radar 30 mm AAA gun with optically guided (SACLOS) missile.", + "abilities": "Combined arms, Radar,Optical, AA", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "muzzleVelocity": 1000, + "barrelHeight": 2, + "aimTime": 5, + "shotsToFire": 10, + "cost": null }, "55G6 EWR": { "name": "55G6 EWR", "coalition": "red", - "era": "Early Cold War", - "label": "Tall Rack", - "shortLabel": "55G6 EWR", + "era": "Late Cold War", + "label": "Tall Rack 55G6 EWR", + "shortLabel": "Tall Rack", "filename": "", - "type": "EW Radar", + "type": "Radar (EWR)", "enabled": true, "liveries": { "desert": { @@ -131,20 +140,20 @@ }, "acquisitionRange": 400000, "engagementRange": 0, - "description": "EWR built on a truck trailer", - "abilities": "", + "description": "Tall rack 55G6 early warning radar built on the back of a trailer", + "abilities": "EWR, Radar, Fixed", "canTargetPoint": false, "canRearm": false }, "5p73 s-125 ln": { "name": "5p73 s-125 ln", "coalition": "red", - "era": "Early Cold War", + "era": "Mid Cold War", "label": "SA-3 Launcher", "shortLabel": "5p73 s-125 ln", "range": "Medium", "filename": "", - "type": "SAM Launcher", + "type": "SAM Site Parts", "enabled": true, "liveries": { "winter": { @@ -188,17 +197,17 @@ "engagementRange": 18000, "description": "4 SA-3 missiles on a static emplacement. Requires grouping with SA-3 components", "abilities": "", - "canTargetPoint": true, + "canTargetPoint": false, "canRearm": false }, "AAV7": { "name": "AAV7", "coalition": "blue", - "era": "Mid Cold War", + "era": "Late Cold War", "label": "AAV7", "shortLabel": "AAV7", "filename": "", - "type": "Armoured Personnel Carrier", + "type": "APC", "enabled": true, "liveries": { "winter": { @@ -224,17 +233,21 @@ }, "acquisitionRange": 0, "engagementRange": 1200, - "description": "Amphibious assault vehicle. Tracked", - "abilities": "", + "description": "Amphibious assault vehicle 7. Tracked. Turret mounted 12.7mm machine gun and 40mm grenade launcher.", + "abilities": "Combined arms, Transport, Amphibious", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "barrelHeight": 3, + "muzzleVelocity": 900, + "aimTime": 10, + "shotsToFire": 100 }, "ATMZ-5": { "name": "ATMZ-5", "coalition": "red", "era": "Early Cold War", - "label": "ATMZ-5", - "shortLabel": "ATMZ-5", + "label": "ATMZ-5 (Fuel Truck)", + "shortLabel": "ATMZ-5 Fuel", "filename": "", "type": "Unarmed", "enabled": true, @@ -247,7 +260,7 @@ "acquisitionRange": 0, "engagementRange": 0, "description": "Refueler truck. Wheeled", - "abilities": "", + "abilities": "Unarmed, Refuel", "canTargetPoint": false, "canRearm": false }, @@ -255,8 +268,8 @@ "name": "ATZ-10", "coalition": "red", "era": "Early Cold War", - "label": "ATZ-10", - "shortLabel": "ATZ-10", + "label": "ATZ-10 (Fuel Truck)", + "shortLabel": "ATZ-10 Fuel", "filename": "", "type": "Unarmed", "enabled": true, @@ -269,7 +282,7 @@ "acquisitionRange": 0, "engagementRange": 0, "description": "Refueler truck. Wheeled", - "abilities": "", + "abilities": "Unarmed, Refuel", "canTargetPoint": false, "canRearm": false }, @@ -280,7 +293,7 @@ "label": "BMD-1", "shortLabel": "BMD-1", "filename": "", - "type": "Infantry Fighting Vehicle", + "type": "APC", "enabled": true, "liveries": { "winter": { @@ -324,14 +337,16 @@ "countries": "All" } }, - "barrelHeight": 1.25, - "muzzleVelocity": 900, + "barrelHeight": 1.95, + "muzzleVelocity": 665, "acquisitionRange": 0, "engagementRange": 3000, - "description": "Infantry fighting vehicle. Tracked. Amphibious", - "abilities": "", + "description": "BMD-1 IFV. Tracked. Amphibious. 73 mm gun, AT-3 Sagger wire guided missile. ", + "abilities": "Combined arms, Amphibious, Transport", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "shotsToFire": 100, + "aimTime": 5 }, "BMP-1": { "name": "BMP-1", @@ -340,7 +355,7 @@ "label": "BMP-1", "shortLabel": "BMP-1", "filename": "", - "type": "Infantry Fighting Vehicle", + "type": "APC", "enabled": true, "liveries": { "winter": { @@ -430,19 +445,23 @@ }, "acquisitionRange": 0, "engagementRange": 3000, - "description": "Infantry fighting vehicle. Tracked. Amphibious", - "abilities": "", + "description": "BMP-1 IFV. Tracked. Amphibious. 73 mm gun, AT-3 Sagger wire guided missile. ", + "abilities": "Combined arms, Amphibious, Transport", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "barrelHeight": 1.95, + "muzzleVelocity": 665, + "aimTime": 5, + "shotsToFire": 100 }, "BMP-2": { "name": "BMP-2", "coalition": "red", - "era": "Mid Cold War", + "era": "Late Cold War", "label": "BMP-2", "shortLabel": "BMP-2", "filename": "", - "type": "Infantry Fighting Vehicle", + "type": "APC", "enabled": true, "liveries": { "ukr_summer": { @@ -515,13 +534,15 @@ } }, "barrelHeight": 1.95, - "muzzleVelocity": 970, + "muzzleVelocity": 950, "acquisitionRange": 0, "engagementRange": 3000, - "description": "Infantry fighting vehicle. Tracked. Amphibious", - "abilities": "", + "description": "BMP-2 IFV. Tracked. Amphibious. 30 mm gun, AT-5 Spandrel wire guided missile. ", + "abilities": "Combined arms, Amphibious, Transport, AA", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "aimTime": 5, + "shotsToFire": 100 }, "BMP-3": { "name": "BMP-3", @@ -530,7 +551,7 @@ "label": "BMP-3", "shortLabel": "BMP-3", "filename": "", - "type": "Infantry Fighting Vehicle", + "type": "APC", "enabled": true, "liveries": { "winter": { @@ -572,19 +593,23 @@ }, "acquisitionRange": 0, "engagementRange": 4000, - "description": "Infantry fighting vehicle. Tracked. Amphibious", - "abilities": "", + "description": "BMP-2 IFV. Tracked. Amphibious. 100 mm gun. 30 mm gun, AT-10 Stabber wire guided missile. ", + "abilities": "Combined arms, Amphibious, Transport, AA", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "barrelHeight": 2.3, + "muzzleVelocity": 1080, + "aimTime": 5, + "shotsToFire": 100 }, "BRDM-2": { "name": "BRDM-2", "coalition": "red", - "era": "Early Cold War", + "era": "Mid Cold War", "label": "BRDM-2", "shortLabel": "BRDM-2", "filename": "", - "type": "Armoured Car", + "type": "Tactical Vehicle", "enabled": true, "liveries": { "winter": { @@ -626,10 +651,14 @@ }, "acquisitionRange": 0, "engagementRange": 1600, - "description": "Scout car. Wheeled. Amphibious", - "abilities": "", - "canTargetPoint": false, - "canRearm": false + "description": "BRDM-2 light armour tactical vehicle. Wheeled. Amphibious. 14.5 mm gun.", + "abilities": "Combined arms, Amphibious, AA", + "canTargetPoint": true, + "canRearm": false, + "muzzleVelocity": 1005, + "barrelHeight": 2.25, + "aimTime": 5, + "shotsToFire": 100 }, "BTR-80": { "name": "BTR-80", @@ -638,7 +667,7 @@ "label": "BTR-80", "shortLabel": "BTR-80", "filename": "", - "type": "Armoured Personnel Carrier", + "type": "APC", "enabled": true, "liveries": { "winter": { @@ -712,10 +741,14 @@ }, "acquisitionRange": 0, "engagementRange": 1600, - "description": "Armoured persononel carrier. Wheeled. Amphibious", - "abilities": "", + "description": "BTR 80 APC. Wheeled. Amphibious. 14.5 mm gun and 7.62 mm coax.", + "abilities": "Combined arms, Amphibious, Transport, AA", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "barrelHeight": 2.2, + "muzzleVelocity": 900, + "aimTime": 5, + "shotsToFire": 100 }, "BTR_D": { "name": "BTR_D", @@ -724,7 +757,7 @@ "label": "BTR_D", "shortLabel": "BTR_D", "filename": "", - "type": "Armoured Personnel Carrier", + "type": "APC", "enabled": true, "liveries": { "winter": { @@ -766,9 +799,9 @@ }, "acquisitionRange": 0, "engagementRange": 3000, - "description": "Armoured persononel carrier. Tracked.", - "abilities": "", - "canTargetPoint": true, + "description": "BTR_D IFV. Tracked. Amphibious. AT-5 Spandrel wire guided missile. ", + "abilities": "Combined arms, Amphibious, Transport", + "canTargetPoint": false, "canRearm": false }, "Bunker": { @@ -782,7 +815,7 @@ "enabled": true, "acquisitionRange": 0, "engagementRange": 800, - "description": "Concrete bunker. Structure. Fixed Position.", + "description": "Concrete bunker. Structure. Fixed Position. Light machine guns.", "abilities": "", "canTargetPoint": false, "canRearm": false @@ -790,9 +823,9 @@ "Challenger2": { "name": "Challenger2", "coalition": "blue", - "era": "Modern", - "label": "Challenger2", - "shortLabel": "Challenger2", + "era": "Late Cold War", + "label": "Challenger 2", + "shortLabel": "Challenger 2", "filename": "", "type": "Tank", "enabled": true, @@ -808,10 +841,14 @@ }, "acquisitionRange": 0, "engagementRange": 3500, - "description": "Main battle tank. Tracked. Modern and heavily armoured.", - "abilities": "", + "description": "Main battle tank. Tracked. 120 mm rifled main gun (APFSDS and HESH), 7.62 mm coax machine gun.", + "abilities": "Combined arms", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "barrelHeight": 2.1, + "muzzleVelocity": 800, + "aimTime": 5, + "shotsToFire": 100 }, "Cobra": { "name": "Cobra", @@ -1000,7 +1037,7 @@ "Gepard": { "name": "Gepard", "coalition": "blue", - "era": "Late Cold War", + "era": "Mid Cold War", "label": "Gepard", "shortLabel": "Gepard", "filename": "", @@ -1029,19 +1066,17 @@ } }, "barrelHeight": 2.35, - "muzzleVelocity": 1000, + "muzzleVelocity": 1440, "acquisitionRange": 15000, "engagementRange": 4000, - "description": "Tracked self-propelled anti-aircraft 35mm guns", - "abilities": "", + "description": "Tracked self-propelled anti-aircraft 35mm radar guided guns", + "abilities": "Radar, Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, "canRearm": false, - "canAAA": true, "aimTime": 5, - "shotsToFire": 2, - "shotsBaseInterval": 5, - "shotsBaseScatter": 2, - "targetingRange": 800 + "shotsToFire": 100, + "cost": 15000000, + "canAAA": true }, "Grad-URAL": { "name": "Grad-URAL", @@ -2281,15 +2316,18 @@ "filename": "", "type": "Infantry", "enabled": true, - "muzzleVelocity": 900, + "muzzleVelocity": 800, "barrelHeight": 0.9, "acquisitionRange": 0, "engagementRange": 500, "description": "Single infantry carrying AK-74", - "abilities": "", + "abilities": "Embark,", "canTargetPoint": true, - "canRearm": false, - "canAAA": true + "canRearm": true, + "aimTime": 5, + "shotsToFire": 100, + "canAAA": true, + "aimMethodRange": 1000 }, "KAMAZ Truck": { "name": "KAMAZ Truck", @@ -6071,10 +6109,15 @@ }, "acquisitionRange": 5000, "engagementRange": 2500, - "description": "", - "abilities": "", + "description": "Ural ZU-23. Truck mounted ZU-23 AAA 23 mm gun manually aimed.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "shotsToFire": 100, + "aimTime": 8, + "muzzleVelocity": 1000, + "barrelHeight": 3, + "cost": 90000 }, "Ural-375 ZU-23": { "name": "Ural-375 ZU-23", @@ -6093,10 +6136,15 @@ }, "acquisitionRange": 5000, "engagementRange": 2500, - "description": "", - "abilities": "", + "description": "Ural ZU-23. Truck mounted ZU-23 AAA 23 mm gun manually aimed.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "cost": 90000, + "barrelHeight": 3, + "muzzleVelocity": 1000, + "aimTime": 8, + "shotsToFire": 1000 }, "Ural-375": { "name": "Ural-375", @@ -6205,7 +6253,7 @@ "Vulcan": { "name": "Vulcan", "coalition": "blue", - "era": "Late Cold War", + "era": "Mid Cold War", "label": "Vulcan", "shortLabel": "Vulcan", "filename": "", @@ -6267,10 +6315,15 @@ }, "acquisitionRange": 5000, "engagementRange": 2000, - "description": "", - "abilities": "", + "description": "M113 Vulcan. Tracked M113 APC with Vulcan 20 mm cannon .", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "cost": 500000, + "barrelHeight": 2.5, + "muzzleVelocity": 900, + "aimTime": 10, + "shotsToFire": 100 }, "ZIL-131 KUNG": { "name": "ZIL-131 KUNG", @@ -6383,7 +6436,7 @@ "ZSU-23-4 Shilka": { "name": "ZSU-23-4 Shilka", "coalition": "red", - "era": "Late Cold War", + "era": "Mid Cold War", "label": "ZSU-23-4 Shilka", "shortLabel": "ZSU-23-4 Shilka", "filename": "", @@ -6459,12 +6512,17 @@ "countries": "All" } }, - "acquisitionRange": 5000, + "acquisitionRange": 8000, "engagementRange": 2500, - "description": "Ship", - "abilities": "", + "description": "ZSU-23-4 Shilka. Tracked lightly armoured radar AAA gun. 4 x 23 mm autocannons.", + "abilities": "Radar, Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "barrelHeight": 1.8, + "muzzleVelocity": 1000, + "aimTime": 9, + "shotsToFire": 100, + "cost": 2500000 }, "ZU-23 Closed Insurgent": { "name": "ZU-23 Closed Insurgent", @@ -6483,10 +6541,15 @@ }, "acquisitionRange": 5000, "engagementRange": 2500, - "description": "", - "abilities": "", + "description": "ZSU-23. Fixed. Manually aimed AAA 23 mm autocannons. Sandbags.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "barrelHeight": 2, + "muzzleVelocity": 1000, + "aimTime": 9, + "shotsToFire": 100, + "cost": 50000 }, "ZU-23 Emplacement Closed": { "name": "ZU-23 Emplacement Closed", @@ -6521,10 +6584,15 @@ }, "acquisitionRange": 5000, "engagementRange": 2500, - "description": "", - "abilities": "", + "description": "ZSU-23. Fixed. Manually aimed AAA 23 mm autocannons. Sandbags.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "shotsToFire": 100, + "aimTime": 9, + "muzzleVelocity": 1000, + "barrelHeight": 1.5, + "cost": 50000 }, "ZU-23 Emplacement": { "name": "ZU-23 Emplacement", @@ -6559,10 +6627,15 @@ }, "acquisitionRange": 5000, "engagementRange": 2500, - "description": "", - "abilities": "", + "description": "ZSU-23. Fixed. Manually aimed AAA 23 mm autocannons. ", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "shotsToFire": 100, + "aimTime": 9, + "muzzleVelocity": 1000, + "barrelHeight": 1.5, + "cost": 50000 }, "ZU-23 Insurgent": { "name": "ZU-23 Insurgent", @@ -6581,10 +6654,15 @@ }, "acquisitionRange": 5000, "engagementRange": 2500, - "description": "", - "abilities": "", + "description": "ZSU-23. Fixed. Manually aimed AAA 23 mm autocannons.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "shotsToFire": 100, + "aimTime": 9, + "muzzleVelocity": 1000, + "barrelHeight": 1.5, + "cost": 50000 }, "ZiL-131 APA-80": { "name": "ZiL-131 APA-80", @@ -7058,7 +7136,7 @@ "label": "Loco VL80 Electric", "shortLabel": "Loco VL80 Electric", "type": "Locomotive", - "enabled": true, + "enabled": false, "liveries": {}, "acquisitionRange": 0, "engagementRange": 0, @@ -7214,34 +7292,40 @@ "KS-19": { "name": "KS-19", "coalition": "", - "era": "", + "era": "Early Cold War", "label": "AAA KS-19 100mm", "shortLabel": "AAA KS-19 100mm", "type": "AAA", "enabled": true, "liveries": {}, "acquisitionRange": 0, - "engagementRange": 20000, - "description": "", - "abilities": "", + "engagementRange": 13000, + "description": "KS-19. 100 mm AAA gun. Fixed manually aimed large calibre anti aircraft gun.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": true, + "muzzleVelocity": 1000, + "aimTime": 25, + "shotsToFire": 100, + "barrelHeight": 5, + "cost": 8000 }, "SON_9": { "name": "SON_9", - "coalition": "", - "era": "", + "coalition": "red", + "era": "Early Cold War", "label": "AAA Fire Can SON-9", "shortLabel": "AAA Fire Can SON-9", "type": "AAA", "enabled": true, "liveries": {}, - "acquisitionRange": 55000, - "engagementRange": 0, - "description": "", + "acquisitionRange": 92600, + "engagementRange": null, + "description": "SON-9 Fire Can. Gun laying radar. Can be used to direct fire of up to 4 AAA guns.", "abilities": "", - "canTargetPoint": true, - "canRearm": false + "canTargetPoint": false, + "canRearm": false, + "cost": 750000 }, "Scud_B": { "name": "Scud_B", @@ -7270,7 +7354,7 @@ "liveries": {}, "acquisitionRange": 5000, "engagementRange": 1200, - "description": "", + "description": "Technical. Car with DSHK 12.7 mm gun manually aimed.", "abilities": "", "canTargetPoint": true, "canRearm": false @@ -7326,7 +7410,7 @@ "HL_ZU-23": { "name": "HL_ZU-23", "coalition": "", - "era": "", + "era": "Early Cold War", "label": "SPAAA HL with ZU-23", "shortLabel": "SPAAA HL with ZU-23", "type": "AAA", @@ -7334,26 +7418,36 @@ "liveries": {}, "acquisitionRange": 5000, "engagementRange": 2500, - "description": "", - "abilities": "", + "description": "Technical. Toyota type with ZU-23 AAA 23mm gun manually aimed.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "cost": 70000, + "barrelHeight": 2, + "muzzleVelocity": 1000, + "aimTime": 5, + "shotsToFire": 100 }, "tt_ZU-23": { "name": "tt_ZU-23", "coalition": "", - "era": "", + "era": "Early Cold War", "label": "SPAAA LC with ZU-23", "shortLabel": "SPAAA LC with ZU-23", "type": "AAA", "enabled": true, "liveries": {}, - "acquisitionRange": 0, + "acquisitionRange": 3000, "engagementRange": 2500, - "description": "", - "abilities": "", + "description": "Technical. Box pickup car with ZU-23 AAA 23mm gun manually aimed.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": true, + "cost": 70000, + "barrelHeight": 2, + "muzzleVelocity": 1000, + "aimTime": 5, + "shotsToFire": 100 }, "HL_B8M1": { "name": "HL_B8M1", @@ -7485,49 +7579,49 @@ }, "FPS-117 Dome": { "name": "FPS-117 Dome", - "coalition": "", - "era": "", - "label": "EWR AN/FPS-117 Radar (domed)", - "shortLabel": "EWR AN/FPS-117 Radar (domed)", + "coalition": "blue", + "era": "Late Cold War", + "label": "AN/FPS-117 EWR (Dome)", + "shortLabel": "AN/FPS-117 (Dome)", "type": "EW Radar", "enabled": true, "liveries": {}, "acquisitionRange": 400000, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "AN/FPS-117 early warning radar in a domed building", + "abilities": "EWR, Radar, Fixed", "canTargetPoint": false, "canRearm": false }, "FPS-117 ECS": { "name": "FPS-117 ECS", - "coalition": "", - "era": "", - "label": "EWR AN/FPS-117 ECS", - "shortLabel": "EWR AN/FPS-117 ECS", + "coalition": "blue", + "era": "Late Cold War", + "label": "AN/FPS-117 ECS (Not a radar)", + "shortLabel": "ECS", "type": "EW Radar", "enabled": true, "liveries": {}, "acquisitionRange": 0, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "AN/FPS-117 engagement control station, this is not a radar ", + "abilities": "Fixed", "canTargetPoint": false, "canRearm": false }, "FPS-117": { "name": "FPS-117", - "coalition": "", - "era": "", - "label": "EW Radar", - "shortLabel": "EWR AN/FPS-117 Radar", + "coalition": "blue", + "era": "Late Cold War", + "label": "AN/FPS-117 EWR ", + "shortLabel": "AN/FPS-117", "type": "EW Radar", "enabled": true, "liveries": {}, "acquisitionRange": 463000, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "AN/FPS-117 early warning radar on a large metal platform", + "abilities": "EWR, Radar, Fixed", "canTargetPoint": false, "canRearm": false }, @@ -7549,35 +7643,45 @@ }, "ZSU_57_2": { "name": "ZSU_57_2", - "coalition": "", - "era": "", + "coalition": "red", + "era": "Early Cold War", "label": "SPAAA ZSU-57-2", "shortLabel": "SPAAA ZSU-57-2", "type": "AAA", "enabled": true, "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 7000, - "description": "", - "abilities": "", + "acquisitionRange": 9000, + "engagementRange": 8000, + "description": "ZSU-57-2. Tracked self propelled optically guided AA gun. 2 x 57 mm auto cannon.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "muzzleVelocity": 1200, + "barrelHeight": 3, + "aimTime": 11, + "shotsToFire": 100, + "cost": 750000 }, "S-60_Type59_Artillery": { "name": "S-60_Type59_Artillery", - "coalition": "", - "era": "", + "coalition": "red", + "era": "Early Cold War", "label": "AAA S-60 57mm", "shortLabel": "AAA S-60 57mm", "type": "AAA", "enabled": true, "liveries": {}, - "acquisitionRange": 5000, + "acquisitionRange": 6000, "engagementRange": 6000, - "description": "", - "abilities": "", + "description": "AZP S-60. Fixed. Automatic anti aircraft gun 57mm.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "muzzleVelocity": 1000, + "aimTime": 5, + "shotsToFire": 100, + "barrelHeight": 2, + "cost": 500000 }, "generator_5i57": { "name": "generator_5i57", @@ -7629,40 +7733,44 @@ }, "BTR-82A": { "name": "BTR-82A", - "coalition": "", - "era": "", - "label": "Infantry Fighting Vehicle BTR-82A", - "shortLabel": "Infantry Fighting Vehicle BTR-82A", - "type": "Infantry Fighting Vehicle", + "coalition": "red", + "era": "Modern", + "label": "BTR-82A", + "shortLabel": "BTR-82A", + "type": "APC", "enabled": true, "liveries": {}, "acquisitionRange": 0, "engagementRange": 2000, - "description": "", - "abilities": "", + "description": "BTR 82A APC. Wheeled. Amphibious. 30 mm gun.", + "abilities": "Combined arms, Amphibious, Transport, AA", "canTargetPoint": true, - "canRearm": false + "canRearm": false, + "barrelHeight": 2.8, + "muzzleVelocity": 900, + "aimTime": 5, + "shotsToFire": 100 }, "ATZ-5": { "name": "ATZ-5", - "coalition": "", - "era": "", - "label": "Refueler ATZ-5", - "shortLabel": "Refueler ATZ-5", + "coalition": "red", + "era": "Early Cold War", + "label": "ATZ-5 (Fuel Truck)", + "shortLabel": "ATZ-5 Fuel", "type": "Unarmed", "enabled": true, "liveries": {}, "acquisitionRange": 0, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "Refueler truck. Wheeled", + "abilities": "Combined arms, Unarmed, Refuel", "canTargetPoint": false, "canRearm": false }, "AA8": { "name": "AA8", "coalition": "", - "era": "", + "era": "Early Cold War", "label": "Firefighter Vehicle AA-7.2/60", "shortLabel": "Firefighter Vehicle AA-7.2/60", "type": "Unarmed", @@ -7670,8 +7778,8 @@ "liveries": {}, "acquisitionRange": 0, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "Fire truck", + "abilities": "Combined Arms, Unarmed", "canTargetPoint": false, "canRearm": false }, @@ -7693,17 +7801,17 @@ }, "ATZ-60_Maz": { "name": "ATZ-60_Maz", - "coalition": "", - "era": "", - "label": "Refueler ATZ-60 Tractor (MAZ-7410)", - "shortLabel": "Refueler ATZ-60 Tractor (MAZ-7410)", + "coalition": "red", + "era": "Early Cold War", + "label": "ATZ-60 Maz (Cab only)", + "shortLabel": "ATZ-60 Maz", "type": "Unarmed", "enabled": true, "liveries": {}, "acquisitionRange": 0, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "ATZ-60 Maz Wheeled truck, only the cab portion no trailers. ", + "abilities": "Combined arms, Unarmed", "canTargetPoint": false, "canRearm": false }, @@ -7789,8 +7897,8 @@ }, "bofors40": { "name": "bofors40", - "coalition": "", - "era": "", + "coalition": "blue", + "era": "WW2", "label": "AAA Bofors 40mm", "shortLabel": "AAA Bofors 40mm", "type": "AAA", @@ -7798,10 +7906,15 @@ "liveries": {}, "acquisitionRange": 0, "engagementRange": 4000, - "description": "", - "abilities": "", + "description": "Bofors gun. Fixed anti aircraft 40mm gun. Manually aimed.", + "abilities": "Combined arms, AA", "canTargetPoint": true, - "canRearm": false + "canRearm": true, + "barrelHeight": 1.27, + "muzzleVelocity": 850, + "aimTime": 8, + "shotsToFire": 100, + "cost": 25000 }, "Chieftain_mk3": { "name": "Chieftain_mk3", @@ -7821,8 +7934,8 @@ }, "Bedford_MWD": { "name": "Bedford_MWD", - "coalition": "", - "era": "", + "coalition": "blue", + "era": "WW2", "label": "Truck Bedford", "shortLabel": "Truck Bedford", "type": "Unarmed", @@ -7830,10 +7943,10 @@ "liveries": {}, "acquisitionRange": 0, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "Bedford truck", + "abilities": "Combined arms, Unarmed, Rearm", "canTargetPoint": false, - "canRearm": false + "canRearm": true }, "Land_Rover_101_FC": { "name": "Land_Rover_101_FC", @@ -7918,16 +8031,16 @@ "Boxcartrinity": { "name": "Boxcartrinity", "coalition": "", - "era": "", + "era": "Mid Cold War", "label": "Flatcar", "shortLabel": "Flatcar", - "type": "Carriage", + "type": "Train", "enabled": true, "liveries": {}, "acquisitionRange": 0, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "Train carriage flatcar, modern train container (red)", + "abilities": "Train, Carriage", "canTargetPoint": false, "canRearm": false }, @@ -7966,20 +8079,23 @@ "flak18": { "name": "flak18", "coalition": "", - "era": "", + "era": "WW2", "label": "AAA 8,8cm Flak 18", "shortLabel": "AAA 8,8cm Flak 18", "type": "AAA", "enabled": true, "liveries": {}, - "aimTime": 20, - "shotsToFire": 1, + "aimTime": 18, + "shotsToFire": 100, "acquisitionRange": 0, - "engagementRange": 5000, - "description": "", - "abilities": "", + "engagementRange": 6000, + "description": "The flak 88. Fixed anti aircraft gun famously also used as an anti-tank gun. 88mm flak gun.", + "abilities": "Random fire, Tracked fire, Miss on purpose,", "canTargetPoint": true, - "canRearm": false + "canRearm": true, + "muzzleVelocity": 1000, + "barrelHeight": 2.1, + "cost": 40000 }, "Pz_IV_H": { "name": "Pz_IV_H", @@ -8063,8 +8179,8 @@ }, "Blitz_36-6700A": { "name": "Blitz_36-6700A", - "coalition": "", - "era": "", + "coalition": "red", + "era": "WW2", "label": "Truck Opel Blitz", "shortLabel": "Truck Opel Blitz", "type": "Unarmed", @@ -8072,8 +8188,8 @@ "liveries": {}, "acquisitionRange": 0, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "Opel Truck ", + "abilities": "Combined arms, Unarmed, Rearm", "canTargetPoint": false, "canRearm": true }, @@ -8767,8 +8883,8 @@ }, "Allies_Director": { "name": "Allies_Director", - "coalition": "", - "era": "", + "coalition": "blue", + "era": "WW2", "label": "Allies Rangefinder (DRT)", "shortLabel": "Allies Rangefinder (DRT)", "type": "Unarmed", @@ -8776,26 +8892,26 @@ "liveries": {}, "acquisitionRange": 30000, "engagementRange": 0, - "description": "", + "description": "Rangefinder from WW2 for guns", "abilities": "", "canTargetPoint": false, "canRearm": false }, "CCKW_353": { "name": "CCKW_353", - "coalition": "", - "era": "", - "label": "Truck GMC \"Jimmy\" 6x6", - "shortLabel": "Truck GMC \"Jimmy\" 6x6", + "coalition": "blue", + "era": "WW2", + "label": "GMC 6x6 'Jimmy' (Rearm truck)", + "shortLabel": "GMC 6x6", "type": "Unarmed", "enabled": false, "liveries": {}, "acquisitionRange": 0, "engagementRange": 0, - "description": "", - "abilities": "", + "description": "GMC 6x6 'Jimmy' wheeled truck aka 2 1/2 ton truck. ", + "abilities": "Rearm,", "canTargetPoint": false, - "canRearm": false + "canRearm": true }, "Willys_MB": { "name": "Willys_MB", diff --git a/client/public/databases/units/helicopterdatabase.json b/client/public/databases/units/helicopterdatabase.json index d8707fff..66b717b5 100644 --- a/client/public/databases/units/helicopterdatabase.json +++ b/client/public/databases/units/helicopterdatabase.json @@ -7,12 +7,19 @@ "shortLabel": "AH1", "loadouts": [ { - "items": [], + "items": [ + { + "name": "M260 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", + "quantity": 2 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "14xHYDRA-70", + "name": "14xHYDRA-70", "roles": [ - "CAS" + "CAP", + "CAS", + "Strike" ] }, { @@ -29,6 +36,38 @@ "AFAC" ] }, + { + "items": [ + { + "name": "M260 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", + "quantity": 4 + } + ], + "enabled": true, + "code": "28xHYDRA-70", + "name": "28xHYDRA-70", + "roles": [ + "CAP", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "38xHYDRA-70", + "name": "38xHYDRA-70", + "roles": [ + "CAP", + "CAS", + "Strike" + ] + }, { "items": [ { @@ -43,6 +82,131 @@ "AFAC" ] }, + { + "items": [ + { + "name": "LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 4 + } + ], + "enabled": true, + "code": "76xHYDRA-70", + "name": "76xHYDRA-70", + "roles": [ + "CAP", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "M299 - 4 x AGM-114K Hellfire", + "quantity": 2 + } + ], + "enabled": true, + "code": "8xAGM-114", + "name": "8xAGM-114", + "roles": [ + "CAP", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "M299 - 4 x AGM-114K Hellfire", + "quantity": 2 + }, + { + "name": "M260 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", + "quantity": 2 + } + ], + "enabled": true, + "code": "8xAGM-114, 14xHYDRA-70", + "name": "8xAGM-114, 14xHYDRA-70", + "roles": [ + "CAP", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "M299 - 4 x AGM-114K Hellfire", + "quantity": 2 + }, + { + "name": "M260 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", + "quantity": 2 + } + ], + "enabled": true, + "code": "8xAGM-114, 14xHYDRA-70 WP", + "name": "8xAGM-114, 14xHYDRA-70 WP", + "roles": [ + "AFAC" + ] + }, + { + "items": [ + { + "name": "M299 - 4 x AGM-114K Hellfire", + "quantity": 2 + }, + { + "name": "LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "8xAGM-114, 38xHYDRA-70", + "name": "8xAGM-114, 38xHYDRA-70", + "roles": [ + "CAP", + "CAS", + "Strike", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "M299 - 4 x AGM-114K Hellfire", + "quantity": 2 + }, + { + "name": "LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", + "quantity": 2 + } + ], + "enabled": true, + "code": "8xAGM-114, 38xHYDRA-70 WP", + "name": "8xAGM-114, 38xHYDRA-70 WP", + "roles": [ + "AFAC" + ] + }, + { + "items": [ + { + "name": "4 x BGM-71D TOW ATGM", + "quantity": 2 + } + ], + "enabled": true, + "code": "8xBGM-71", + "name": "8xBGM-71", + "roles": [ + "CAP", + "CAS", + "Strike" + ] + }, { "items": [ { @@ -81,88 +245,6 @@ "AFAC" ] }, - { - "items": [ - { - "name": "4 x BGM-71D TOW ATGM", - "quantity": 2 - }, - { - "name": "LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 2 - } - ], - "enabled": true, - "code": "8xBGM-71, 38xHYDRA-70 WP", - "name": "8xBGM-71, 38xHYDRA-70 WP", - "roles": [ - "AFAC" - ] - }, - { - "items": [ - { - "name": "M260 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 2 - } - ], - "enabled": true, - "code": "14xHYDRA-70", - "name": "14xHYDRA-70", - "roles": [ - "CAP", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "38xHYDRA-70", - "name": "38xHYDRA-70", - "roles": [ - "CAP", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - } - ], - "enabled": true, - "code": "8xAGM-114", - "name": "8xAGM-114", - "roles": [ - "CAP", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "M260 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 4 - } - ], - "enabled": true, - "code": "28xHYDRA-70", - "name": "28xHYDRA-70", - "roles": [ - "CAP", - "CAS", - "Strike" - ] - }, { "items": [ { @@ -186,7 +268,7 @@ { "items": [ { - "name": "M299 - 4 x AGM-114K Hellfire", + "name": "4 x BGM-71D TOW ATGM", "quantity": 2 }, { @@ -195,101 +277,19 @@ } ], "enabled": true, - "code": "8xAGM-114, 38xHYDRA-70 WP", - "name": "8xAGM-114, 38xHYDRA-70 WP", + "code": "8xBGM-71, 38xHYDRA-70 WP", + "name": "8xBGM-71, 38xHYDRA-70 WP", "roles": [ "AFAC" ] }, { - "items": [ - { - "name": "4 x BGM-71D TOW ATGM", - "quantity": 2 - } - ], + "items": [], "enabled": true, - "code": "8xBGM-71", - "name": "8xBGM-71", + "code": "", + "name": "Empty loadout", "roles": [ - "CAP", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - }, - { - "name": "M260 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 2 - } - ], - "enabled": true, - "code": "8xAGM-114, 14xHYDRA-70 WP", - "name": "8xAGM-114, 14xHYDRA-70 WP", - "roles": [ - "AFAC" - ] - }, - { - "items": [ - { - "name": "LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - } - ], - "enabled": true, - "code": "76xHYDRA-70", - "name": "76xHYDRA-70", - "roles": [ - "CAP", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - }, - { - "name": "LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "8xAGM-114, 38xHYDRA-70", - "name": "8xAGM-114, 38xHYDRA-70", - "roles": [ - "CAP", - "CAS", - "Strike", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - }, - { - "name": "M260 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 2 - } - ], - "enabled": true, - "code": "8xAGM-114, 14xHYDRA-70", - "name": "8xAGM-114, 14xHYDRA-70", - "roles": [ - "CAP", - "CAS", - "Strike" + "CAS" ] } ], @@ -351,12 +351,21 @@ "shortLabel": "AH64", "loadouts": [ { - "items": [], + "items": [ + { + "name": null, + "quantity": 4 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "2 * Fuel Tank 230 gal, 2 * Hellfire station: 4*AGM-114K", + "name": "2 * Fuel Tank 230 gal, 2 * Hellfire station: 4*AGM-114K", "roles": [ - "CAS" + "AFAC", + "Antiship Strike", + "CAS", + "CAP", + "Strike" ] }, { @@ -367,8 +376,80 @@ } ], "enabled": true, - "code": "4 * Fuel Tank 230 gal", - "name": "4 * Fuel Tank 230 gal", + "code": "2 * M261: A/B - M151 (6PD), E - M257 (6IL), 2 * Hellfire station: 4*AGM-114K", + "name": "2 * M261: A/B - M151 (6PD), E - M257 (6IL), 2 * Hellfire station: 4*AGM-114K", + "roles": [ + "AFAC", + "Antiship Strike", + "CAS", + "CAP", + "Strike" + ] + }, + { + "items": [ + { + "name": null, + "quantity": 4 + } + ], + "enabled": true, + "code": "2 * M261: A/B - M151 (6PD), E - M274 (6SK), 2 * Hellfire station: 4*AGM-114K", + "name": "2 * M261: A/B - M151 (6PD), E - M274 (6SK), 2 * Hellfire station: 4*AGM-114K", + "roles": [ + "AFAC", + "Antiship Strike", + "CAS", + "CAP", + "Strike" + ] + }, + { + "items": [ + { + "name": null, + "quantity": 4 + } + ], + "enabled": true, + "code": "2 * M261: C - M257 (6IL), D/E - M151 (6PD), 2 * Hellfire station: 4*AGM-114K", + "name": "2 * M261: C - M257 (6IL), D/E - M151 (6PD), 2 * Hellfire station: 4*AGM-114K", + "roles": [ + "AFAC", + "Antiship Strike", + "CAS", + "CAP", + "Strike" + ] + }, + { + "items": [ + { + "name": null, + "quantity": 4 + } + ], + "enabled": true, + "code": "2 * M261: C - M274 (6SK), D/E - M151 (6PD), 2 * Hellfire station: 4*AGM-114K", + "name": "2 * M261: C - M274 (6SK), D/E - M151 (6PD), 2 * Hellfire station: 4*AGM-114K", + "roles": [ + "AFAC", + "Antiship Strike", + "CAS", + "CAP", + "Strike" + ] + }, + { + "items": [ + { + "name": null, + "quantity": 4 + } + ], + "enabled": true, + "code": "2 * M261: M151 (6PD), 2 * Fuel Tank 230 gal", + "name": "2 * M261: M151 (6PD), 2 * Fuel Tank 230 gal", "roles": [ "AFAC", "Antiship Strike", @@ -395,6 +476,24 @@ "Strike" ] }, + { + "items": [ + { + "name": null, + "quantity": 4 + } + ], + "enabled": true, + "code": "4 * Fuel Tank 230 gal", + "name": "4 * Fuel Tank 230 gal", + "roles": [ + "AFAC", + "Antiship Strike", + "CAS", + "CAP", + "Strike" + ] + }, { "items": [ { @@ -432,111 +531,12 @@ ] }, { - "items": [ - { - "name": null, - "quantity": 4 - } - ], + "items": [], "enabled": true, - "code": "2 * M261: M151 (6PD), 2 * Fuel Tank 230 gal", - "name": "2 * M261: M151 (6PD), 2 * Fuel Tank 230 gal", + "code": "", + "name": "Empty loadout", "roles": [ - "AFAC", - "Antiship Strike", - "CAS", - "CAP", - "Strike" - ] - }, - { - "items": [ - { - "name": null, - "quantity": 4 - } - ], - "enabled": true, - "code": "2 * Fuel Tank 230 gal, 2 * Hellfire station: 4*AGM-114K", - "name": "2 * Fuel Tank 230 gal, 2 * Hellfire station: 4*AGM-114K", - "roles": [ - "AFAC", - "Antiship Strike", - "CAS", - "CAP", - "Strike" - ] - }, - { - "items": [ - { - "name": null, - "quantity": 4 - } - ], - "enabled": true, - "code": "2 * M261: A/B - M151 (6PD), E - M274 (6SK), 2 * Hellfire station: 4*AGM-114K", - "name": "2 * M261: A/B - M151 (6PD), E - M274 (6SK), 2 * Hellfire station: 4*AGM-114K", - "roles": [ - "AFAC", - "Antiship Strike", - "CAS", - "CAP", - "Strike" - ] - }, - { - "items": [ - { - "name": null, - "quantity": 4 - } - ], - "enabled": true, - "code": "2 * M261: A/B - M151 (6PD), E - M257 (6IL), 2 * Hellfire station: 4*AGM-114K", - "name": "2 * M261: A/B - M151 (6PD), E - M257 (6IL), 2 * Hellfire station: 4*AGM-114K", - "roles": [ - "AFAC", - "Antiship Strike", - "CAS", - "CAP", - "Strike" - ] - }, - { - "items": [ - { - "name": null, - "quantity": 4 - } - ], - "enabled": true, - "code": "2 * M261: C - M257 (6IL), D/E - M151 (6PD), 2 * Hellfire station: 4*AGM-114K", - "name": "2 * M261: C - M257 (6IL), D/E - M151 (6PD), 2 * Hellfire station: 4*AGM-114K", - "roles": [ - "AFAC", - "Antiship Strike", - "CAS", - "CAP", - "Strike" - ] - }, - { - "items": [ - { - "name": null, - "quantity": 4 - } - ], - "enabled": true, - "code": "2 * M261: C - M274 (6SK), D/E - M151 (6PD), 2 * Hellfire station: 4*AGM-114K", - "name": "2 * M261: C - M274 (6SK), D/E - M151 (6PD), 2 * Hellfire station: 4*AGM-114K", - "roles": [ - "AFAC", - "Antiship Strike", - "CAS", - "CAP", - "Strike" + "CAS" ] } ], @@ -748,29 +748,28 @@ "coalition": "red", "era": "Late Cold War", "label": "Ka-50 Hokum A", - "shortLabel": "K50", + "shortLabel": "Ka50", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "CAS" - ] - }, { "items": [ { "name": "9S846 Strelets - 2 x 9M39 Igla", "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 } ], "enabled": true, - "code": "4xIgla", - "name": "4xIgla", + "code": "10xS-13, 2xFAB-250, 4xIgla", + "name": "10xS-13, 2xFAB-250, 4xIgla", "roles": [ - "CAS" + "Strike" ] }, { @@ -780,7 +779,51 @@ "quantity": 2 }, { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "10xS-13, 2xFAB-500, 4xIgla", + "name": "10xS-13, 2xFAB-500, 4xIgla", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "9S846 Strelets - 2 x 9M39 Igla", + "quantity": 2 + }, + { + "name": "APU-6 - 6 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", + "quantity": 2 + }, + { + "name": "Fuel tank PTB-450", + "quantity": 2 + } + ], + "enabled": true, + "code": "12x9A4172, 2xFuel, 4xIgla", + "name": "12x9A4172, 2xFuel, 4xIgla", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "9S846 Strelets - 2 x 9M39 Igla", + "quantity": 2 + }, + { + "name": "APU-6 - 6 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", "quantity": 2 }, { @@ -789,10 +832,11 @@ } ], "enabled": true, - "code": "2xKh-25ML, 10xS-13, 4xIgla", - "name": "2xKh-25ML, 10xS-13, 4xIgla", + "code": "12x9A4172, 40xS-13, 4xIgla", + "name": "12x9A4172, 40xS-13, 4xIgla", "roles": [ - "Antiship Strike" + "CAS", + "Strike" ] }, { @@ -848,7 +892,26 @@ "quantity": 2 }, { - "name": "APU-6 - 6 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "20xS-20, 4xIgla", + "name": "20xS-20, 4xIgla", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "9S846 Strelets - 2 x 9M39 Igla", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", "quantity": 2 }, { @@ -857,11 +920,64 @@ } ], "enabled": true, - "code": "12x9A4172, 40xS-13, 4xIgla", - "name": "12x9A4172, 40xS-13, 4xIgla", + "code": "2xKh-25ML, 10xS-13, 4xIgla", + "name": "2xKh-25ML, 10xS-13, 4xIgla", "roles": [ - "CAS", - "Strike" + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "9S846 Strelets - 2 x 9M39 Igla", + "quantity": 2 + }, + { + "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8OFP2 MPP", + "quantity": 2 + }, + { + "name": "Fuel tank PTB-450", + "quantity": 2 + } + ], + "enabled": true, + "code": "40xS-8OFP, 2xFuel, 4xIgla", + "name": "40xS-8OFP, 2xFuel, 4xIgla", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "9S846 Strelets - 2 x 9M39 Igla", + "quantity": 2 + } + ], + "enabled": true, + "code": "4xIgla", + "name": "4xIgla", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "9S846 Strelets - 2 x 9M39 Igla", + "quantity": 2 + }, + { + "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 4 + } + ], + "enabled": true, + "code": "4xUPK-23, 4xIgla", + "name": "4xUPK-23, 4xIgla", + "roles": [ + "CAS" ] }, { @@ -904,87 +1020,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "9S846 Strelets - 2 x 9M39 Igla", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "20xS-20, 4xIgla", - "name": "20xS-20, 4xIgla", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "9S846 Strelets - 2 x 9M39 Igla", - "quantity": 2 - }, - { - "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 4 - } - ], - "enabled": true, - "code": "4xUPK-23, 4xIgla", - "name": "4xUPK-23, 4xIgla", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "9S846 Strelets - 2 x 9M39 Igla", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "10xS-13, 2xFAB-500, 4xIgla", - "name": "10xS-13, 2xFAB-500, 4xIgla", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "9S846 Strelets - 2 x 9M39 Igla", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "10xS-13, 2xFAB-250, 4xIgla", - "name": "10xS-13, 2xFAB-250, 4xIgla", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -1022,47 +1057,12 @@ ] }, { - "items": [ - { - "name": "9S846 Strelets - 2 x 9M39 Igla", - "quantity": 2 - }, - { - "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "Fuel tank PTB-450", - "quantity": 2 - } - ], + "items": [], "enabled": true, - "code": "40xS-8OFP, 2xFuel, 4xIgla", - "name": "40xS-8OFP, 2xFuel, 4xIgla", + "code": "", + "name": "Empty loadout", "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "9S846 Strelets - 2 x 9M39 Igla", - "quantity": 2 - }, - { - "name": "APU-6 - 6 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel tank PTB-450", - "quantity": 2 - } - ], - "enabled": true, - "code": "12x9A4172, 2xFuel, 4xIgla", - "name": "12x9A4172, 2xFuel, 4xIgla", - "roles": [ - "CAP" + "CAS" ] } ], @@ -1296,31 +1296,23 @@ "label": "Mi-24P Hind", "shortLabel": "Mi24", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "CAS" - ] - }, { "items": [ { "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 4 + "quantity": 2 }, { - "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", "quantity": 2 } ], "enabled": true, - "code": "2xB8V20 (S-8KOM)+8xATGM 9M114", - "name": "2xB8V20 (S-8KOM)+8xATGM 9M114", + "code": "2xB-13L+4xATGM 9M114", + "name": "2xB-13L+4xATGM 9M114", "roles": [ "CAS", + "Antiship Strike", "Strike" ] }, @@ -1343,24 +1335,6 @@ "CAP" ] }, - { - "items": [ - { - "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - } - ], - "enabled": true, - "code": "4xB8V20 (S-8KOM)+4xATGM 9M114", - "name": "4xB8V20 (S-8KOM)+4xATGM 9M114", - "roles": [ - "CAS" - ] - }, { "items": [ { @@ -1383,6 +1357,25 @@ "CAS" ] }, + { + "items": [ + { + "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 4 + }, + { + "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xB8V20 (S-8KOM)+8xATGM 9M114", + "name": "2xB8V20 (S-8KOM)+8xATGM 9M114", + "roles": [ + "CAS", + "Strike" + ] + }, { "items": [ { @@ -1401,24 +1394,6 @@ "CAS" ] }, - { - "items": [ - { - "name": "UB-32A-24 pod - 32 x S-5KO", - "quantity": 4 - }, - { - "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - } - ], - "enabled": true, - "code": "4xUB-32A (S-5KO)+4xATGM 9M114", - "name": "4xUB-32A (S-5KO)+4xATGM 9M114", - "roles": [ - "CAS" - ] - }, { "items": [ { @@ -1426,31 +1401,13 @@ "quantity": 2 }, { - "name": "GUV-8700 w AP-30 - 30mm Grenade Launcher", - "quantity": 4 - } - ], - "enabled": true, - "code": "4xGUV-1 AP30+4xATGM 9M114", - "name": "4xGUV-1 AP30+4xATGM 9M114", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "GUV-8700 w AP-30 - 30mm Grenade Launcher", + "name": "FAB-500 M-62 - 500kg GP Bomb LD", "quantity": 2 } ], "enabled": true, - "code": "2xGUV-1 AP30+4xATGM 9M114", - "name": "2xGUV-1 AP30+4xATGM 9M114", + "code": "2xBombs-500+4xATGM 9M114", + "name": "2xBombs-500+4xATGM 9M114", "roles": [ "CAS" ] @@ -1474,6 +1431,24 @@ "CAP" ] }, + { + "items": [ + { + "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "GUV-8700 w AP-30 - 30mm Grenade Launcher", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xGUV-1 AP30+4xATGM 9M114", + "name": "2xGUV-1 AP30+4xATGM 9M114", + "roles": [ + "CAS" + ] + }, { "items": [ { @@ -1493,102 +1468,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xB-13L+4xATGM 9M114", - "name": "2xB-13L+4xATGM 9M114", - "roles": [ - "CAS", - "Antiship Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "APU-68 - S-24B", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xS-24B+4xATGM 9M114", - "name": "2xS-24B+4xATGM 9M114", - "roles": [ - "CAS", - "Antiship Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "APU-68 - S-24B", - "quantity": 4 - } - ], - "enabled": true, - "code": "4xS-24B+4xATGM 9M114", - "name": "4xS-24B+4xATGM 9M114", - "roles": [ - "CAS", - "Antiship Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xBombs-500+4xATGM 9M114", - "name": "2xBombs-500+4xATGM 9M114", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "4xBombs-250+4ATGM 9M114", - "name": "4xBombs-250+4ATGM 9M114", - "roles": [ - "CAS" - ] - }, { "items": [ { @@ -1625,6 +1504,98 @@ "CAS" ] }, + { + "items": [ + { + "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "APU-68 - S-24B", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xS-24B+4xATGM 9M114", + "name": "2xS-24B+4xATGM 9M114", + "roles": [ + "CAS", + "Antiship Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + } + ], + "enabled": true, + "code": "4xB8V20 (S-8KOM)+4xATGM 9M114", + "name": "4xB8V20 (S-8KOM)+4xATGM 9M114", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "4xBombs-250+4ATGM 9M114", + "name": "4xBombs-250+4ATGM 9M114", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "GUV-8700 w AP-30 - 30mm Grenade Launcher", + "quantity": 4 + } + ], + "enabled": true, + "code": "4xGUV-1 AP30+4xATGM 9M114", + "name": "4xGUV-1 AP30+4xATGM 9M114", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Fuel tank PTB-450", + "quantity": 4 + }, + { + "name": "Missile Launcher Rack (Empty)", + "quantity": 2 + } + ], + "enabled": true, + "code": "4xPTB-450 Fuel tank", + "name": "4xPTB-450 Fuel tank", + "roles": [ + "CAS" + ] + }, { "items": [ { @@ -1664,17 +1635,46 @@ { "items": [ { - "name": "Fuel tank PTB-450", + "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "APU-68 - S-24B", + "quantity": 4 + } + ], + "enabled": true, + "code": "4xS-24B+4xATGM 9M114", + "name": "4xS-24B+4xATGM 9M114", + "roles": [ + "CAS", + "Antiship Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-32A-24 pod - 32 x S-5KO", "quantity": 4 }, { - "name": "Missile Launcher Rack (Empty)", + "name": "2 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", "quantity": 2 } ], "enabled": true, - "code": "4xPTB-450 Fuel tank", - "name": "4xPTB-450 Fuel tank", + "code": "4xUB-32A (S-5KO)+4xATGM 9M114", + "name": "4xUB-32A (S-5KO)+4xATGM 9M114", + "roles": [ + "CAS" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", "roles": [ "CAS" ] @@ -1769,7 +1769,7 @@ }, "type": "Helicopter", "description": "2 engine, 2 crew attack helicopter. Hind", - "abilities": "", + "abilities": "Transport", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": true, @@ -1780,7 +1780,7 @@ "coalition": "red", "era": "Late Cold War", "label": "Mi-26 Halo", - "shortLabel": "M26", + "shortLabel": "Mi26", "loadouts": [ { "items": [], @@ -1844,7 +1844,7 @@ "description": "2 engine, 5 crew transport helicopter. Halo", "acquisitionRange": "", "engagementRange": "", - "abilities": "", + "abilities": "Transport", "canTargetPoint": false, "canRearm": false }, @@ -1855,39 +1855,16 @@ "label": "Mi-28N Havoc", "shortLabel": "M28", "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "CAS" - ] - }, { "items": [ { - "name": "FAB-250 - 250kg GP Bomb LD", + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", "quantity": 2 } ], "enabled": true, - "code": "2xFAB-250", - "name": "2xFAB-250", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "80xS-8", - "name": "80xS-8", + "code": "10xS-13", + "name": "10xS-13", "roles": [ "CAS", "Strike", @@ -1897,27 +1874,13 @@ { "items": [ { - "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", - "quantity": 4 + "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 } ], "enabled": true, - "code": "4xKMGU AP", - "name": "4xKMGU AP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 4 - } - ], - "enabled": true, - "code": "4xUPK-23", - "name": "4xUPK-23", + "code": "16x9M114", + "name": "16x9M114", "roles": [ "CAS", "Strike", @@ -1945,20 +1908,6 @@ "Antiship Strike" ] }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "4xFAB-500", - "name": "4xFAB-500", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -1977,6 +1926,211 @@ "Strike" ] }, + { + "items": [ + { + "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", + "quantity": 2 + } + ], + "enabled": true, + "code": "16x9M114, 2xKMGU AP", + "name": "16x9M114, 2xKMGU AP", + "roles": [ + "CAS", + "Strike", + "CAP" + ] + }, + { + "items": [ + { + "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", + "quantity": 2 + } + ], + "enabled": true, + "code": "16x9M114, 2xKMGU AT", + "name": "16x9M114, 2xKMGU AT", + "roles": [ + "CAS", + "Strike", + "CAP" + ] + }, + { + "items": [ + { + "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "16x9M114, 2xUPK-23", + "name": "16x9M114, 2xUPK-23", + "roles": [ + "CAS", + "Strike", + "CAP" + ] + }, + { + "items": [ + { + "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + } + ], + "enabled": true, + "code": "16x9M114, 40xS-8", + "name": "16x9M114, 40xS-8", + "roles": [ + "CAS", + "Strike", + "CAP", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8TsM SM Orange", + "quantity": 2 + } + ], + "enabled": true, + "code": "16x9M114, 40xS-8 TsM", + "name": "16x9M114, 40xS-8 TsM", + "roles": [ + "AFAC" + ] + }, + { + "items": [ + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "20xS-13", + "name": "20xS-13", + "roles": [ + "CAS", + "Strike", + "CAP" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xFAB-250", + "name": "2xFAB-250", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xFAB-250, 16x9M114", + "name": "2xFAB-250, 16x9M114", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xFAB-500", + "name": "2xFAB-500", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xKMGU AP", + "name": "2xKMGU AP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xKMGU AT", + "name": "2xKMGU AT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xUPK-23", + "name": "2xUPK-23", + "roles": [ + "CAS", + "Strike", + "CAP" + ] + }, { "items": [ { @@ -2007,143 +2161,6 @@ "AFAC" ] }, - { - "items": [ - { - "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xKMGU AP", - "name": "2xKMGU AP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xUPK-23", - "name": "2xUPK-23", - "roles": [ - "CAS", - "Strike", - "CAP" - ] - }, - { - "items": [ - { - "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "16x9M114, 2xUPK-23", - "name": "16x9M114, 2xUPK-23", - "roles": [ - "CAS", - "Strike", - "CAP" - ] - }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xFAB-500", - "name": "2xFAB-500", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "16x9M114, 40xS-8", - "name": "16x9M114, 40xS-8", - "roles": [ - "CAS", - "Strike", - "CAP", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - } - ], - "enabled": true, - "code": "16x9M114", - "name": "16x9M114", - "roles": [ - "CAS", - "Strike", - "CAP" - ] - }, - { - "items": [ - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "20xS-13", - "name": "20xS-13", - "roles": [ - "CAS", - "Strike", - "CAP" - ] - }, - { - "items": [ - { - "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "16x9M114, 2xKMGU AP", - "name": "16x9M114, 2xKMGU AP", - "roles": [ - "CAS", - "Strike", - "CAP" - ] - }, { "items": [ { @@ -2158,6 +2175,34 @@ "Strike" ] }, + { + "items": [ + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "4xFAB-500", + "name": "4xFAB-500", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "4xKMGU AP", + "name": "4xKMGU AP", + "roles": [ + "Strike" + ] + }, { "items": [ { @@ -2175,19 +2220,33 @@ { "items": [ { - "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8TsM SM Orange", - "quantity": 2 + "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 4 } ], "enabled": true, - "code": "16x9M114, 40xS-8 TsM", - "name": "16x9M114, 40xS-8 TsM", + "code": "4xUPK-23", + "name": "4xUPK-23", "roles": [ - "AFAC" + "CAS", + "Strike", + "CAP" + ] + }, + { + "items": [ + { + "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "80xS-8", + "name": "80xS-8", + "roles": [ + "CAS", + "Strike", + "CAP" ] }, { @@ -2204,20 +2263,6 @@ "AFAC" ] }, - { - "items": [ - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xKMGU AT", - "name": "2xKMGU AT", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -2235,57 +2280,12 @@ ] }, { - "items": [ - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - } - ], + "items": [], "enabled": true, - "code": "10xS-13", - "name": "10xS-13", + "code": "", + "name": "Empty loadout", "roles": [ - "CAS", - "Strike", - "CAP" - ] - }, - { - "items": [ - { - "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xFAB-250, 16x9M114", - "name": "2xFAB-250, 16x9M114", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "8 x 9M114 Shturm-V (AT-6 Spiral) - ATGM, SACLOS, HEAT", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 2 - } - ], - "enabled": true, - "code": "16x9M114, 2xKMGU AT", - "name": "16x9M114, 2xKMGU AT", - "roles": [ - "CAS", - "Strike", - "CAP" + "CAS" ] } ], @@ -2340,12 +2340,75 @@ "shortLabel": "Mi8", "loadouts": [ { - "items": [], + "items": [ + { + "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + }, + { + "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + } + ], "enabled": true, - "code": "", - "name": "Empty loadout", + "code": "2 x B8 + 2 x UPK-23-250", + "name": "2 x B8 + 2 x UPK-23-250", "roles": [ - "Transport" + "Strike" + ] + }, + { + "items": [ + { + "name": "GUV-8700 w 1x12.7 mm & 2x7.62 mm Rotary HMG", + "quantity": 2 + }, + { + "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + } + ], + "enabled": true, + "code": "2 x UPK +2 x B8", + "name": "2 x UPK +2 x B8", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "2 x UPK--23-250", + "name": "2 x UPK--23-250", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "GUV-8700 w AP-30 - 30mm Grenade Launcher", + "quantity": 2 + }, + { + "name": "GUV-8700 w 1x12.7 mm & 2x7.62 mm Rotary HMG", + "quantity": 2 + }, + { + "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + } + ], + "enabled": true, + "code": "2 xB8 + 2GUV_YaKB (MG-12.7+7.62)+ 2GUV_AP-30 (GrL 30mm)", + "name": "2 xB8 + 2GUV_YaKB (MG-12.7+7.62)+ 2GUV_AP-30 (GrL 30mm)", + "roles": [ + "Strike" ] }, { @@ -2380,46 +2443,6 @@ "Strike" ] }, - { - "items": [ - { - "name": "GUV-8700 w 1x12.7 mm & 2x7.62 mm Rotary HMG", - "quantity": 2 - }, - { - "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "2 x UPK +2 x B8", - "name": "2 x UPK +2 x B8", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "GUV-8700 w AP-30 - 30mm Grenade Launcher", - "quantity": 2 - }, - { - "name": "GUV-8700 w 1x12.7 mm & 2x7.62 mm Rotary HMG", - "quantity": 2 - }, - { - "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "2 xB8 + 2GUV_YaKB (MG-12.7+7.62)+ 2GUV_AP-30 (GrL 30mm)", - "name": "2 xB8 + 2GUV_YaKB (MG-12.7+7.62)+ 2GUV_AP-30 (GrL 30mm)", - "roles": [ - "Strike" - ] - }, { "items": [ { @@ -2435,35 +2458,12 @@ ] }, { - "items": [ - { - "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - }, - { - "name": "B-8V20A - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - } - ], + "items": [], "enabled": true, - "code": "2 x B8 + 2 x UPK-23-250", - "name": "2 x B8 + 2 x UPK-23-250", + "code": "", + "name": "Empty loadout", "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UPK-23-250 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "2 x UPK--23-250", - "name": "2 x UPK--23-250", - "roles": [ - "Strike" + "Transport" ] } ], @@ -2843,7 +2843,7 @@ }, "type": "Helicopter", "description": "2 engine, 3 crew transport helicopter. Hip", - "abilities": "", + "abilities": "Transport", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -3103,26 +3103,44 @@ "items": [ { "name": null, - "quantity": 4 + "quantity": 2 } ], "enabled": true, - "code": "HOT3x4", - "name": "HOT3x4", + "code": "HOT3x2", + "name": "HOT3x2", "roles": [ "CAS" ] }, { "items": [ + { + "name": null, + "quantity": 2 + }, { "name": "IR Deflector", "quantity": 1 } ], "enabled": true, - "code": "IR Deflector", - "name": "IR Deflector", + "code": "Hot3x2, IR Deflector", + "name": "Hot3x2, IR Deflector", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": null, + "quantity": 4 + } + ], + "enabled": true, + "code": "HOT3x4", + "name": "HOT3x4", "roles": [ "CAS" ] @@ -3149,20 +3167,6 @@ "CAS" ] }, - { - "items": [ - { - "name": null, - "quantity": 2 - } - ], - "enabled": true, - "code": "HOT3x2", - "name": "HOT3x2", - "roles": [ - "CAS" - ] - }, { "items": [ { @@ -3183,18 +3187,14 @@ }, { "items": [ - { - "name": null, - "quantity": 2 - }, { "name": "IR Deflector", "quantity": 1 } ], "enabled": true, - "code": "Hot3x2, IR Deflector", - "name": "Hot3x2, IR Deflector", + "code": "IR Deflector", + "name": "IR Deflector", "roles": [ "CAS" ] @@ -3550,36 +3550,10 @@ "SH-60B": { "name": "SH-60B", "coalition": "blue", - "era": "Mid Cold War", + "era": "Late Cold War", "label": "SH-60B Seahawk", "shortLabel": "S60", "loadouts": [ - { - "items": [ - { - "name": "", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - } - ], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "Transport" - ] - }, { "items": [ { @@ -3631,6 +3605,32 @@ "fuel": 1, "items": [], "roles": [] + }, + { + "items": [ + { + "name": "", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + } + ], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "Transport" + ] } ], "filename": "uh-60.png", @@ -3657,14 +3657,14 @@ "description": "2 engine, 3 crew transport helicopter. Seahawk", "acquisitionRange": "", "engagementRange": "", - "abilities": "", + "abilities": "Transport", "canTargetPoint": false, "canRearm": false }, "UH-1H": { "name": "UH-1H", "coalition": "blue", - "era": "Early Cold War", + "era": "Mid Cold War", "label": "UH-1H Huey", "shortLabel": "UH1", "loadouts": [ @@ -3946,7 +3946,7 @@ }, "type": "Helicopter", "description": "2 engine, 2 crew transport helicopter. Huey", - "abilities": "", + "abilities": "Transport", "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, @@ -4010,7 +4010,7 @@ "description": "2 engine, 3 crew transport helicopter. Blackhawk", "acquisitionRange": "", "engagementRange": "", - "abilities": "", + "abilities": "Transport", "canTargetPoint": false, "canRearm": false } diff --git a/client/src/interfaces.ts b/client/src/interfaces.ts index e5166ccc..c13419f5 100644 --- a/client/src/interfaces.ts +++ b/client/src/interfaces.ts @@ -221,6 +221,8 @@ export interface UnitBlueprint { acquisitionRange?: number; engagementRange?: number; targetingRange?: number; + aimMethodRange?: number; + alertnessTimeConstant?: number; canTargetPoint?: boolean; canRearm?: boolean; canAAA?: boolean; diff --git a/client/src/unit/unit.ts b/client/src/unit/unit.ts index fbc89a6b..22f6b214 100644 --- a/client/src/unit/unit.ts +++ b/client/src/unit/unit.ts @@ -653,6 +653,10 @@ export class Unit extends CustomMarker { return this.getDatabase()?.getByName(this.#name)?.canRearm === true; } + canLandAtPoint() { + return this.getCategory() === "Helicopter"; + } + canAAA() { return this.getDatabase()?.getByName(this.#name)?.canAAA === true; } diff --git a/src/core/include/datatypes.h b/src/core/include/datatypes.h index d24f28c2..1ab55cb1 100644 --- a/src/core/include/datatypes.h +++ b/src/core/include/datatypes.h @@ -77,6 +77,28 @@ namespace State }; }; +namespace ShotsScatter +{ + enum ShotsScatters + { + NONE = 0, + HIGH, + MEDIUM, + LOW + }; +}; + +namespace ShotsIntensity +{ + enum ShotsIntensities + { + NONE = 0, + LOW, + MEDIUM, + HIGH + }; +}; + #pragma pack(push, 1) namespace DataTypes { struct TACAN diff --git a/src/core/include/unitsmanager.h b/src/core/include/unitsmanager.h index f7af7304..56b21d18 100644 --- a/src/core/include/unitsmanager.h +++ b/src/core/include/unitsmanager.h @@ -24,6 +24,7 @@ public: void acquireControl(unsigned int ID); void loadDatabases(); Unit* getClosestUnit(Unit* unit, unsigned char coalition, vector categories, double &distance); + map getUnitsInRange(Unit* unit, unsigned char coalition, vector categories, double range); private: map units; diff --git a/src/core/src/groundunit.cpp b/src/core/src/groundunit.cpp index 2b8016dc..6b902fde 100644 --- a/src/core/src/groundunit.cpp +++ b/src/core/src/groundunit.cpp @@ -245,116 +245,132 @@ void GroundUnit::AIloop() canAAA = databaseEntry[L"canAAA"].as_bool(); } - if (!canAAA) - setState(State::IDLE); + if (canAAA) { + /* Only run this when the internal counter reaches 0 to avoid excessive computations when no nearby target */ + if (internalCounter == 0 && getOperateAs() > 0) { + double distance = 0; + unsigned char targetCoalition = getOperateAs() == 2 ? 1 : 2; + + /* Default gun values */ + double barrelHeight = 1.0; /* m */ + double muzzleVelocity = 860; /* m/s */ + double aimTime = 10; /* s */ + unsigned int shotsToFire = 10; + double shotsBaseInterval = 15; /* s */ + double shotsBaseScatter = 2; /* degs */ + double engagementRange = 10000; /* m */ + double targetingRange = 0; /* m */ + double aimMethodRange = 0; /* m */ - /* Only run this when the internal counter reaches 0 to avoid excessive computations when no nearby target */ - if (internalCounter == 0 && getOperateAs() > 0) { - double distance = 0; - unsigned char targetCoalition = getOperateAs() == 2 ? 1 : 2; - Unit* target = unitsManager->getClosestUnit(this, targetCoalition, {"Aircraft", "Helicopter"}, distance); - - /* Default gun values */ - double barrelHeight = 1.0; /* m */ - double muzzleVelocity = 860; /* m/s */ - double aimTime = 10; /* s */ - unsigned int shotsToFire = 10; - double shotsBaseInterval = 15; /* s */ - double shotsBaseScatter = 2; /* degs */ - double engagementRange = 10000; /* m */ - double targetingRange = 0; /* m */ - - if (database.has_object_field(to_wstring(name))) { - json::value databaseEntry = database[to_wstring(name)]; - if (databaseEntry.has_number_field(L"barrelHeight")) - barrelHeight = databaseEntry[L"barrelHeight"].as_number().to_double(); - if (databaseEntry.has_number_field(L"muzzleVelocity")) - muzzleVelocity = databaseEntry[L"muzzleVelocity"].as_number().to_double(); - if (databaseEntry.has_number_field(L"aimTime")) - aimTime = databaseEntry[L"aimTime"].as_number().to_double(); - if (databaseEntry.has_number_field(L"shotsToFire")) - shotsToFire = databaseEntry[L"shotsToFire"].as_number().to_uint32(); - if (databaseEntry.has_number_field(L"engagementRange")) - engagementRange = databaseEntry[L"engagementRange"].as_number().to_double(); - if (databaseEntry.has_number_field(L"shotsBaseInterval")) - shotsBaseInterval = databaseEntry[L"shotsBaseInterval"].as_number().to_double(); - if (databaseEntry.has_number_field(L"shotsBaseScatter")) - shotsBaseScatter = databaseEntry[L"shotsBaseScatter"].as_number().to_double(); - if (databaseEntry.has_number_field(L"targetingRange")) - targetingRange = databaseEntry[L"targetingRange"].as_number().to_double(); - } - - /* Only do if we have a valid target close enough for AAA */ - if (target != nullptr && distance < 3 * engagementRange) { - /* Approximate the flight time */ - if (muzzleVelocity != 0) - aimTime += distance / muzzleVelocity; - - internalCounter = (aimTime + (3 - shotsIntensity) * shotsBaseInterval + 2) / FRAMERATE_TIME_INTERVAL; - - /* If the target is in targeting range and we are in highest precision mode, target it */ - if (distance < targetingRange && shotsScatter == 3) { - /* Send the command */ - std::ostringstream taskSS; - taskSS.precision(10); - taskSS << "{id = 'AttackUnit', unitID = " << target->getID() << " }"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); - scheduler->appendCommand(command); - setHasTask(true); + /* Load gun values from database */ + if (database.has_object_field(to_wstring(name))) { + json::value databaseEntry = database[to_wstring(name)]; + if (databaseEntry.has_number_field(L"barrelHeight")) + barrelHeight = databaseEntry[L"barrelHeight"].as_number().to_double(); + if (databaseEntry.has_number_field(L"muzzleVelocity")) + muzzleVelocity = databaseEntry[L"muzzleVelocity"].as_number().to_double(); + if (databaseEntry.has_number_field(L"aimTime")) + aimTime = databaseEntry[L"aimTime"].as_number().to_double(); + if (databaseEntry.has_number_field(L"shotsToFire")) + shotsToFire = databaseEntry[L"shotsToFire"].as_number().to_uint32(); + if (databaseEntry.has_number_field(L"engagementRange")) + engagementRange = databaseEntry[L"engagementRange"].as_number().to_double(); + if (databaseEntry.has_number_field(L"shotsBaseInterval")) + shotsBaseInterval = databaseEntry[L"shotsBaseInterval"].as_number().to_double(); + if (databaseEntry.has_number_field(L"shotsBaseScatter")) + shotsBaseScatter = databaseEntry[L"shotsBaseScatter"].as_number().to_double(); + if (databaseEntry.has_number_field(L"targetingRange")) + targetingRange = databaseEntry[L"targetingRange"].as_number().to_double(); + if (databaseEntry.has_number_field(L"aimMethodRange")) + aimMethodRange = databaseEntry[L"aimMethodRange"].as_number().to_double(); } - /* Else, do miss on purpose */ - else { - /* Compute where the target will be in aimTime seconds. */ - double aimDistance = target->getHorizontalVelocity() * aimTime; - double aimLat = 0; - double aimLng = 0; - Geodesic::WGS84().Direct(target->getPosition().lat, target->getPosition().lng, target->getHeading() * 57.29577, aimDistance, aimLat, aimLng); /* TODO make util function */ - double aimAlt = target->getPosition().alt + target->getVerticalVelocity() * aimTime; - /* Send the command */ - if (distance > engagementRange) { - aimAtPoint(Coords(aimLat, aimLng, aimAlt)); - log("Aiming at point!"); + /* Get all the units in range and select one at random */ + double range = aimMethodRange > engagementRange ? aimMethodRange : engagementRange; + map targets = unitsManager->getUnitsInRange(this, targetCoalition, { "Aircraft", "Helicopter" }, range); + Unit* target = nullptr; + unsigned int index = static_cast((RANDOM_ZERO_TO_ONE * (targets.size() - 1))); + for (auto const& p : targets) { + if (index-- == 0) { + target = p.first; + distance = p.second; } - else { - /* Compute a random scattering depending on the distance and the selected shots scatter */ - double scatterDistance = distance * tan(shotsBaseScatter * (3 - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; - double scatterAngle = 180 * RANDOM_MINUS_ONE_TO_ONE; - Geodesic::WGS84().Direct(aimLat, aimLng, scatterAngle, scatterDistance, aimLat, aimLng); /* TODO make util function */ - aimAlt = aimAlt + distance * tan(shotsBaseScatter * (3 - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; + } + /* Only do if we have a valid target close enough for AAA */ + if (target != nullptr) { + /* Approximate the flight time */ + if (muzzleVelocity != 0) + aimTime += distance / muzzleVelocity; + + internalCounter = (aimTime + (ShotsIntensity::HIGH - shotsIntensity) * shotsBaseInterval + 2) / FRAMERATE_TIME_INTERVAL; + + /* If the target is in targeting range and we are in highest precision mode, target it */ + if (distance < targetingRange && shotsScatter == ShotsScatter::LOW) { + /* Send the command */ std::ostringstream taskSS; taskSS.precision(10); - taskSS << "{id = 'FireAtPoint', lat = " << aimLat << ", lng = " << aimLng << ", alt = " << aimAlt << ", radius = 0.001, expendQty = " << shotsToFire << " }"; + taskSS << "{id = 'AttackUnit', unitID = " << target->getID() << " }"; Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } + /* Else, do miss on purpose */ + else { + /* Compute where the target will be in aimTime seconds. */ + double aimDistance = target->getHorizontalVelocity() * aimTime; + double aimLat = 0; + double aimLng = 0; + Geodesic::WGS84().Direct(target->getPosition().lat, target->getPosition().lng, target->getHeading() * 57.29577, aimDistance, aimLat, aimLng); /* TODO make util to convert degrees and radians function */ + double aimAlt = target->getPosition().alt + target->getVerticalVelocity() * aimTime; - setTargetPosition(Coords(aimLat, aimLng, target->getPosition().alt)); + /* Send the command */ + if (distance > engagementRange) { + aimAtPoint(Coords(aimLat, aimLng, aimAlt)); + } + else { + /* Compute a random scattering depending on the distance and the selected shots scatter */ + double scatterDistance = distance * tan(shotsBaseScatter * (ShotsScatter::LOW - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; + double scatterAngle = 180 * RANDOM_MINUS_ONE_TO_ONE; + Geodesic::WGS84().Direct(aimLat, aimLng, scatterAngle, scatterDistance, aimLat, aimLng); /* TODO make util function */ + aimAlt = aimAlt + distance * tan(shotsBaseScatter * (ShotsScatter::LOW - shotsScatter) / 57.29577) * RANDOM_MINUS_ONE_TO_ONE; + + std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'FireAtPoint', lat = " << aimLat << ", lng = " << aimLng << ", alt = " << aimAlt << ", radius = 0.001, expendQty = " << shotsToFire << " }"; + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); + scheduler->appendCommand(command); + setHasTask(true); + } + + setTargetPosition(Coords(aimLat, aimLng, target->getPosition().alt)); + } + + missOnPurposeTarget = target; + } + else { + if (getHasTask()) + resetTask(); } - - missOnPurposeTarget = target; - } - else { - if (getHasTask()) - resetTask(); } - } - /* If no valid target was detected */ - if (internalCounter == 0) { - double alertnessTimeConstant = 10; /* s */ - if (database.has_object_field(to_wstring(name))) { - json::value databaseEntry = database[to_wstring(name)]; - if (databaseEntry.has_number_field(L"alertnessTimeConstant")) - alertnessTimeConstant = databaseEntry[L"alertnessTimeConstant"].as_number().to_double(); + /* If no valid target was detected */ + if (internalCounter == 0) { + double alertnessTimeConstant = 10; /* s */ + if (database.has_object_field(to_wstring(name))) { + json::value databaseEntry = database[to_wstring(name)]; + if (databaseEntry.has_number_field(L"alertnessTimeConstant")) + alertnessTimeConstant = databaseEntry[L"alertnessTimeConstant"].as_number().to_double(); + } + internalCounter = (5 + RANDOM_ZERO_TO_ONE * alertnessTimeConstant) / FRAMERATE_TIME_INTERVAL; + missOnPurposeTarget = nullptr; + setTargetPosition(Coords(NULL)); } - internalCounter = (5 + RANDOM_ZERO_TO_ONE * alertnessTimeConstant) / FRAMERATE_TIME_INTERVAL; - missOnPurposeTarget = nullptr; - setTargetPosition(Coords(NULL)); + internalCounter--; + } + else { + setState(State::IDLE); } - internalCounter--; break; } @@ -363,6 +379,57 @@ void GroundUnit::AIloop() } } + +void GroundUnit::aimAtPoint(Coords aimTarget, double horizontalScatterMultiplier, double verticalScatterMultiplier) { + double dist; + double bearing1; + double bearing2; + Geodesic::WGS84().Inverse(position.lat, position.lng, aimTarget.lat, aimTarget.lng, dist, bearing1, bearing2); + + /* Aim point distance */ + double r = 15; /* m */ + + /* Default gun values */ + double barrelHeight = 1.0; /* m */ + double muzzleVelocity = 860; /* m/s */ + double shotsBaseScatter = 5; /* degs */ + if (database.has_object_field(to_wstring(name))) { + json::value databaseEntry = database[to_wstring(name)]; + if (databaseEntry.has_number_field(L"barrelHeight") && databaseEntry.has_number_field(L"muzzleVelocity")) { + barrelHeight = databaseEntry[L"barrelHeight"].as_number().to_double(); + muzzleVelocity = databaseEntry[L"muzzleVelocity"].as_number().to_double(); + } + if (databaseEntry.has_number_field(L"shotsBaseScatter")) + shotsBaseScatter = databaseEntry[L"shotsBaseScatter"].as_number().to_double(); + } + + /* Compute the elevation angle of the gun*/ + double deltaHeight = (aimTarget.alt - (position.alt + barrelHeight)); + double alpha = 9.81 / 2 * dist * dist / (muzzleVelocity * muzzleVelocity); + double inner = dist * dist - 4 * alpha * (alpha + deltaHeight); + + /* Check we can reach the target*/ + if (inner > 0) { + /* Compute elevation and bearing */ + double barrelElevation = r * tan(atan((dist - sqrt(inner)) / (2 * alpha)) + RANDOM_MINUS_ONE_TO_ONE * (ShotsScatter::LOW - shotsScatter) * verticalScatterMultiplier); + + double lat = 0; + double lng = 0; + double randomBearing = bearing1 + RANDOM_MINUS_ONE_TO_ONE * (ShotsScatter::LOW - shotsScatter) * horizontalScatterMultiplier; + Geodesic::WGS84().Direct(position.lat, position.lng, randomBearing, r, lat, lng); + + std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'FireAtPoint', lat = " << lat << ", lng = " << lng << ", alt = " << position.alt + barrelElevation + barrelHeight << ", radius = 0.001}"; + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); + scheduler->appendCommand(command); + setHasTask(true); + } + else { + log("Target out of range for " + unitName + "(" + name + ")"); + } +} + void GroundUnit::changeSpeed(string change) { if (change.compare("stop") == 0) @@ -392,45 +459,3 @@ void GroundUnit::setFollowRoads(bool newFollowRoads, bool force) resetActiveDestination(); /* Reset active destination to apply option*/ } } - -void GroundUnit::aimAtPoint(Coords aimTarget, double horizontalScatterMultiplier, double verticalScatterMultiplier) { - double dist; - double bearing1; - double bearing2; - Geodesic::WGS84().Inverse(position.lat, position.lng, aimTarget.lat, aimTarget.lng, dist, bearing1, bearing2); - - double r = 15; /* m */ - /* Default gun values */ - double barrelHeight = 1.0; /* m */ - double muzzleVelocity = 860; /* m/s */ - double shotsBaseScatter = 5; /* degs */ - if (database.has_object_field(to_wstring(name))) { - json::value databaseEntry = database[to_wstring(name)]; - if (databaseEntry.has_number_field(L"barrelHeight") && databaseEntry.has_number_field(L"muzzleVelocity")) { - barrelHeight = databaseEntry[L"barrelHeight"].as_number().to_double(); - muzzleVelocity = databaseEntry[L"muzzleVelocity"].as_number().to_double(); - } - if (databaseEntry.has_number_field(L"shotsBaseScatter")) - shotsBaseScatter = databaseEntry[L"shotsBaseScatter"].as_number().to_double(); - } - - //double barrelElevation = r * (9.81 * dist / (2 * muzzleVelocity * muzzleVelocity) + (aimTarget.alt - (position.alt + barrelHeight)) / dist); /* m */ - double deltaHeight = (aimTarget.alt - (position.alt + barrelHeight)); - double alpha = 9.81 / 2 * dist * dist / (muzzleVelocity * muzzleVelocity); - double inner = dist * dist - 4 * alpha * (alpha + deltaHeight); - if (inner > 0) { - double barrelElevation = r * tan(atan((dist - sqrt(inner)) / (2 * alpha)) + RANDOM_MINUS_ONE_TO_ONE * (3 - shotsScatter) * verticalScatterMultiplier); - - double lat = 0; - double lng = 0; - double randomBearing = bearing1 + RANDOM_MINUS_ONE_TO_ONE * (3 - shotsScatter) * horizontalScatterMultiplier; - Geodesic::WGS84().Direct(position.lat, position.lng, randomBearing, r, lat, lng); - - std::ostringstream taskSS; - taskSS.precision(10); - taskSS << "{id = 'FireAtPoint', lat = " << lat << ", lng = " << lng << ", alt = " << position.alt + barrelElevation + barrelHeight << ", radius = 0.001}"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); - scheduler->appendCommand(command); - setHasTask(true); - } -} diff --git a/src/core/src/scheduler.cpp b/src/core/src/scheduler.cpp index af57c77d..f40d156b 100644 --- a/src/core/src/scheduler.cpp +++ b/src/core/src/scheduler.cpp @@ -640,7 +640,7 @@ void Scheduler::handleRequest(string key, json::value value, string username, js if (unit != nullptr) { unsigned char shotsScatter = value[L"shotsScatter"].as_number().to_uint32(); unit->setShotsScatter(shotsScatter); - log(username + " set unit " + + unit->getUnitName() + "(" + unit->getName() + ") shots scatter to " + to_string(shotsScatter), true); + log(username + " set unit " + unit->getUnitName() + "(" + unit->getName() + ") shots scatter to " + to_string(shotsScatter), true); } } /************************/ diff --git a/src/core/src/unitsmanager.cpp b/src/core/src/unitsmanager.cpp index 68b7a41e..30a5ac20 100644 --- a/src/core/src/unitsmanager.cpp +++ b/src/core/src/unitsmanager.cpp @@ -194,6 +194,35 @@ Unit* UnitsManager::getClosestUnit(Unit* unit, unsigned char coalition, vector UnitsManager::getUnitsInRange(Unit* unit, unsigned char coalition, vector categories, double range) { + map unitsInRange; + + for (auto const& p : units) { + /* Check if the units category is of the correct type */ + bool requestedCategory = false; + for (auto const& category : categories) { + if (p.second->getCategory().compare(category) == 0) { + requestedCategory = true; + break; + } + } + + /* Check if the unit belongs to the desired coalition, is alive, and is of the category requested */ + if (requestedCategory && p.second->getCoalition() == coalition && p.second->getAlive()) { + /* Compute the distance from the unit to the tested unit */ + double dist; + double bearing1; + double bearing2; + Geodesic::WGS84().Inverse(unit->getPosition().lat, unit->getPosition().lng, p.second->getPosition().lat, p.second->getPosition().lng, dist, bearing1, bearing2); + + if (dist <= range) + unitsInRange[p.second] = dist; + } + } + + return unitsInRange; +} + void UnitsManager::acquireControl(unsigned int ID) { Unit* leader = getGroupLeader(ID); if (leader != nullptr) {