Merge branch 'develop' into dependabot/npm_and_yarn/client/multi-7d5e57b41f

This commit is contained in:
zhexu14 2025-03-16 15:07:37 +11:00 committed by GitHub
commit 6acd35d58e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
45 changed files with 263 additions and 36 deletions

View File

@ -31,7 +31,7 @@ body:
If the bug was found in a development build, select "Development build" If the bug was found in a development build, select "Development build"
and provide a link to the build in the field below. and provide a link to the build in the field below.
options: options:
- 11.1.1 - 14.0.0
- Development build - Development build
- type: textarea - type: textarea
attributes: attributes:

View File

@ -39,7 +39,7 @@ body:
If the bug was found in a development build, select "Development build" If the bug was found in a development build, select "Development build"
and provide a link to the build in the field below. and provide a link to the build in the field below.
options: options:
- 11.1.1 - 14.0.0
- Development build - Development build
- type: textarea - type: textarea
attributes: attributes:

View File

@ -33,7 +33,7 @@ jobs:
with: with:
release: true release: true
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v4
with: with:
name: dcs_liberation name: dcs_liberation
path: dist/ path: dist/

View File

@ -1,3 +1,32 @@
# 14.0.0
Saves from 13.x are not compatible with 14.0.0.
## Features/Improvements
* **[Engine]** Support for DCS 2.9.13.6818.
## Fixes
* **[UI]** Air Wing and Transfers buttons disabled when no game is loaded as pressing them without a game loaded resulted in a crash.
# 13.0.0
Saves from 12.x are not compatible with 13.0.0.
## Features/Improvements
* **[Engine]** Support for DCS 2.9.12.5536.
* **[Data]** Support for CH-47 Chinook.
## Fixes
* **[Data]** Added/updated CBU weapons data.
* **[Data]** Added Strike mission type for KA-50 (all playable variants).
* **[Mission Generation]** Fixed crash when using factions that have Eastern callsign conventions.
* **[Mission Generation]** Fixed issues when spawning on carriers and FARPs in multiplayer sessions.
# 12.0.0 # 12.0.0
Saves from 11.x are not compatible with 12.0.0. Saves from 11.x are not compatible with 12.0.0.

View File

@ -18,7 +18,7 @@
"@types/react": "^18.0.21", "@types/react": "^18.0.21",
"@types/react-dom": "^18.0.6", "@types/react-dom": "^18.0.6",
"@types/react-redux": "^7.1.24", "@types/react-redux": "^7.1.24",
"axios": "^1.7.4", "axios": "^1.8.3",
"electron-window-state": "^5.0.3", "electron-window-state": "^5.0.3",
"esri-leaflet": "^3.0.8", "esri-leaflet": "^3.0.8",
"leaflet": "^1.9.2", "leaflet": "^1.9.2",
@ -6186,9 +6186,10 @@
} }
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "1.7.4", "version": "1.8.3",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz",
"integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==",
"license": "MIT",
"dependencies": { "dependencies": {
"follow-redirects": "^1.15.6", "follow-redirects": "^1.15.6",
"form-data": "^4.0.0", "form-data": "^4.0.0",
@ -25956,9 +25957,9 @@
"dev": true "dev": true
}, },
"axios": { "axios": {
"version": "1.7.4", "version": "1.8.3",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz",
"integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==",
"requires": { "requires": {
"follow-redirects": "^1.15.6", "follow-redirects": "^1.15.6",
"form-data": "^4.0.0", "form-data": "^4.0.0",

View File

@ -15,7 +15,7 @@
"@types/react": "^18.0.21", "@types/react": "^18.0.21",
"@types/react-dom": "^18.0.6", "@types/react-dom": "^18.0.6",
"@types/react-redux": "^7.1.24", "@types/react-redux": "^7.1.24",
"axios": "^1.7.4", "axios": "^1.8.3",
"electron-window-state": "^5.0.3", "electron-window-state": "^5.0.3",
"esri-leaflet": "^3.0.8", "esri-leaflet": "^3.0.8",
"leaflet": "^1.9.2", "leaflet": "^1.9.2",

View File

@ -7,9 +7,9 @@
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
project = "DCS Liberation" project = "DCS Liberation"
copyright = "2024, DCS Liberation Team" copyright = "2025, DCS Liberation Team"
author = "DCS Liberation Team" author = "DCS Liberation Team"
release = "12.0.0" release = "14.0.0"
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

View File

@ -230,13 +230,18 @@ class EasternFlightCallsignGenerator:
class FlightCallsignGenerator: class FlightCallsignGenerator:
def __init__(self, country: str): def __init__(self, country: str):
self._use_western_callsigns = countries_by_name[country]().use_western_callsigns
self._generators: dict[ self._generators: dict[
bool, WesternFlightCallsignGenerator | EasternFlightCallsignGenerator bool, WesternFlightCallsignGenerator | EasternFlightCallsignGenerator
] = { ] = {}
True: WesternFlightCallsignGenerator(country), if self._use_western_callsigns:
False: EasternFlightCallsignGenerator(), self._generators[self._use_western_callsigns] = (
} WesternFlightCallsignGenerator(country)
self._use_western_callsigns = countries_by_name[country]().use_western_callsigns )
else:
self._generators[self._use_western_callsigns] = (
EasternFlightCallsignGenerator()
)
def reset(self) -> None: def reset(self) -> None:
self._generators[self._use_western_callsigns].reset() self._generators[self._use_western_callsigns].reset()

View File

@ -117,8 +117,6 @@ class Cap:
@dataclass(frozen=True) @dataclass(frozen=True)
class Tactics: class Tactics:
#: Aircraft use countermeasures (chaff, flares)
use_countermeasures: bool
#: Air-to-air missile attack range options #: Air-to-air missile attack range options
air_to_air_missile_attack_range: Optional[OptAAMissileAttackRange.Values] air_to_air_missile_attack_range: Optional[OptAAMissileAttackRange.Values]
@ -129,7 +127,6 @@ class Tactics:
@staticmethod @staticmethod
def from_dict(data: dict[str, Any]) -> Tactics: def from_dict(data: dict[str, Any]) -> Tactics:
return Tactics( return Tactics(
use_countermeasures=data.get("use_countermeasures", True),
air_to_air_missile_attack_range=None, air_to_air_missile_attack_range=None,
air_defence_evades_anti_radiation_missiles=data.get( air_defence_evades_anti_radiation_missiles=data.get(
"air_defence_evades_anti_radiation_missiles", False "air_defence_evades_anti_radiation_missiles", False

View File

@ -123,6 +123,9 @@ class Faction:
#: weapons groups to their introduction years. #: weapons groups to their introduction years.
weapons_introduction_year_overrides: Dict[str, int] = field(default_factory=dict) weapons_introduction_year_overrides: Dict[str, int] = field(default_factory=dict)
#: Set to True if the faction has access to countermeasures (chaff and flares).
countermeasures_available: bool = True
def has_access_to_dcs_type(self, unit_type: Type[DcsUnitType]) -> bool: def has_access_to_dcs_type(self, unit_type: Type[DcsUnitType]) -> bool:
# Vehicle and Ship Units # Vehicle and Ship Units
if any(unit_type == u.dcs_unit_type for u in self.accessible_units): if any(unit_type == u.dcs_unit_type for u in self.accessible_units):
@ -271,6 +274,8 @@ class Faction:
"weapons_introduction_year_overrides", {} "weapons_introduction_year_overrides", {}
) )
faction.countermeasures_available = json.get("countermeasures_available", True)
return faction return faction
@property @property

View File

@ -1,7 +1,7 @@
from pathlib import Path from pathlib import Path
MAJOR_VERSION = 12 MAJOR_VERSION = 14
MINOR_VERSION = 0 MINOR_VERSION = 0
MICRO_VERSION = 0 MICRO_VERSION = 0
VERSION_NUMBER = ".".join(str(v) for v in (MAJOR_VERSION, MINOR_VERSION, MICRO_VERSION)) VERSION_NUMBER = ".".join(str(v) for v in (MAJOR_VERSION, MINOR_VERSION, MICRO_VERSION))

View File

@ -242,6 +242,8 @@ class QLiberationWindow(QMainWindow):
self.openSettingsAction.setVisible(enabled) self.openSettingsAction.setVisible(enabled)
self.openStatsAction.setVisible(enabled) self.openStatsAction.setVisible(enabled)
self.openNotesAction.setVisible(enabled) self.openNotesAction.setVisible(enabled)
self.openAirWingAction.setVisible(enabled)
self.openTransfersAction.setVisible(enabled)
# Also Disable SaveAction to prevent Keyboard Shortcut # Also Disable SaveAction to prevent Keyboard Shortcut
self.saveGameAction.setEnabled(enabled) self.saveGameAction.setEnabled(enabled)

View File

@ -12,7 +12,7 @@ coverage==7.3.2
distlib==0.3.7 distlib==0.3.7
exceptiongroup==1.2.0 exceptiongroup==1.2.0
Faker==20.1.0 Faker==20.1.0
fastapi==0.109.1 fastapi==0.115.8
filelock==3.13.1 filelock==3.13.1
future==0.18.3 future==0.18.3
h11==0.14.0 h11==0.14.0
@ -20,7 +20,7 @@ httptools==0.6.1
identify==2.5.32 identify==2.5.32
idna==3.7 idna==3.7
iniconfig==2.0.0 iniconfig==2.0.0
Jinja2==3.1.4 Jinja2==3.1.6
MarkupSafe==2.1.3 MarkupSafe==2.1.3
mypy==1.7.1 mypy==1.7.1
mypy-extensions==1.0.0 mypy-extensions==1.0.0
@ -36,7 +36,7 @@ pre-commit==3.5.0
pydantic==2.5.2 pydantic==2.5.2
pydantic-settings==2.1.0 pydantic-settings==2.1.0
pydantic_core==2.14.5 pydantic_core==2.14.5
pydcs @ git+https://github.com/dcs-liberation/dcs@2eddd456dd23effc9f8c254b967b82a8e8c3c790 pydcs @ git+https://github.com/dcs-liberation/dcs@d1c8e9557aa1113908f9705fbe084e7cf08d6000
pyinstaller==5.13.1 pyinstaller==5.13.1
pyinstaller-hooks-contrib==2023.6 pyinstaller-hooks-contrib==2023.6
pyproj==3.6.1 pyproj==3.6.1
@ -54,7 +54,7 @@ shapely==2.0.2
shiboken6==6.4.1 shiboken6==6.4.1
six==1.16.0 six==1.16.0
sniffio==1.3.0 sniffio==1.3.0
starlette==0.35.1 starlette==0.45.3
tabulate==0.9.0 tabulate==0.9.0
tomli==2.0.1 tomli==2.0.1
types-Jinja2==2.11.9 types-Jinja2==2.11.9
@ -64,6 +64,6 @@ types-PyYAML==6.0.12.12
types-tabulate==0.9.0.3 types-tabulate==0.9.0.3
typing_extensions==4.8.0 typing_extensions==4.8.0
uvicorn==0.24.0.post1 uvicorn==0.24.0.post1
virtualenv==20.24.7 virtualenv==20.26.6
watchfiles==0.21.0 watchfiles==0.21.0
websockets==12.0 websockets==12.0

View File

@ -0,0 +1,25 @@
local unitPayloads = {
["name"] = "CH-47Fbl1",
["payloads"] = {
[1] = {
["name"] = "Liberation Air Assault",
["pylons"] = {
[1] = {
["CLSID"] = "{CH47_STBD_M60D}",
["num"] = 2,
},
[2] = {
["CLSID"] = "{CH47_PORT_M60D}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 35,
},
},
},
["tasks"] = {
},
["unitType"] = "CH-47Fbl1",
}
return unitPayloads

View File

@ -97,7 +97,32 @@ local unitPayloads = {
}, },
}, },
["tasks"] = { ["tasks"] = {
[1] = 31, [1] = 29,
},
},
[5] = {
["displayName"] = "Liberation Strike",
["name"] = "Liberation Strike",
["pylons"] = {
[1] = {
["CLSID"] = "{37DCC01E-9E02-432F-B61D-10C166CA2798}",
["num"] = 1,
},
[2] = {
["CLSID"] = "{37DCC01E-9E02-432F-B61D-10C166CA2798}",
["num"] = 2,
},
[3] = {
["CLSID"] = "{37DCC01E-9E02-432F-B61D-10C166CA2798}",
["num"] = 3,
},
[4] = {
["CLSID"] = "{37DCC01E-9E02-432F-B61D-10C166CA2798}",
["num"] = 4,
},
},
["tasks"] = {
[1] = 32,
}, },
}, },
}, },

View File

@ -129,7 +129,32 @@ local unitPayloads = {
}, },
}, },
["tasks"] = { ["tasks"] = {
[1] = 31, [1] = 29,
},
},
[5] = {
["displayName"] = "Liberation Strike",
["name"] = "Liberation Strike",
["pylons"] = {
[1] = {
["CLSID"] = "{37DCC01E-9E02-432F-B61D-10C166CA2798}",
["num"] = 1,
},
[2] = {
["CLSID"] = "{37DCC01E-9E02-432F-B61D-10C166CA2798}",
["num"] = 2,
},
[3] = {
["CLSID"] = "{37DCC01E-9E02-432F-B61D-10C166CA2798}",
["num"] = 3,
},
[4] = {
["CLSID"] = "{37DCC01E-9E02-432F-B61D-10C166CA2798}",
["num"] = 4,
},
},
["tasks"] = {
[1] = 32,
}, },
}, },
}, },

View File

@ -32,6 +32,5 @@ helicopter:
rendezvous_altitude_ft_agl: 1500 rendezvous_altitude_ft_agl: 1500
air_assault_nav_altitude_ft_agl: 1500 air_assault_nav_altitude_ft_agl: 1500
tactics: tactics:
use_countermeasures: true
air_defence_evades_anti_radiation_missiles: false air_defence_evades_anti_radiation_missiles: false
air_to_air_missile_attack_range: ~ air_to_air_missile_attack_range: ~

View File

@ -32,6 +32,5 @@ helicopter:
rendezvous_altitude_ft_agl: 1500 rendezvous_altitude_ft_agl: 1500
air_assault_nav_altitude_ft_agl: 1500 air_assault_nav_altitude_ft_agl: 1500
tactics: tactics:
use_countermeasures: true
air_defence_evades_anti_radiation_missiles: false air_defence_evades_anti_radiation_missiles: false
air_to_air_missile_attack_range: ~ air_to_air_missile_attack_range: ~

View File

@ -31,6 +31,5 @@ helicopter:
rendezvous_altitude_ft_agl: 1500 rendezvous_altitude_ft_agl: 1500
air_assault_nav_altitude_ft_agl: 1500 air_assault_nav_altitude_ft_agl: 1500
tactics: tactics:
use_countermeasures: true
air_defence_evades_anti_radiation_missiles: false air_defence_evades_anti_radiation_missiles: false
air_to_air_missile_attack_range: ~ air_to_air_missile_attack_range: ~

View File

@ -30,6 +30,7 @@ aircrafts:
- SA 342M Gazelle - SA 342M Gazelle
- SA 342M Gazelle Mistral - SA 342M Gazelle Mistral
- Tornado IDS - Tornado IDS
- Tornado GR4
- UH-1H Iroquois - UH-1H Iroquois
awacs: awacs:
- E-2C Hawkeye - E-2C Hawkeye

View File

@ -19,6 +19,7 @@ aircrafts:
- C-130J-30 Super Hercules - C-130J-30 Super Hercules
- C-17A - C-17A
- CH-47D - CH-47D
- CH-47F Block I
- CH-53E - CH-53E
- F-117A Nighthawk - F-117A Nighthawk
- F-14B Tomcat - F-14B Tomcat

View File

@ -17,6 +17,7 @@ aircrafts:
- C-130J-30 Super Hercules - C-130J-30 Super Hercules
- C-17A - C-17A
- CH-47D - CH-47D
- CH-47F Block I
- CH-53E - CH-53E
- F-117A Nighthawk - F-117A Nighthawk
- F-14B Tomcat - F-14B Tomcat

View File

@ -1,6 +1,7 @@
--- ---
name: Escuadrón Aéreo 412 name: Escuadrón Aéreo 412
nickname: Halcones nickname: Halcones
female_pilot_percentage: 0
country: Peru country: Peru
role: Fighter role: Fighter
aircraft: Mirage 2000C aircraft: Mirage 2000C

View File

@ -13,7 +13,7 @@
</p> </p>
<p> <p>
To avoid delays entirely, use the "Never delay player flights" option in the To avoid delays entirely, use the "Player flights ignore TOT and spawn immediately" option in the
mission generation settings. Note that this will <strong>not</strong> adjust mission generation settings. Note that this will <strong>not</strong> adjust
the timing of your mission; this option only allows you to wait in the the timing of your mission; this option only allows you to wait in the
cockpit. cockpit.

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,32 @@
class: Helicopter
carrier_capable: true
description: # from https://en.wikipedia.org/wiki/Boeing_CH-47_Chinook
In 2001, the CH-47F, an upgraded CH-47D, made its maiden flight. The first production model rolled out at Boeing's
facility in Ridley Park, Pennsylvania, and first flew on 23 October 2006. Upgrades included 4,868-shaft-horsepower
(3,630 kW) Honeywell engines and airframe with better integrated construction for lower maintenance requirements.
The milled construction reduces vibration, as well as inspection and repair needs, and eliminates flexing points to
increase service life. The CH-47F can fly at speeds of over 175 mph (282 km/h) with a payload of more than
21,000 lb (9,500 kg). New avionics include a Rockwell Collins Common Avionics Architecture System (CAAS) cockpit,
and BAE Systems' Digital Advanced Flight Control System (DAFCS). AgustaWestland assembles the CH-47F under license,
known as the Chinook ICH-47F, for several customers. Boeing delivered 48 CH-47Fs to the U.S. Army through August 2008;
at that time Boeing announced a $4.8 billion (~$6.67 billion in 2023) contract with the Army for 191 Chinooks.
lha_capable: true
introduced: 2006
cabin_size: 24 # It should have 33 but we do not want so much for CTLD to be possible
can_carry_crates: true
manufacturer: Boeing
origin: USA
price: 8
role: Transport
variants:
CH-47F Block I: {}
radios:
intra_flight: AN/ARC-186(V) FM
inter_flight: AN/ARC-186(V) FM
channels:
type: common
intra_flight_radio_index: 1
inter_flight_radio_index: 1
tasks:
Air Assault: 120
Transport: 110

View File

@ -28,5 +28,6 @@ tasks:
BAI: 430 BAI: 430
CAS: 430 CAS: 430
DEAD: 113 DEAD: 113
Strike: 200
OCA/Aircraft: 430 OCA/Aircraft: 430
hit_points: 15 hit_points: 15

View File

@ -28,5 +28,6 @@ tasks:
BAI: 440 BAI: 440
CAS: 440 CAS: 440
DEAD: 114 DEAD: 114
Strike: 200
OCA/Aircraft: 440 OCA/Aircraft: 440
hit_points: 15 hit_points: 15

View File

@ -0,0 +1,6 @@
name: 2xCBU-52B
year: 1972
fallback: 2xMk 20 Rockeye
clsids:
- "{HB_F4E_CBU-52B_2x}"
- "{HB_F4E_CBU-52B_2x_SWA}"

View File

@ -0,0 +1,6 @@
name: 3xCBU-52B
year: 1972
fallback: 3xMk 20 Rockeye
clsids:
- "{HB_F4E_CBU-52B_MER_3x_Left}"
- "{HB_F4E_CBU-52B_MER_3x_Right}"

View File

@ -0,0 +1,5 @@
name: 6xCBU-52B
year: 1972
fallback: 6xMk 20 Rockeye
clsids:
- "{HB_F4E_CBU-52B_MER_6x}"

View File

@ -0,0 +1,6 @@
name: CBU-52B
year: 1972
fallback: Mk 20 Rockeye
clsids:
- "{CBU-52B}"
- "{HB_CBU-52B_SWA}"

View File

@ -1,6 +1,8 @@
name: 2xCBU-87 name: 2xCBU-87
year: 1986 year: 1986
fallback: 2xMk 82 fallback: 2xCBU-52B
clsids: clsids:
- "{TER_9A_2L*CBU-87}" - "{TER_9A_2L*CBU-87}"
- "{TER_9A_2R*CBU-87}" - "{TER_9A_2R*CBU-87}"
- "{HB_F4E_CBU-87_2x}"
- "{HB_F4E_CBU-87_2x_SWA}"

View File

@ -1,5 +1,9 @@
name: 3xCBU-87 name: 3xCBU-87
year: 1986 year: 1986
fallback: 3xMk 82 fallback: 3xCBU-52B
clsids: clsids:
- "{TER_9A_3*CBU-87}" - "{TER_9A_3*CBU-87}"
- "{CFT_L_CBU_87_x_3}"
- "{CFT_R_CBU_87_x_3}"
- "{HB_F4E_CBU-87_MER_3x_Left}"
- "{HB_F4E_CBU-87_MER_3x_Right}"

View File

@ -0,0 +1,7 @@
name: 6xCBU-87
year: 1986
fallback: 6xCBU-52B
clsids:
- "{CFT_L_CBU_87_x_6}"
- "{CFT_R_CBU_87_x_6}"
- "{HB_F4E_CBU-87_MER_4x}"

View File

@ -1,5 +1,6 @@
name: CBU-87 name: CBU-87
year: 1986 year: 1986
fallback: Mk 82 fallback: CBU-52B
clsids: clsids:
- "{CBU-87}" - "{CBU-87}"
- "{HB_CBU-87_SWA}"

View File

@ -0,0 +1,10 @@
name: 2xMk 20 Rockeye
year: 1968
fallback: 2xMk 82
clsids:
- "{BRU33_2X_ROCKEYE}"
- "{0B9ABA77-93B8-45FC-9C63-82AFB2CB50A4}"
- "{HB_F4E_ROCKEYE_2x}"
- "{BRU-42_2*MK-20_LEFT}"
- "{BRU-42_2*MK-20_RIGHT}"
- "{HB_F4E_ROCKEYE_2x_SWA}"

View File

@ -0,0 +1,8 @@
name: 3xMk 20 Rockeye
year: 1968
fallback: 3xMk 82
clsids:
- "{B83CB620-5BBE-4BEA-910C-EB605A327EF9}"
- "{CFT_L_CBU_100_x_3}"
- "{CFT_R_CBU_100_x_3}"
- "{HB_F4E_ROCKEYE_3x}"

View File

@ -0,0 +1,9 @@
name: 6xMk 20 Rockeye
year: 1968
fallback: 6xMk 82
clsids:
- "{3C7CD675-7D39-41C5-8735-0F4F537818A8}"
- "{CFT_L_CBU_100_x_6}"
- "{CFT_R_CBU_100_x_6}"
- "{HB_F4E_ROCKEYE_6x}"
- "{E79759F7-C622-4AA4-B1EF-37639A34D924}"

View File

@ -0,0 +1,6 @@
name: Mk 20 Rockeye
year: 1968
fallback: Mk 82
clsids:
- "{HB_ROCKEYE_SWA}"
- "{ADD3FAE1-EBF6-4EF9-8EFC-B36B5DDF1E6B}"

View File

@ -16,3 +16,5 @@ clsids:
- "{BRU42_2*MK82 LS}" - "{BRU42_2*MK82 LS}"
- "{BRU3242_2*MK82 LS}" - "{BRU3242_2*MK82 LS}"
- "{PHXBRU3242_2*MK82 LS}" - "{PHXBRU3242_2*MK82 LS}"
- "{HB_F4E_MK-82_2x_SWA}"
- "{HB_F4E_MK-82_2x}"

View File

@ -2,3 +2,4 @@ name: 3xMk 82
fallback: 2xMk 82 fallback: 2xMk 82
clsids: clsids:
- "{60CC734F-0AFA-4E2E-82B8-93B941AB11CF}" - "{60CC734F-0AFA-4E2E-82B8-93B941AB11CF}"
- "{HB_F4E_MK-82_3x}"

View File

@ -0,0 +1,4 @@
name: 6xMk 82
fallback: Mk 82
clsids:
- "{HB_F4E_MK-82_6x}"

View File

@ -9,3 +9,4 @@ clsids:
- "{Mk_82SP}" - "{Mk_82SP}"
- "{Mk_82YT}" - "{Mk_82YT}"
- "{BCE4E030-38E9-423E-98ED-24BE3DA87C32}" - "{BCE4E030-38E9-423E-98ED-24BE3DA87C32}"
- "{HB_MK-82_SWA}"