Compare commits

...

7 Commits

Author SHA1 Message Date
Dan Albert
2bdf9d3423 Black the pydcs extensions directory. 2021-04-11 13:55:29 -07:00
Dan Albert
0cd359f36b Black the resoureces directory. 2021-04-11 13:54:55 -07:00
Dan Albert
39bd6e3c10 Avoid warning in GitHub workflow.
(cherry picked from commit 4ec8994c38)
2021-04-11 13:37:16 -07:00
Dan Albert
ed89c49fd4 Add black workflow.
(cherry picked from commit 16b0dcad71)
2021-04-11 13:31:10 -07:00
Dan Albert
4000b42df2 Add pre-commit configuration for black.
To set up, run `pre-commit install`.

(cherry picked from commit 9c1265d50d)
2021-04-11 13:31:09 -07:00
Dan Albert
f73a68aeca Note the font crash fix in the changelog.
(cherry picked from commit cce736bc16)
2021-04-11 13:29:30 -07:00
Hanninho
7f8dae003f Force the basic layout engine when generating the kneeboard.
The libraqm backed layout engine causes crashes on some machines.

Fixes #531.

(cherry picked from commit 2a1127e637)
2021-04-11 13:25:32 -07:00
18 changed files with 866 additions and 220 deletions

13
.github/workflows/black.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
name: Lint
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: psf/black@stable
with:
args: ". --check"

6
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,6 @@
repos:
- repo: https://github.com/psf/black
rev: 20.8b1
hooks:
- id: black
language_version: python3

View File

@@ -1,3 +1,9 @@
# 2.4.4
## Fixes
* **[Mission Generation]** Fixed "invalid face handle" error in kneeboard generation that occurred on some machines.
# 2.4.3 # 2.4.3
## Features/Improvements ## Features/Improvements

View File

@@ -55,10 +55,18 @@ class KneeboardPageWriter:
# more information in the comm ladder (the latter of which we should # more information in the comm ladder (the latter of which we should
# probably do), we'll need to split some of this information off into a # probably do), we'll need to split some of this information off into a
# second page. # second page.
self.title_font = ImageFont.truetype("arial.ttf", 32) self.title_font = ImageFont.truetype(
self.heading_font = ImageFont.truetype("arial.ttf", 24) "arial.ttf", 32, layout_engine=ImageFont.LAYOUT_BASIC
self.content_font = ImageFont.truetype("arial.ttf", 20) )
self.table_font = ImageFont.truetype("resources/fonts/Inconsolata.otf", 20) self.heading_font = ImageFont.truetype(
"arial.ttf", 24, layout_engine=ImageFont.LAYOUT_BASIC
)
self.content_font = ImageFont.truetype(
"arial.ttf", 20, layout_engine=ImageFont.LAYOUT_BASIC
)
self.table_font = ImageFont.truetype(
"resources/fonts/Inconsolata.otf", 20, layout_engine=ImageFont.LAYOUT_BASIC
)
self.draw = ImageDraw.Draw(self.image) self.draw = ImageDraw.Draw(self.image)
self.x = page_margin self.x = page_margin
self.y = page_margin self.y = page_margin

View File

@@ -6,99 +6,412 @@ from dcs.weapons_data import Weapons
class WeaponsA4EC: class WeaponsA4EC:
AN_M57__2__TER_ = {"clsid": "{AN-M57_TER_2_L}", "name": "AN-M57 *2 (TER)", "weight": 273.6} AN_M57__2__TER_ = {
AN_M57__2__TER__ = {"clsid": "{AN-M57_TER_2_R}", "name": "AN-M57 *2 (TER)", "weight": 273.6} "clsid": "{AN-M57_TER_2_L}",
AN_M57__3__TER_ = {"clsid": "{AN-M57_TER_3_C}", "name": "AN-M57 *3 (TER)", "weight": 386.6} "name": "AN-M57 *2 (TER)",
AN_M57__5__MER_ = {"clsid": "{AN-M57_MER_5_L}", "name": "AN-M57 *5 (MER)", "weight": 664.8} "weight": 273.6,
AN_M57__5__MER__ = {"clsid": "{AN-M57_MER_5_R}", "name": "AN-M57 *5 (MER)", "weight": 664.8} }
AN_M57__6__MER_ = {"clsid": "{AN-M57_MER_6_C}", "name": "AN-M57 *6 (MER)", "weight": 777.8} AN_M57__2__TER__ = {
"clsid": "{AN-M57_TER_2_R}",
"name": "AN-M57 *2 (TER)",
"weight": 273.6,
}
AN_M57__3__TER_ = {
"clsid": "{AN-M57_TER_3_C}",
"name": "AN-M57 *3 (TER)",
"weight": 386.6,
}
AN_M57__5__MER_ = {
"clsid": "{AN-M57_MER_5_L}",
"name": "AN-M57 *5 (MER)",
"weight": 664.8,
}
AN_M57__5__MER__ = {
"clsid": "{AN-M57_MER_5_R}",
"name": "AN-M57 *5 (MER)",
"weight": 664.8,
}
AN_M57__6__MER_ = {
"clsid": "{AN-M57_MER_6_C}",
"name": "AN-M57 *6 (MER)",
"weight": 777.8,
}
AN_M66A2 = {"clsid": "{AN-M66A2}", "name": "AN-M66A2", "weight": 970.68688} AN_M66A2 = {"clsid": "{AN-M66A2}", "name": "AN-M66A2", "weight": 970.68688}
AN_M81 = {"clsid": "{AN-M81}", "name": "AN-M81", "weight": 117.93392} AN_M81 = {"clsid": "{AN-M81}", "name": "AN-M81", "weight": 117.93392}
AN_M81__5__MER_ = {"clsid": "{AN-M81_MER_5_L}", "name": "AN-M81 *5 (MER)", "weight": 689.3} AN_M81__5__MER_ = {
AN_M81__5__MER__ = {"clsid": "{AN-M81_MER_5_R}", "name": "AN-M81 *5 (MER)", "weight": 689.3} "clsid": "{AN-M81_MER_5_L}",
AN_M81__6__MER_ = {"clsid": "{AN-M81_MER_6_C}", "name": "AN-M81 *6 (MER)", "weight": 807.2} "name": "AN-M81 *5 (MER)",
"weight": 689.3,
}
AN_M81__5__MER__ = {
"clsid": "{AN-M81_MER_5_R}",
"name": "AN-M81 *5 (MER)",
"weight": 689.3,
}
AN_M81__6__MER_ = {
"clsid": "{AN-M81_MER_6_C}",
"name": "AN-M81 *6 (MER)",
"weight": 807.2,
}
AN_M88 = {"clsid": "{AN-M88}", "name": "AN-M88", "weight": 98.0665904} AN_M88 = {"clsid": "{AN-M88}", "name": "AN-M88", "weight": 98.0665904}
AN_M88__5__MER_ = {"clsid": "{AN-M88_MER_5_L}", "name": "AN-M88 *5 (MER)", "weight": 589.8} AN_M88__5__MER_ = {
AN_M88__5__MER__ = {"clsid": "{AN-M88_MER_5_R}", "name": "AN-M88 *5 (MER)", "weight": 589.8} "clsid": "{AN-M88_MER_5_L}",
AN_M88__6__MER_ = {"clsid": "{AN-M88_MER_6_C}", "name": "AN-M88 *6 (MER)", "weight": 687.8} "name": "AN-M88 *5 (MER)",
"weight": 589.8,
}
AN_M88__5__MER__ = {
"clsid": "{AN-M88_MER_5_R}",
"name": "AN-M88 *5 (MER)",
"weight": 589.8,
}
AN_M88__6__MER_ = {
"clsid": "{AN-M88_MER_6_C}",
"name": "AN-M88 *6 (MER)",
"weight": 687.8,
}
CBU_1_A = {"clsid": "{CBU-1/A}", "name": "CBU-1/A", "weight": 458.921706} CBU_1_A = {"clsid": "{CBU-1/A}", "name": "CBU-1/A", "weight": 458.921706}
CBU_1_A__2 = {"clsid": "{CBU-1/A_TER_2_L}", "name": "CBU-1/A *2", "weight": 713.473056} CBU_1_A__2 = {
CBU_1_A__2_ = {"clsid": "{CBU-1/A_TER_2_R}", "name": "CBU-1/A *2", "weight": 713.473056} "clsid": "{CBU-1/A_TER_2_L}",
"name": "CBU-1/A *2",
"weight": 713.473056,
}
CBU_1_A__2_ = {
"clsid": "{CBU-1/A_TER_2_R}",
"name": "CBU-1/A *2",
"weight": 713.473056,
}
CBU_2B_A = {"clsid": "{CBU-2B/A}", "name": "CBU-2B/A", "weight": 379.543106} CBU_2B_A = {"clsid": "{CBU-2B/A}", "name": "CBU-2B/A", "weight": 379.543106}
CBU_2B_A__2 = {"clsid": "{CBU-2B/A_TER_2_L}", "name": "CBU-2B/A *2", "weight": 806.686212} CBU_2B_A__2 = {
CBU_2B_A__2_ = {"clsid": "{CBU-2B/A_TER_2_R}", "name": "CBU-2B/A *2", "weight": 806.686212} "clsid": "{CBU-2B/A_TER_2_L}",
"name": "CBU-2B/A *2",
"weight": 806.686212,
}
CBU_2B_A__2_ = {
"clsid": "{CBU-2B/A_TER_2_R}",
"name": "CBU-2B/A *2",
"weight": 806.686212,
}
CBU_2_A = {"clsid": "{CBU-2/A}", "name": "CBU-2/A", "weight": 343.822736} CBU_2_A = {"clsid": "{CBU-2/A}", "name": "CBU-2/A", "weight": 343.822736}
CBU_2_A__2 = {"clsid": "{CBU-2/A_TER_2_L}", "name": "CBU-2/A *2", "weight": 735.245472} CBU_2_A__2 = {
CBU_2_A__2_ = {"clsid": "{CBU-2/A_TER_2_R}", "name": "CBU-2/A *2", "weight": 735.245472} "clsid": "{CBU-2/A_TER_2_L}",
D_704_Refueling_Pod = {"clsid": "{D-704_BUDDY_POD}", "name": "D-704 Refueling Pod", "weight": 1234.532648} "name": "CBU-2/A *2",
Fuel_Tank_150_gallons = {"clsid": "{DFT-150gal}", "name": "Fuel Tank 150 gallons", "weight": 515.888512} "weight": 735.245472,
Fuel_Tank_300_gallons = {"clsid": "{DFT-300gal}", "name": "Fuel Tank 300 gallons", "weight": 991.407336} }
Fuel_Tank_300_gallons_ = {"clsid": "{DFT-300gal_LR}", "name": "Fuel Tank 300 gallons", "weight": 998.664808} CBU_2_A__2_ = {
Fuel_Tank_400_gallons = {"clsid": "{DFT-400gal}", "name": "Fuel Tank 400 gallons", "weight": 1320.06208} "clsid": "{CBU-2/A_TER_2_R}",
LAU_10_2___4_ZUNI_MK_71 = {"clsid": "{LAU-10 ZUNI_TER_2_C}", "name": "LAU-10*2 - 4 ZUNI MK 71", "weight": 927.6} "name": "CBU-2/A *2",
LAU_10_2___4_ZUNI_MK_71_ = {"clsid": "{LAU-10 ZUNI_TER_2_L}", "name": "LAU-10*2 - 4 ZUNI MK 71", "weight": 927.6} "weight": 735.245472,
LAU_10_2___4_ZUNI_MK_71__ = {"clsid": "{LAU-10 ZUNI_TER_2_R}", "name": "LAU-10*2 - 4 ZUNI MK 71", "weight": 927.6} }
LAU_10_3___4_ZUNI_MK_71 = {"clsid": "{LAU-10 ZUNI_TER_3_C}", "name": "LAU-10*3 - 4 ZUNI MK 71", "weight": 1367.6} D_704_Refueling_Pod = {
LAU_3_2___19_FFAR_M156_WP = {"clsid": "{LAU-3 FFAR WP156_TER_2_C}", "name": "LAU-3*2 - 19 FFAR M156 WP", "weight": 673.3414512} "clsid": "{D-704_BUDDY_POD}",
LAU_3_2___19_FFAR_M156_WP_ = {"clsid": "{LAU-3 FFAR WP156_TER_2_L}", "name": "LAU-3*2 - 19 FFAR M156 WP", "weight": 673.3414512} "name": "D-704 Refueling Pod",
LAU_3_2___19_FFAR_M156_WP__ = {"clsid": "{LAU-3 FFAR WP156_TER_2_R}", "name": "LAU-3*2 - 19 FFAR M156 WP", "weight": 673.3414512} "weight": 1234.532648,
LAU_3_2___19_FFAR_Mk1_HE = {"clsid": "{LAU-3 FFAR Mk1 HE_TER_2_C}", "name": "LAU-3*2 - 19 FFAR Mk1 HE", "weight": 618.184664} }
LAU_3_2___19_FFAR_Mk1_HE_ = {"clsid": "{LAU-3 FFAR Mk1 HE_TER_2_L}", "name": "LAU-3*2 - 19 FFAR Mk1 HE", "weight": 618.184664} Fuel_Tank_150_gallons = {
LAU_3_2___19_FFAR_Mk1_HE__ = {"clsid": "{LAU-3 FFAR Mk1 HE_TER_2_R}", "name": "LAU-3*2 - 19 FFAR Mk1 HE", "weight": 618.184664} "clsid": "{DFT-150gal}",
LAU_3_2___19_FFAR_Mk5_HEAT = {"clsid": "{LAU-3 FFAR Mk5 HEAT_TER_2_C}", "name": "LAU-3*2 - 19 FFAR Mk5 HEAT", "weight": 619.9083136} "name": "Fuel Tank 150 gallons",
LAU_3_2___19_FFAR_Mk5_HEAT_ = {"clsid": "{LAU-3 FFAR Mk5 HEAT_TER_2_L}", "name": "LAU-3*2 - 19 FFAR Mk5 HEAT", "weight": 619.9083136} "weight": 515.888512,
LAU_3_2___19_FFAR_Mk5_HEAT__ = {"clsid": "{LAU-3 FFAR Mk5 HEAT_TER_2_R}", "name": "LAU-3*2 - 19 FFAR Mk5 HEAT", "weight": 619.9083136} }
LAU_3_3___19_FFAR_M156_WP = {"clsid": "{LAU-3 FFAR WP156_TER_3_C}", "name": "LAU-3*3 - 19 FFAR M156 WP", "weight": 986.2121768} Fuel_Tank_300_gallons = {
LAU_3_3___19_FFAR_Mk1_HE = {"clsid": "{LAU-3 FFAR Mk1 HE_TER_3_C}", "name": "LAU-3*3 - 19 FFAR Mk1 HE", "weight": 903.476996} "clsid": "{DFT-300gal}",
LAU_3_3___19_FFAR_Mk5_HEAT = {"clsid": "{LAU-3 FFAR Mk5 HEAT_TER_3_C}", "name": "LAU-3*3 - 19 FFAR Mk5 HEAT", "weight": 906.0624704} "name": "Fuel Tank 300 gallons",
LAU_68_2___7_FFAR_M156_WP = {"clsid": "{LAU-68 FFAR WP156_TER_2_C}", "name": "LAU-68*2 - 7 FFAR M156 WP", "weight": 287.9121136} "weight": 991.407336,
LAU_68_2___7_FFAR_M156_WP_ = {"clsid": "{LAU-68 FFAR WP156_TER_2_L}", "name": "LAU-68*2 - 7 FFAR M156 WP", "weight": 287.9121136} }
LAU_68_2___7_FFAR_M156_WP__ = {"clsid": "{LAU-68 FFAR WP156_TER_2_R}", "name": "LAU-68*2 - 7 FFAR M156 WP", "weight": 287.9121136} Fuel_Tank_300_gallons_ = {
LAU_68_2___7_FFAR_Mk1_HE = {"clsid": "{LAU-68 FFAR Mk1 HE_TER_2_C}", "name": "LAU-68*2 - 7 FFAR Mk1 HE", "weight": 267.591192} "clsid": "{DFT-300gal_LR}",
LAU_68_2___7_FFAR_Mk1_HE_ = {"clsid": "{LAU-68 FFAR Mk1 HE_TER_2_L}", "name": "LAU-68*2 - 7 FFAR Mk1 HE", "weight": 267.591192} "name": "Fuel Tank 300 gallons",
LAU_68_2___7_FFAR_Mk1_HE__ = {"clsid": "{LAU-68 FFAR Mk1 HE_TER_2_R}", "name": "LAU-68*2 - 7 FFAR Mk1 HE", "weight": 267.591192} "weight": 998.664808,
LAU_68_2___7_FFAR_Mk5_HEAT = {"clsid": "{LAU-68 FFAR Mk5 HEAT_TER_2_C}", "name": "LAU-68*2 - 7 FFAR Mk5 HEAT", "weight": 268.2262208} }
LAU_68_2___7_FFAR_Mk5_HEAT_ = {"clsid": "{LAU-68 FFAR Mk5 HEAT_TER_2_L}", "name": "LAU-68*2 - 7 FFAR Mk5 HEAT", "weight": 268.2262208} Fuel_Tank_400_gallons = {
LAU_68_2___7_FFAR_Mk5_HEAT__ = {"clsid": "{LAU-68 FFAR Mk5 HEAT_TER_2_R}", "name": "LAU-68*2 - 7 FFAR Mk5 HEAT", "weight": 268.2262208} "clsid": "{DFT-400gal}",
LAU_68_3___7_FFAR_M156_WP = {"clsid": "{LAU-68 FFAR WP156_TER_3_C}", "name": "LAU-68*3 - 7 FFAR M156 WP", "weight": 408.0681704} "name": "Fuel Tank 400 gallons",
LAU_68_3___7_FFAR_Mk1_HE = {"clsid": "{LAU-68 FFAR Mk1 HE_TER_3_C}", "name": "LAU-68*3 - 7 FFAR Mk1 HE", "weight": 377.586788} "weight": 1320.06208,
LAU_68_3___7_FFAR_Mk5_HEAT = {"clsid": "{LAU-68 FFAR Mk5 HEAT_TER_3_C}", "name": "LAU-68*3 - 7 FFAR Mk5 HEAT", "weight": 378.5393312} }
LAU_10_2___4_ZUNI_MK_71 = {
"clsid": "{LAU-10 ZUNI_TER_2_C}",
"name": "LAU-10*2 - 4 ZUNI MK 71",
"weight": 927.6,
}
LAU_10_2___4_ZUNI_MK_71_ = {
"clsid": "{LAU-10 ZUNI_TER_2_L}",
"name": "LAU-10*2 - 4 ZUNI MK 71",
"weight": 927.6,
}
LAU_10_2___4_ZUNI_MK_71__ = {
"clsid": "{LAU-10 ZUNI_TER_2_R}",
"name": "LAU-10*2 - 4 ZUNI MK 71",
"weight": 927.6,
}
LAU_10_3___4_ZUNI_MK_71 = {
"clsid": "{LAU-10 ZUNI_TER_3_C}",
"name": "LAU-10*3 - 4 ZUNI MK 71",
"weight": 1367.6,
}
LAU_3_2___19_FFAR_M156_WP = {
"clsid": "{LAU-3 FFAR WP156_TER_2_C}",
"name": "LAU-3*2 - 19 FFAR M156 WP",
"weight": 673.3414512,
}
LAU_3_2___19_FFAR_M156_WP_ = {
"clsid": "{LAU-3 FFAR WP156_TER_2_L}",
"name": "LAU-3*2 - 19 FFAR M156 WP",
"weight": 673.3414512,
}
LAU_3_2___19_FFAR_M156_WP__ = {
"clsid": "{LAU-3 FFAR WP156_TER_2_R}",
"name": "LAU-3*2 - 19 FFAR M156 WP",
"weight": 673.3414512,
}
LAU_3_2___19_FFAR_Mk1_HE = {
"clsid": "{LAU-3 FFAR Mk1 HE_TER_2_C}",
"name": "LAU-3*2 - 19 FFAR Mk1 HE",
"weight": 618.184664,
}
LAU_3_2___19_FFAR_Mk1_HE_ = {
"clsid": "{LAU-3 FFAR Mk1 HE_TER_2_L}",
"name": "LAU-3*2 - 19 FFAR Mk1 HE",
"weight": 618.184664,
}
LAU_3_2___19_FFAR_Mk1_HE__ = {
"clsid": "{LAU-3 FFAR Mk1 HE_TER_2_R}",
"name": "LAU-3*2 - 19 FFAR Mk1 HE",
"weight": 618.184664,
}
LAU_3_2___19_FFAR_Mk5_HEAT = {
"clsid": "{LAU-3 FFAR Mk5 HEAT_TER_2_C}",
"name": "LAU-3*2 - 19 FFAR Mk5 HEAT",
"weight": 619.9083136,
}
LAU_3_2___19_FFAR_Mk5_HEAT_ = {
"clsid": "{LAU-3 FFAR Mk5 HEAT_TER_2_L}",
"name": "LAU-3*2 - 19 FFAR Mk5 HEAT",
"weight": 619.9083136,
}
LAU_3_2___19_FFAR_Mk5_HEAT__ = {
"clsid": "{LAU-3 FFAR Mk5 HEAT_TER_2_R}",
"name": "LAU-3*2 - 19 FFAR Mk5 HEAT",
"weight": 619.9083136,
}
LAU_3_3___19_FFAR_M156_WP = {
"clsid": "{LAU-3 FFAR WP156_TER_3_C}",
"name": "LAU-3*3 - 19 FFAR M156 WP",
"weight": 986.2121768,
}
LAU_3_3___19_FFAR_Mk1_HE = {
"clsid": "{LAU-3 FFAR Mk1 HE_TER_3_C}",
"name": "LAU-3*3 - 19 FFAR Mk1 HE",
"weight": 903.476996,
}
LAU_3_3___19_FFAR_Mk5_HEAT = {
"clsid": "{LAU-3 FFAR Mk5 HEAT_TER_3_C}",
"name": "LAU-3*3 - 19 FFAR Mk5 HEAT",
"weight": 906.0624704,
}
LAU_68_2___7_FFAR_M156_WP = {
"clsid": "{LAU-68 FFAR WP156_TER_2_C}",
"name": "LAU-68*2 - 7 FFAR M156 WP",
"weight": 287.9121136,
}
LAU_68_2___7_FFAR_M156_WP_ = {
"clsid": "{LAU-68 FFAR WP156_TER_2_L}",
"name": "LAU-68*2 - 7 FFAR M156 WP",
"weight": 287.9121136,
}
LAU_68_2___7_FFAR_M156_WP__ = {
"clsid": "{LAU-68 FFAR WP156_TER_2_R}",
"name": "LAU-68*2 - 7 FFAR M156 WP",
"weight": 287.9121136,
}
LAU_68_2___7_FFAR_Mk1_HE = {
"clsid": "{LAU-68 FFAR Mk1 HE_TER_2_C}",
"name": "LAU-68*2 - 7 FFAR Mk1 HE",
"weight": 267.591192,
}
LAU_68_2___7_FFAR_Mk1_HE_ = {
"clsid": "{LAU-68 FFAR Mk1 HE_TER_2_L}",
"name": "LAU-68*2 - 7 FFAR Mk1 HE",
"weight": 267.591192,
}
LAU_68_2___7_FFAR_Mk1_HE__ = {
"clsid": "{LAU-68 FFAR Mk1 HE_TER_2_R}",
"name": "LAU-68*2 - 7 FFAR Mk1 HE",
"weight": 267.591192,
}
LAU_68_2___7_FFAR_Mk5_HEAT = {
"clsid": "{LAU-68 FFAR Mk5 HEAT_TER_2_C}",
"name": "LAU-68*2 - 7 FFAR Mk5 HEAT",
"weight": 268.2262208,
}
LAU_68_2___7_FFAR_Mk5_HEAT_ = {
"clsid": "{LAU-68 FFAR Mk5 HEAT_TER_2_L}",
"name": "LAU-68*2 - 7 FFAR Mk5 HEAT",
"weight": 268.2262208,
}
LAU_68_2___7_FFAR_Mk5_HEAT__ = {
"clsid": "{LAU-68 FFAR Mk5 HEAT_TER_2_R}",
"name": "LAU-68*2 - 7 FFAR Mk5 HEAT",
"weight": 268.2262208,
}
LAU_68_3___7_FFAR_M156_WP = {
"clsid": "{LAU-68 FFAR WP156_TER_3_C}",
"name": "LAU-68*3 - 7 FFAR M156 WP",
"weight": 408.0681704,
}
LAU_68_3___7_FFAR_Mk1_HE = {
"clsid": "{LAU-68 FFAR Mk1 HE_TER_3_C}",
"name": "LAU-68*3 - 7 FFAR Mk1 HE",
"weight": 377.586788,
}
LAU_68_3___7_FFAR_Mk5_HEAT = {
"clsid": "{LAU-68 FFAR Mk5 HEAT_TER_3_C}",
"name": "LAU-68*3 - 7 FFAR Mk5 HEAT",
"weight": 378.5393312,
}
MAK79_2_MK_20 = {"clsid": "{MAK79_MK20 2L}", "name": "MAK79 2 MK-20", "weight": 464} MAK79_2_MK_20 = {"clsid": "{MAK79_MK20 2L}", "name": "MAK79 2 MK-20", "weight": 464}
MAK79_2_MK_20_ = {"clsid": "{MAK79_MK20 2R}", "name": "MAK79 2 MK-20", "weight": 464} MAK79_2_MK_20_ = {
"clsid": "{MAK79_MK20 2R}",
"name": "MAK79 2 MK-20",
"weight": 464,
}
MAK79_MK_20 = {"clsid": "{MAK79_MK20 1R}", "name": "MAK79 MK-20", "weight": 232} MAK79_MK_20 = {"clsid": "{MAK79_MK20 1R}", "name": "MAK79 MK-20", "weight": 232}
MAK79_MK_20_ = {"clsid": "{MAK79_MK20 1L}", "name": "MAK79 MK-20", "weight": 232} MAK79_MK_20_ = {"clsid": "{MAK79_MK20 1L}", "name": "MAK79 MK-20", "weight": 232}
Mk4_HIPEG = {"clsid": "{Mk4 HIPEG}", "name": "Mk4 HIPEG", "weight": 612.35} Mk4_HIPEG = {"clsid": "{Mk4 HIPEG}", "name": "Mk4 HIPEG", "weight": 612.35}
Mk_20__2__TER_ = {"clsid": "{Mk-20_TER_2_L}", "name": "Mk-20 *2 (TER)", "weight": 491.6} Mk_20__2__TER_ = {
Mk_20__2__TER__ = {"clsid": "{Mk-20_TER_2_R}", "name": "Mk-20 *2 (TER)", "weight": 491.6} "clsid": "{Mk-20_TER_2_L}",
Mk_20__2__TER___ = {"clsid": "{Mk-20_TER_2_C}", "name": "Mk-20 *2 (TER)", "weight": 491.6} "name": "Mk-20 *2 (TER)",
Mk_20__3__TER_ = {"clsid": "{Mk-20_TER_3_C}", "name": "Mk-20 *3 (TER)", "weight": 713.6} "weight": 491.6,
}
Mk_20__2__TER__ = {
"clsid": "{Mk-20_TER_2_R}",
"name": "Mk-20 *2 (TER)",
"weight": 491.6,
}
Mk_20__2__TER___ = {
"clsid": "{Mk-20_TER_2_C}",
"name": "Mk-20 *2 (TER)",
"weight": 491.6,
}
Mk_20__3__TER_ = {
"clsid": "{Mk-20_TER_3_C}",
"name": "Mk-20 *3 (TER)",
"weight": 713.6,
}
Mk_77_mod_0 = {"clsid": "{mk77mod0}", "name": "Mk-77 mod 0", "weight": 340} Mk_77_mod_0 = {"clsid": "{mk77mod0}", "name": "Mk-77 mod 0", "weight": 340}
Mk_77_mod_1 = {"clsid": "{mk77mod1}", "name": "Mk-77 mod 1", "weight": 230} Mk_77_mod_1 = {"clsid": "{mk77mod1}", "name": "Mk-77 mod 1", "weight": 230}
Mk_77_mod_1__2__TER_ = {"clsid": "{Mk-77 mod 1_TER_2_L}", "name": "Mk-77 mod 1 *2 (TER)", "weight": 507.6} Mk_77_mod_1__2__TER_ = {
Mk_77_mod_1__2__TER__ = {"clsid": "{Mk-77 mod 1_TER_2_R}", "name": "Mk-77 mod 1 *2 (TER)", "weight": 507.6} "clsid": "{Mk-77 mod 1_TER_2_L}",
Mk_77_mod_1__2__TER___ = {"clsid": "{Mk-77 mod 1_TER_2_C}", "name": "Mk-77 mod 1 *2 (TER)", "weight": 507.6} "name": "Mk-77 mod 1 *2 (TER)",
Mk_77_mod_1__4__MER_ = {"clsid": "{Mk-77 mod 1_MER_4_C}", "name": "Mk-77 mod 1 *4 (MER)", "weight": 1019.8} "weight": 507.6,
}
Mk_77_mod_1__2__TER__ = {
"clsid": "{Mk-77 mod 1_TER_2_R}",
"name": "Mk-77 mod 1 *2 (TER)",
"weight": 507.6,
}
Mk_77_mod_1__2__TER___ = {
"clsid": "{Mk-77 mod 1_TER_2_C}",
"name": "Mk-77 mod 1 *2 (TER)",
"weight": 507.6,
}
Mk_77_mod_1__4__MER_ = {
"clsid": "{Mk-77 mod 1_MER_4_C}",
"name": "Mk-77 mod 1 *4 (MER)",
"weight": 1019.8,
}
Mk_81SE = {"clsid": "{MK-81SE}", "name": "Mk-81SE", "weight": 113.398} Mk_81SE = {"clsid": "{MK-81SE}", "name": "Mk-81SE", "weight": 113.398}
Mk_81SE__5__MER_ = {"clsid": "{Mk-81SE_MER_5_L}", "name": "Mk-81SE *5 (MER)", "weight": 689.8} Mk_81SE__5__MER_ = {
Mk_81SE__5__MER__ = {"clsid": "{Mk-81SE_MER_5_R}", "name": "Mk-81SE *5 (MER)", "weight": 689.8} "clsid": "{Mk-81SE_MER_5_L}",
Mk_81SE__6__MER_ = {"clsid": "{Mk-81SE_MER_6_C}", "name": "Mk-81SE *6 (MER)", "weight": 807.8} "name": "Mk-81SE *5 (MER)",
Mk_81__5__MER_ = {"clsid": "{Mk-81_MER_5_L}", "name": "Mk-81 *5 (MER)", "weight": 689.8} "weight": 689.8,
Mk_81__5__MER__ = {"clsid": "{Mk-81_MER_5_R}", "name": "Mk-81 *5 (MER)", "weight": 689.8} }
Mk_81__6__MER_ = {"clsid": "{Mk-81_MER_6_C}", "name": "Mk-81 *6 (MER)", "weight": 807.8} Mk_81SE__5__MER__ = {
Mk_82_Snakeye__2__TER_ = {"clsid": "{Mk-82 Snakeye_TER_2_L}", "name": "Mk-82 Snakeye *2 (TER)", "weight": 529.6} "clsid": "{Mk-81SE_MER_5_R}",
Mk_82_Snakeye__2__TER__ = {"clsid": "{Mk-82 Snakeye_TER_2_R}", "name": "Mk-82 Snakeye *2 (TER)", "weight": 529.6} "name": "Mk-81SE *5 (MER)",
Mk_82_Snakeye__3__TER_ = {"clsid": "{Mk-82 Snakeye_TER_3_C}", "name": "Mk-82 Snakeye *3 (TER)", "weight": 770.6} "weight": 689.8,
Mk_82_Snakeye__4__MER_ = {"clsid": "{Mk-82 Snakeye_MER_4_C}", "name": "Mk-82 Snakeye *4 (MER)", "weight": 1063.8} }
Mk_82_Snakeye__6__MER_ = {"clsid": "{Mk-82 Snakeye_MER_6_C}", "name": "Mk-82 Snakeye *6 (MER)", "weight": 1545.8} Mk_81SE__6__MER_ = {
Mk_82__2__TER_ = {"clsid": "{Mk-82_TER_2_L}", "name": "Mk-82 *2 (TER)", "weight": 529.6} "clsid": "{Mk-81SE_MER_6_C}",
Mk_82__2__TER__ = {"clsid": "{Mk-82_TER_2_R}", "name": "Mk-82 *2 (TER)", "weight": 529.6} "name": "Mk-81SE *6 (MER)",
Mk_82__3__TER_ = {"clsid": "{Mk-82_TER_3_C}", "name": "Mk-82 *3 (TER)", "weight": 770.6} "weight": 807.8,
Mk_82__4__MER_ = {"clsid": "{Mk-82_MER_4_C}", "name": "Mk-82 *4 (MER)", "weight": 1063.8} }
Mk_82__6__MER_ = {"clsid": "{Mk-82_MER_6_C}", "name": "Mk-82 *6 (MER)", "weight": 1545.8} Mk_81__5__MER_ = {
Mk_83__2__TER_ = {"clsid": "{Mk-83_TER_2_C}", "name": "Mk-83 *2 (TER)", "weight": 941.6} "clsid": "{Mk-81_MER_5_L}",
Mk_83__3__TER_ = {"clsid": "{Mk-83_TER_3_C}", "name": "Mk-83 *3 (TER)", "weight": 1388.6} "name": "Mk-81 *5 (MER)",
"weight": 689.8,
}
Mk_81__5__MER__ = {
"clsid": "{Mk-81_MER_5_R}",
"name": "Mk-81 *5 (MER)",
"weight": 689.8,
}
Mk_81__6__MER_ = {
"clsid": "{Mk-81_MER_6_C}",
"name": "Mk-81 *6 (MER)",
"weight": 807.8,
}
Mk_82_Snakeye__2__TER_ = {
"clsid": "{Mk-82 Snakeye_TER_2_L}",
"name": "Mk-82 Snakeye *2 (TER)",
"weight": 529.6,
}
Mk_82_Snakeye__2__TER__ = {
"clsid": "{Mk-82 Snakeye_TER_2_R}",
"name": "Mk-82 Snakeye *2 (TER)",
"weight": 529.6,
}
Mk_82_Snakeye__3__TER_ = {
"clsid": "{Mk-82 Snakeye_TER_3_C}",
"name": "Mk-82 Snakeye *3 (TER)",
"weight": 770.6,
}
Mk_82_Snakeye__4__MER_ = {
"clsid": "{Mk-82 Snakeye_MER_4_C}",
"name": "Mk-82 Snakeye *4 (MER)",
"weight": 1063.8,
}
Mk_82_Snakeye__6__MER_ = {
"clsid": "{Mk-82 Snakeye_MER_6_C}",
"name": "Mk-82 Snakeye *6 (MER)",
"weight": 1545.8,
}
Mk_82__2__TER_ = {
"clsid": "{Mk-82_TER_2_L}",
"name": "Mk-82 *2 (TER)",
"weight": 529.6,
}
Mk_82__2__TER__ = {
"clsid": "{Mk-82_TER_2_R}",
"name": "Mk-82 *2 (TER)",
"weight": 529.6,
}
Mk_82__3__TER_ = {
"clsid": "{Mk-82_TER_3_C}",
"name": "Mk-82 *3 (TER)",
"weight": 770.6,
}
Mk_82__4__MER_ = {
"clsid": "{Mk-82_MER_4_C}",
"name": "Mk-82 *4 (MER)",
"weight": 1063.8,
}
Mk_82__6__MER_ = {
"clsid": "{Mk-82_MER_6_C}",
"name": "Mk-82 *6 (MER)",
"weight": 1545.8,
}
Mk_83__2__TER_ = {
"clsid": "{Mk-83_TER_2_C}",
"name": "Mk-83 *2 (TER)",
"weight": 941.6,
}
Mk_83__3__TER_ = {
"clsid": "{Mk-83_TER_3_C}",
"name": "Mk-83 *3 (TER)",
"weight": 1388.6,
}
_3_LAU_61 = {"clsid": "{TER,LAU-61*3}", "name": "3*LAU-61", "weight": 98} _3_LAU_61 = {"clsid": "{TER,LAU-61*3}", "name": "3*LAU-61", "weight": 98}
class A_4E_C(PlaneType): class A_4E_C(PlaneType):
id = "A-4E-C" id = "A-4E-C"
flyable = True flyable = True
@@ -112,7 +425,7 @@ class A_4E_C(PlaneType):
charge_total = 60 charge_total = 60
chaff_charge_size = 1 chaff_charge_size = 1
flare_charge_size = 1 flare_charge_size = 1
category = "Interceptor" #{78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F}
radio_frequency = 254 radio_frequency = 254
panel_radio = { panel_radio = {
@@ -137,7 +450,7 @@ class A_4E_C(PlaneType):
7: 257, 7: 257,
14: 263, 14: 263,
19: 266, 19: 266,
15: 261 15: 261,
}, },
}, },
} }
@@ -153,7 +466,6 @@ class A_4E_C(PlaneType):
} }
class Properties: class Properties:
class HideECMPanel: class HideECMPanel:
id = "HideECMPanel" id = "HideECMPanel"
@@ -219,7 +531,6 @@ class A_4E_C(PlaneType):
_14_seconds = 7 _14_seconds = 7
class Liveries: class Liveries:
class Georgia(Enum): class Georgia(Enum):
Unmarked = "Unmarked" Unmarked = "Unmarked"
Community_A_4E = "Community A-4E" Community_A_4E = "Community A-4E"
@@ -425,7 +736,9 @@ class A_4E_C(PlaneType):
Aggressor_USN_TopGun = "Aggressor USN TopGun" Aggressor_USN_TopGun = "Aggressor USN TopGun"
Aggressor_USN_VF_126_Bandits = "Aggressor USN VF-126 Bandits" Aggressor_USN_VF_126_Bandits = "Aggressor USN VF-126 Bandits"
Aggressor_USN_VF_127_Royal_Blues = "Aggressor USN VF-127 Royal Blues" Aggressor_USN_VF_127_Royal_Blues = "Aggressor USN VF-127 Royal Blues"
Aggressor_USN_VFA_127_Cyclons__Forest = "Aggressor USN VFA-127 Cyclons (Forest)" Aggressor_USN_VFA_127_Cyclons__Forest = (
"Aggressor USN VFA-127 Cyclons (Forest)"
)
Aggressor_USN_VFA_127_Cyclons__Sea = "Aggressor USN VFA-127 Cyclons (Sea)" Aggressor_USN_VFA_127_Cyclons__Sea = "Aggressor USN VFA-127 Cyclons (Sea)"
class USA(Enum): class USA(Enum):
@@ -476,7 +789,9 @@ class A_4E_C(PlaneType):
Trainer_USN_VC_8_Redtails = "Trainer USN VC-8 Redtails" Trainer_USN_VC_8_Redtails = "Trainer USN VC-8 Redtails"
Aggressor_USN_VF_126_Bandits = "Aggressor USN VF-126 Bandits" Aggressor_USN_VF_126_Bandits = "Aggressor USN VF-126 Bandits"
Aggressor_USN_VF_127_Royal_Blues = "Aggressor USN VF-127 Royal Blues" Aggressor_USN_VF_127_Royal_Blues = "Aggressor USN VF-127 Royal Blues"
Aggressor_USN_VFA_127_Cyclons__Forest = "Aggressor USN VFA-127 Cyclons (Forest)" Aggressor_USN_VFA_127_Cyclons__Forest = (
"Aggressor USN VFA-127 Cyclons (Forest)"
)
Aggressor_USN_VFA_127_Cyclons__Sea = "Aggressor USN VFA-127 Cyclons (Sea)" Aggressor_USN_VFA_127_Cyclons__Sea = "Aggressor USN VFA-127 Cyclons (Sea)"
Trainer_USN_VT_7_Eagles = "Trainer USN VT-7 Eagles" Trainer_USN_VT_7_Eagles = "Trainer USN VT-7 Eagles"
@@ -524,7 +839,7 @@ class A_4E_C(PlaneType):
LAU_68___7_FFAR_Mk1_HE = (1, Weapons.LAU_68___7_FFAR_Mk1_HE) LAU_68___7_FFAR_Mk1_HE = (1, Weapons.LAU_68___7_FFAR_Mk1_HE)
LAU_68___7_FFAR_Mk5_HEAT = (1, Weapons.LAU_68___7_FFAR_Mk5_HEAT) LAU_68___7_FFAR_Mk5_HEAT = (1, Weapons.LAU_68___7_FFAR_Mk5_HEAT)
AGM_45A = (1, Weapons.AGM_45A) AGM_45A = (1, Weapons.AGM_45A)
#ERRR {AGM12_B} # ERRR {AGM12_B}
Mk_20 = (1, Weapons.Mk_20) Mk_20 = (1, Weapons.Mk_20)
Mk_81 = (1, Weapons.Mk_81) Mk_81 = (1, Weapons.Mk_81)
Mk_81SE = (1, WeaponsA4EC.Mk_81SE) Mk_81SE = (1, WeaponsA4EC.Mk_81SE)
@@ -536,14 +851,18 @@ class A_4E_C(PlaneType):
AN_M64 = (1, Weapons.AN_M64) AN_M64 = (1, Weapons.AN_M64)
AN_M81 = (1, WeaponsA4EC.AN_M81) AN_M81 = (1, WeaponsA4EC.AN_M81)
AN_M88 = (1, WeaponsA4EC.AN_M88) AN_M88 = (1, WeaponsA4EC.AN_M88)
LAU_68___7_2_75__rockets_M257__Parachute_illumination_ = (1, Weapons.LAU_68___7_2_75__rockets_M257__Parachute_illumination_) LAU_68___7_2_75__rockets_M257__Parachute_illumination_ = (
1,
Weapons.LAU_68___7_2_75__rockets_M257__Parachute_illumination_,
)
Smokewinder___red = (1, Weapons.Smokewinder___red) Smokewinder___red = (1, Weapons.Smokewinder___red)
Smokewinder___green = (1, Weapons.Smokewinder___green) Smokewinder___green = (1, Weapons.Smokewinder___green)
Smokewinder___blue = (1, Weapons.Smokewinder___blue) Smokewinder___blue = (1, Weapons.Smokewinder___blue)
Smokewinder___white = (1, Weapons.Smokewinder___white) Smokewinder___white = (1, Weapons.Smokewinder___white)
Smokewinder___yellow = (1, Weapons.Smokewinder___yellow) Smokewinder___yellow = (1, Weapons.Smokewinder___yellow)
Smokewinder___orange = (1, Weapons.Smokewinder___orange) Smokewinder___orange = (1, Weapons.Smokewinder___orange)
#ERRR <CLEAN>
# ERRR <CLEAN>
class Pylon2: class Pylon2:
Fuel_Tank_300_gallons_ = (2, WeaponsA4EC.Fuel_Tank_300_gallons_) Fuel_Tank_300_gallons_ = (2, WeaponsA4EC.Fuel_Tank_300_gallons_)
@@ -566,8 +885,8 @@ class A_4E_C(PlaneType):
LAU_68_2___7_FFAR_Mk1_HE_ = (2, WeaponsA4EC.LAU_68_2___7_FFAR_Mk1_HE_) LAU_68_2___7_FFAR_Mk1_HE_ = (2, WeaponsA4EC.LAU_68_2___7_FFAR_Mk1_HE_)
LAU_68_2___7_FFAR_Mk5_HEAT_ = (2, WeaponsA4EC.LAU_68_2___7_FFAR_Mk5_HEAT_) LAU_68_2___7_FFAR_Mk5_HEAT_ = (2, WeaponsA4EC.LAU_68_2___7_FFAR_Mk5_HEAT_)
AGM_45A = (2, Weapons.AGM_45A) AGM_45A = (2, Weapons.AGM_45A)
#ERRR {AGM12_C} # ERRR {AGM12_C}
#ERRR {AGM12_B} # ERRR {AGM12_B}
AGM_62 = (2, Weapons.AGM_62) AGM_62 = (2, Weapons.AGM_62)
Mk_20 = (2, Weapons.Mk_20) Mk_20 = (2, Weapons.Mk_20)
Mk_81 = (2, Weapons.Mk_81) Mk_81 = (2, Weapons.Mk_81)
@@ -607,15 +926,19 @@ class A_4E_C(PlaneType):
Smokewinder___white = (2, Weapons.Smokewinder___white) Smokewinder___white = (2, Weapons.Smokewinder___white)
Smokewinder___yellow = (2, Weapons.Smokewinder___yellow) Smokewinder___yellow = (2, Weapons.Smokewinder___yellow)
Smokewinder___orange = (2, Weapons.Smokewinder___orange) Smokewinder___orange = (2, Weapons.Smokewinder___orange)
#ERRR <CLEAN>
# ERRR <CLEAN>
class Pylon3: class Pylon3:
Fuel_Tank_400_gallons = (3, WeaponsA4EC.Fuel_Tank_400_gallons) Fuel_Tank_400_gallons = (3, WeaponsA4EC.Fuel_Tank_400_gallons)
Fuel_Tank_300_gallons = (3, WeaponsA4EC.Fuel_Tank_300_gallons) Fuel_Tank_300_gallons = (3, WeaponsA4EC.Fuel_Tank_300_gallons)
Fuel_Tank_150_gallons = (3, WeaponsA4EC.Fuel_Tank_150_gallons) Fuel_Tank_150_gallons = (3, WeaponsA4EC.Fuel_Tank_150_gallons)
D_704_Refueling_Pod = (3, WeaponsA4EC.D_704_Refueling_Pod) D_704_Refueling_Pod = (3, WeaponsA4EC.D_704_Refueling_Pod)
#ERRR {3*LAU-61} # ERRR {3*LAU-61}
LAU_68_3___7_2_75__rockets_MK5__HE_ = (3, Weapons.LAU_68_3___7_2_75__rockets_MK5__HE_) LAU_68_3___7_2_75__rockets_MK5__HE_ = (
3,
Weapons.LAU_68_3___7_2_75__rockets_MK5__HE_,
)
LAU_10___4_ZUNI_MK_71 = (3, Weapons.LAU_10___4_ZUNI_MK_71) LAU_10___4_ZUNI_MK_71 = (3, Weapons.LAU_10___4_ZUNI_MK_71)
LAU_10_2___4_ZUNI_MK_71 = (3, WeaponsA4EC.LAU_10_2___4_ZUNI_MK_71) LAU_10_2___4_ZUNI_MK_71 = (3, WeaponsA4EC.LAU_10_2___4_ZUNI_MK_71)
LAU_10_3___4_ZUNI_MK_71 = (3, WeaponsA4EC.LAU_10_3___4_ZUNI_MK_71) LAU_10_3___4_ZUNI_MK_71 = (3, WeaponsA4EC.LAU_10_3___4_ZUNI_MK_71)
@@ -637,7 +960,7 @@ class A_4E_C(PlaneType):
LAU_68_3___7_FFAR_M156_WP = (3, WeaponsA4EC.LAU_68_3___7_FFAR_M156_WP) LAU_68_3___7_FFAR_M156_WP = (3, WeaponsA4EC.LAU_68_3___7_FFAR_M156_WP)
LAU_68_3___7_FFAR_Mk1_HE = (3, WeaponsA4EC.LAU_68_3___7_FFAR_Mk1_HE) LAU_68_3___7_FFAR_Mk1_HE = (3, WeaponsA4EC.LAU_68_3___7_FFAR_Mk1_HE)
LAU_68_3___7_FFAR_Mk5_HEAT = (3, WeaponsA4EC.LAU_68_3___7_FFAR_Mk5_HEAT) LAU_68_3___7_FFAR_Mk5_HEAT = (3, WeaponsA4EC.LAU_68_3___7_FFAR_Mk5_HEAT)
#ERRR {AGM12_B} # ERRR {AGM12_B}
AGM_62 = (3, Weapons.AGM_62) AGM_62 = (3, Weapons.AGM_62)
Mk_20 = (3, Weapons.Mk_20) Mk_20 = (3, Weapons.Mk_20)
Mk_81 = (3, Weapons.Mk_81) Mk_81 = (3, Weapons.Mk_81)
@@ -680,7 +1003,8 @@ class A_4E_C(PlaneType):
Smokewinder___white = (3, Weapons.Smokewinder___white) Smokewinder___white = (3, Weapons.Smokewinder___white)
Smokewinder___yellow = (3, Weapons.Smokewinder___yellow) Smokewinder___yellow = (3, Weapons.Smokewinder___yellow)
Smokewinder___orange = (3, Weapons.Smokewinder___orange) Smokewinder___orange = (3, Weapons.Smokewinder___orange)
#ERRR <CLEAN>
# ERRR <CLEAN>
class Pylon4: class Pylon4:
Fuel_Tank_300_gallons_ = (4, WeaponsA4EC.Fuel_Tank_300_gallons_) Fuel_Tank_300_gallons_ = (4, WeaponsA4EC.Fuel_Tank_300_gallons_)
@@ -703,8 +1027,8 @@ class A_4E_C(PlaneType):
LAU_68_2___7_FFAR_Mk1_HE__ = (4, WeaponsA4EC.LAU_68_2___7_FFAR_Mk1_HE__) LAU_68_2___7_FFAR_Mk1_HE__ = (4, WeaponsA4EC.LAU_68_2___7_FFAR_Mk1_HE__)
LAU_68_2___7_FFAR_Mk5_HEAT__ = (4, WeaponsA4EC.LAU_68_2___7_FFAR_Mk5_HEAT__) LAU_68_2___7_FFAR_Mk5_HEAT__ = (4, WeaponsA4EC.LAU_68_2___7_FFAR_Mk5_HEAT__)
AGM_45A = (4, Weapons.AGM_45A) AGM_45A = (4, Weapons.AGM_45A)
#ERRR {AGM12_C} # ERRR {AGM12_C}
#ERRR {AGM12_B} # ERRR {AGM12_B}
AGM_62 = (4, Weapons.AGM_62) AGM_62 = (4, Weapons.AGM_62)
Mk_20 = (4, Weapons.Mk_20) Mk_20 = (4, Weapons.Mk_20)
Mk_81 = (4, Weapons.Mk_81) Mk_81 = (4, Weapons.Mk_81)
@@ -744,7 +1068,8 @@ class A_4E_C(PlaneType):
Smokewinder___white = (4, Weapons.Smokewinder___white) Smokewinder___white = (4, Weapons.Smokewinder___white)
Smokewinder___yellow = (4, Weapons.Smokewinder___yellow) Smokewinder___yellow = (4, Weapons.Smokewinder___yellow)
Smokewinder___orange = (4, Weapons.Smokewinder___orange) Smokewinder___orange = (4, Weapons.Smokewinder___orange)
#ERRR <CLEAN>
# ERRR <CLEAN>
class Pylon5: class Pylon5:
LAU_10___4_ZUNI_MK_71 = (5, Weapons.LAU_10___4_ZUNI_MK_71) LAU_10___4_ZUNI_MK_71 = (5, Weapons.LAU_10___4_ZUNI_MK_71)
@@ -755,7 +1080,7 @@ class A_4E_C(PlaneType):
LAU_68___7_FFAR_Mk1_HE = (5, Weapons.LAU_68___7_FFAR_Mk1_HE) LAU_68___7_FFAR_Mk1_HE = (5, Weapons.LAU_68___7_FFAR_Mk1_HE)
LAU_68___7_FFAR_Mk5_HEAT = (5, Weapons.LAU_68___7_FFAR_Mk5_HEAT) LAU_68___7_FFAR_Mk5_HEAT = (5, Weapons.LAU_68___7_FFAR_Mk5_HEAT)
AGM_45A = (5, Weapons.AGM_45A) AGM_45A = (5, Weapons.AGM_45A)
#ERRR {AGM12_B} # ERRR {AGM12_B}
Mk_20 = (5, Weapons.Mk_20) Mk_20 = (5, Weapons.Mk_20)
Mk_81 = (5, Weapons.Mk_81) Mk_81 = (5, Weapons.Mk_81)
Mk_81SE = (5, WeaponsA4EC.Mk_81SE) Mk_81SE = (5, WeaponsA4EC.Mk_81SE)
@@ -767,16 +1092,27 @@ class A_4E_C(PlaneType):
AN_M64 = (5, Weapons.AN_M64) AN_M64 = (5, Weapons.AN_M64)
AN_M81 = (5, WeaponsA4EC.AN_M81) AN_M81 = (5, WeaponsA4EC.AN_M81)
AN_M88 = (5, WeaponsA4EC.AN_M88) AN_M88 = (5, WeaponsA4EC.AN_M88)
LAU_68___7_2_75__rockets_M257__Parachute_illumination_ = (5, Weapons.LAU_68___7_2_75__rockets_M257__Parachute_illumination_) LAU_68___7_2_75__rockets_M257__Parachute_illumination_ = (
5,
Weapons.LAU_68___7_2_75__rockets_M257__Parachute_illumination_,
)
Smokewinder___red = (5, Weapons.Smokewinder___red) Smokewinder___red = (5, Weapons.Smokewinder___red)
Smokewinder___green = (5, Weapons.Smokewinder___green) Smokewinder___green = (5, Weapons.Smokewinder___green)
Smokewinder___blue = (5, Weapons.Smokewinder___blue) Smokewinder___blue = (5, Weapons.Smokewinder___blue)
Smokewinder___white = (5, Weapons.Smokewinder___white) Smokewinder___white = (5, Weapons.Smokewinder___white)
Smokewinder___yellow = (5, Weapons.Smokewinder___yellow) Smokewinder___yellow = (5, Weapons.Smokewinder___yellow)
Smokewinder___orange = (5, Weapons.Smokewinder___orange) Smokewinder___orange = (5, Weapons.Smokewinder___orange)
#ERRR <CLEAN>
# ERRR <CLEAN>
pylons = {1, 2, 3, 4, 5} pylons = {1, 2, 3, 4, 5}
tasks = [task.CAP, task.CAS, task.SEAD, task.GroundAttack, task.AFAC, task.Refueling] tasks = [
task_default = task.CAS task.CAP,
task.CAS,
task.SEAD,
task.GroundAttack,
task.AFAC,
task.Refueling,
]
task_default = task.CAS

View File

@@ -24,7 +24,7 @@ class F_22A(PlaneType):
chaff_charge_size = 1 chaff_charge_size = 1
flare_charge_size = 2 flare_charge_size = 2
eplrs = True eplrs = True
category = "Interceptor" #{78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F}
radio_frequency = 127.5 radio_frequency = 127.5
property_defaults = { property_defaults = {
@@ -36,7 +36,6 @@ class F_22A(PlaneType):
id = "BAY_DOOR_OPTION" id = "BAY_DOOR_OPTION"
class Liveries: class Liveries:
class USSR(Enum): class USSR(Enum):
default = "default" default = "default"
_154_wg = "154 wg" _154_wg = "154 wg"
@@ -1806,5 +1805,11 @@ class F_22A(PlaneType):
pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
tasks = [task.CAP, task.Escort, task.FighterSweep, task.Intercept, task.Reconnaissance] tasks = [
task.CAP,
task.Escort,
task.FighterSweep,
task.Intercept,
task.Reconnaissance,
]
task_default = task.CAP task_default = task.CAP

View File

@@ -3,6 +3,7 @@
# #
from dcs import unittype from dcs import unittype
class AMX_10RCR(unittype.VehicleType): class AMX_10RCR(unittype.VehicleType):
id = "AMX10RCR" id = "AMX10RCR"
name = "AMX-10RCR" name = "AMX-10RCR"
@@ -150,8 +151,10 @@ class DIM__KAMIKAZE(unittype.VehicleType):
air_weapon_dist = 50 air_weapon_dist = 50
eplrs = True eplrs = True
## FORTIFICATION ## FORTIFICATION
class _FIELD_HIDE(unittype.VehicleType): class _FIELD_HIDE(unittype.VehicleType):
id = "FieldHL" id = "FieldHL"
name = "*FIELD HIDE" name = "*FIELD HIDE"
@@ -159,6 +162,7 @@ class _FIELD_HIDE(unittype.VehicleType):
threat_range = 0 threat_range = 0
air_weapon_dist = 0 air_weapon_dist = 0
class _FIELD_HIDE_SMALL(unittype.VehicleType): class _FIELD_HIDE_SMALL(unittype.VehicleType):
id = "HARRIERH" id = "HARRIERH"
name = "*FIELD HIDE SMALL" name = "*FIELD HIDE SMALL"
@@ -166,6 +170,7 @@ class _FIELD_HIDE_SMALL(unittype.VehicleType):
threat_range = 0 threat_range = 0
air_weapon_dist = 0 air_weapon_dist = 0
class SmokeD1(unittype.VehicleType): class SmokeD1(unittype.VehicleType):
id = "SmokeD1" id = "SmokeD1"
name = "SmokeD1" name = "SmokeD1"
@@ -173,6 +178,7 @@ class SmokeD1(unittype.VehicleType):
threat_range = 0 threat_range = 0
air_weapon_dist = 0 air_weapon_dist = 0
class SmokeD3(unittype.VehicleType): class SmokeD3(unittype.VehicleType):
id = "SmokeD3" id = "SmokeD3"
name = "SmokeD3" name = "SmokeD3"
@@ -189,6 +195,7 @@ class TRM_2000(unittype.VehicleType):
air_weapon_dist = 0 air_weapon_dist = 0
eplrs = True eplrs = True
class TRM_2000_Fuel(unittype.VehicleType): class TRM_2000_Fuel(unittype.VehicleType):
id = "TRM2000_Citerne" id = "TRM2000_Citerne"
name = "TRM-2000 Fuel" name = "TRM-2000 Fuel"
@@ -197,6 +204,7 @@ class TRM_2000_Fuel(unittype.VehicleType):
air_weapon_dist = 0 air_weapon_dist = 0
eplrs = True eplrs = True
class VAB_MEDICAL(unittype.VehicleType): class VAB_MEDICAL(unittype.VehicleType):
id = "VABH" id = "VABH"
name = "VAB MEDICAL" name = "VAB MEDICAL"
@@ -205,6 +213,7 @@ class VAB_MEDICAL(unittype.VehicleType):
air_weapon_dist = 0 air_weapon_dist = 0
eplrs = True eplrs = True
class VAB(unittype.VehicleType): class VAB(unittype.VehicleType):
id = "VAB_RADIO" id = "VAB_RADIO"
name = "VAB" name = "VAB"
@@ -213,6 +222,7 @@ class VAB(unittype.VehicleType):
air_weapon_dist = 0 air_weapon_dist = 0
eplrs = True eplrs = True
class VBL(unittype.VehicleType): class VBL(unittype.VehicleType):
id = "VBL-Radio" id = "VBL-Radio"
name = "VBL" name = "VBL"
@@ -221,6 +231,7 @@ class VBL(unittype.VehicleType):
air_weapon_dist = 0 air_weapon_dist = 0
eplrs = True eplrs = True
class Tracma_TD_1500(unittype.VehicleType): class Tracma_TD_1500(unittype.VehicleType):
id = "Tracma" id = "Tracma"
name = "Tracma TD 1500" name = "Tracma TD 1500"
@@ -228,8 +239,10 @@ class Tracma_TD_1500(unittype.VehicleType):
threat_range = 0 threat_range = 0
air_weapon_dist = 0 air_weapon_dist = 0
## AIRDEFENCE ## AIRDEFENCE
class SMOKE_SAM_IR(unittype.VehicleType): class SMOKE_SAM_IR(unittype.VehicleType):
id = "SMOKESAM" id = "SMOKESAM"
name = "SMOKE SAM IR" name = "SMOKE SAM IR"
@@ -238,6 +251,7 @@ class SMOKE_SAM_IR(unittype.VehicleType):
air_weapon_dist = 20000 air_weapon_dist = 20000
eplrs = True eplrs = True
class _53T2(unittype.VehicleType): class _53T2(unittype.VehicleType):
id = "AA20" id = "AA20"
name = "53T2" name = "53T2"
@@ -245,6 +259,7 @@ class _53T2(unittype.VehicleType):
threat_range = 2000 threat_range = 2000
air_weapon_dist = 2000 air_weapon_dist = 2000
class TRM_2000_53T2(unittype.VehicleType): class TRM_2000_53T2(unittype.VehicleType):
id = "TRM2000_AA20" id = "TRM2000_AA20"
name = "TRM-2000 53T2" name = "TRM-2000 53T2"
@@ -253,6 +268,7 @@ class TRM_2000_53T2(unittype.VehicleType):
air_weapon_dist = 2000 air_weapon_dist = 2000
eplrs = True eplrs = True
class TRM_2000_PAMELA(unittype.VehicleType): class TRM_2000_PAMELA(unittype.VehicleType):
id = "TRMMISTRAL" id = "TRMMISTRAL"
name = "TRM-2000 PAMELA" name = "TRM-2000 PAMELA"
@@ -261,8 +277,10 @@ class TRM_2000_PAMELA(unittype.VehicleType):
air_weapon_dist = 10000 air_weapon_dist = 10000
eplrs = True eplrs = True
## INFANTRY ## INFANTRY
class Infantry_Soldier_JTAC(unittype.VehicleType): class Infantry_Soldier_JTAC(unittype.VehicleType):
id = "JTACFP" id = "JTACFP"
name = "Infantry Soldier JTAC" name = "Infantry Soldier JTAC"
@@ -270,8 +288,10 @@ class Infantry_Soldier_JTAC(unittype.VehicleType):
threat_range = 500 threat_range = 500
air_weapon_dist = 500 air_weapon_dist = 500
## ARTILERY ## ARTILERY
class MO_120_RT(unittype.VehicleType): class MO_120_RT(unittype.VehicleType):
id = "M120" id = "M120"
name = "MO 120 RT" name = "MO 120 RT"
@@ -279,10 +299,11 @@ class MO_120_RT(unittype.VehicleType):
threat_range = 15000 threat_range = 15000
air_weapon_dist = 15000 air_weapon_dist = 15000
class VAB_MORTIER(unittype.VehicleType): class VAB_MORTIER(unittype.VehicleType):
id = "VAB_MORTIER" id = "VAB_MORTIER"
name = "VAB MORTIER" name = "VAB MORTIER"
detection_range = 0 detection_range = 0
threat_range = 15000 threat_range = 15000
air_weapon_dist = 15000 air_weapon_dist = 15000
eplrs = True eplrs = True

View File

@@ -335,4 +335,3 @@ class _34Ya6E_Gazetchik_E_decoy(unittype.VehicleType):
detection_range = 20000 detection_range = 20000
threat_range = 0 threat_range = 0
air_weapon_dist = 0 air_weapon_dist = 0

View File

@@ -7,32 +7,104 @@ from dcs.weapons_data import Weapons
class MB_339PAN_Weapons: class MB_339PAN_Weapons:
ARF8M3_TP = {"clsid": "{ARF8M3_TP}", "name": "ARF8M3 TP", "weight": None} ARF8M3_TP = {"clsid": "{ARF8M3_TP}", "name": "ARF8M3 TP", "weight": None}
BRD_4_250_4_MK_76_2_ARF_8M3TP_ = {"clsid": "{BRD-4-250}", "name": "BRD-4-250(4*MK.76+2*ARF-8M3TP)", "weight": 137.6} BRD_4_250_4_MK_76_2_ARF_8M3TP_ = {
"clsid": "{BRD-4-250}",
"name": "BRD-4-250(4*MK.76+2*ARF-8M3TP)",
"weight": 137.6,
}
Color_Oil_Tank = {"clsid": "{COLOR-TANK}", "name": "Color Oil Tank", "weight": 183} Color_Oil_Tank = {"clsid": "{COLOR-TANK}", "name": "Color Oil Tank", "weight": 183}
Empty_Pylon = {"clsid": "{VOID-PYLON-MB339A}", "name": "Empty Pylon", "weight": 20} Empty_Pylon = {"clsid": "{VOID-PYLON-MB339A}", "name": "Empty Pylon", "weight": 20}
Fuel_Tank_330lt = {"clsid": "{FUEL-SUBAL_TANK-330}", "name": "Fuel Tank 330lt", "weight": 315} Fuel_Tank_330lt = {
"clsid": "{FUEL-SUBAL_TANK-330}",
"name": "Fuel Tank 330lt",
"weight": 315,
}
GunPod_AN_M3 = {"clsid": "{MB339-AN-M3_L}", "name": "GunPod AN/M3", "weight": 75} GunPod_AN_M3 = {"clsid": "{MB339-AN-M3_L}", "name": "GunPod AN/M3", "weight": 75}
GunPod_AN_M3_ = {"clsid": "{MB339-AN-M3_R}", "name": "GunPod AN/M3", "weight": 75} GunPod_AN_M3_ = {"clsid": "{MB339-AN-M3_R}", "name": "GunPod AN/M3", "weight": 75}
GunPod_DEFA553 = {"clsid": "{MB339-DEFA553_L}", "name": "GunPod DEFA553", "weight": 190} GunPod_DEFA553 = {
GunPod_DEFA553_ = {"clsid": "{MB339-DEFA553_R}", "name": "GunPod DEFA553", "weight": 190} "clsid": "{MB339-DEFA553_L}",
LAU_10___4_ZUNI_MK_71___ = {"clsid": "{LAU-10}", "name": "LAU-10 - 4 ZUNI MK 71", "weight": 308} "name": "GunPod DEFA553",
LR_25___25_ARF_8M3_API_ = {"clsid": "{LR-25API}", "name": "LR-25 - 25 ARF/8M3(API)", "weight": 141} "weight": 190,
LR_25___25_ARF_8M3_HEI_ = {"clsid": "{LR-25HEI}", "name": "LR-25 - 25 ARF/8M3(HEI)", "weight": 161} }
GunPod_DEFA553_ = {
"clsid": "{MB339-DEFA553_R}",
"name": "GunPod DEFA553",
"weight": 190,
}
LAU_10___4_ZUNI_MK_71___ = {
"clsid": "{LAU-10}",
"name": "LAU-10 - 4 ZUNI MK 71",
"weight": 308,
}
LR_25___25_ARF_8M3_API_ = {
"clsid": "{LR-25API}",
"name": "LR-25 - 25 ARF/8M3(API)",
"weight": 141,
}
LR_25___25_ARF_8M3_HEI_ = {
"clsid": "{LR-25HEI}",
"name": "LR-25 - 25 ARF/8M3(HEI)",
"weight": 161,
}
MAK79_2_MK_20 = {"clsid": "{MAK79_MK20 2L}", "name": "MAK79 2 MK-20", "weight": 464} MAK79_2_MK_20 = {"clsid": "{MAK79_MK20 2L}", "name": "MAK79 2 MK-20", "weight": 464}
MAK79_2_MK_20_ = {"clsid": "{MAK79_MK20 2R}", "name": "MAK79 2 MK-20", "weight": 464} MAK79_2_MK_20_ = {
"clsid": "{MAK79_MK20 2R}",
"name": "MAK79 2 MK-20",
"weight": 464,
}
MAK79_MK_20 = {"clsid": "{MAK79_MK20 1R}", "name": "MAK79 MK-20", "weight": 232} MAK79_MK_20 = {"clsid": "{MAK79_MK20 1R}", "name": "MAK79 MK-20", "weight": 232}
MAK79_MK_20_ = {"clsid": "{MAK79_MK20 1L}", "name": "MAK79 MK-20", "weight": 232} MAK79_MK_20_ = {"clsid": "{MAK79_MK20 1L}", "name": "MAK79 MK-20", "weight": 232}
MB339_Black_Smoke = {"clsid": "{SMOKE-BLACK-MB339}", "name": "MB339 Black Smoke", "weight": 1} MB339_Black_Smoke = {
MB339_Green_Smoke = {"clsid": "{SMOKE-GREEN-MB339}", "name": "MB339 Green Smoke", "weight": 1} "clsid": "{SMOKE-BLACK-MB339}",
MB339_ORANGE_Smoke = {"clsid": "{SMOKE-ORANGE-MB339}", "name": "MB339 ORANGE Smoke", "weight": 1} "name": "MB339 Black Smoke",
MB339_Red_Smoke = {"clsid": "{SMOKE-RED-MB339}", "name": "MB339 Red Smoke", "weight": 1} "weight": 1,
MB339_White_Smoke = {"clsid": "{SMOKE-WHITE-MB339}", "name": "MB339 White Smoke", "weight": 1} }
MB339_YELLOW_Smoke = {"clsid": "{SMOKE-YELLOW-MB339}", "name": "MB339 YELLOW Smoke", "weight": 1} MB339_Green_Smoke = {
"clsid": "{SMOKE-GREEN-MB339}",
"name": "MB339 Green Smoke",
"weight": 1,
}
MB339_ORANGE_Smoke = {
"clsid": "{SMOKE-ORANGE-MB339}",
"name": "MB339 ORANGE Smoke",
"weight": 1,
}
MB339_Red_Smoke = {
"clsid": "{SMOKE-RED-MB339}",
"name": "MB339 Red Smoke",
"weight": 1,
}
MB339_White_Smoke = {
"clsid": "{SMOKE-WHITE-MB339}",
"name": "MB339 White Smoke",
"weight": 1,
}
MB339_YELLOW_Smoke = {
"clsid": "{SMOKE-YELLOW-MB339}",
"name": "MB339 YELLOW Smoke",
"weight": 1,
}
MK76 = {"clsid": "{MK76}", "name": "MK76", "weight": 11.3} MK76 = {"clsid": "{MK76}", "name": "MK76", "weight": 11.3}
Tip_Fuel_Tank_500lt = {"clsid": "{FUEL-TIP-TANK-500-L}", "name": "Tip Fuel Tank 500lt", "weight": 471} Tip_Fuel_Tank_500lt = {
Tip_Fuel_Tank_500lt_ = {"clsid": "{FUEL-TIP-TANK-500-R}", "name": "Tip Fuel Tank 500lt", "weight": 471} "clsid": "{FUEL-TIP-TANK-500-L}",
Tip_Fuel_Tank_Ellittici_320lt = {"clsid": "{FUEL-TIP-ELLITTIC-L}", "name": "Tip Fuel Tank Ellittici 320lt", "weight": 314.2} "name": "Tip Fuel Tank 500lt",
Tip_Fuel_Tank_Ellittici_320lt_ = {"clsid": "{FUEL-TIP-ELLITTIC-R}", "name": "Tip Fuel Tank Ellittici 320lt", "weight": 314.2} "weight": 471,
}
Tip_Fuel_Tank_500lt_ = {
"clsid": "{FUEL-TIP-TANK-500-R}",
"name": "Tip Fuel Tank 500lt",
"weight": 471,
}
Tip_Fuel_Tank_Ellittici_320lt = {
"clsid": "{FUEL-TIP-ELLITTIC-L}",
"name": "Tip Fuel Tank Ellittici 320lt",
"weight": 314.2,
}
Tip_Fuel_Tank_Ellittici_320lt_ = {
"clsid": "{FUEL-TIP-ELLITTIC-R}",
"name": "Tip Fuel Tank Ellittici 320lt",
"weight": 314.2,
}
class MB_339PAN(PlaneType): class MB_339PAN(PlaneType):
@@ -43,7 +115,7 @@ class MB_339PAN(PlaneType):
length = 12.13 length = 12.13
fuel_max = 626 fuel_max = 626
max_speed = 763.2 max_speed = 763.2
category = "Interceptor" #{78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F}
radio_frequency = 124 radio_frequency = 124
panel_radio = { panel_radio = {
@@ -68,7 +140,7 @@ class MB_339PAN(PlaneType):
7: 262, 7: 262,
14: 266, 14: 266,
19: 268, 19: 268,
15: 265 15: 265,
}, },
}, },
2: { 2: {
@@ -102,7 +174,7 @@ class MB_339PAN(PlaneType):
28: 257, 28: 257,
23: 260, 23: 260,
29: 253, 29: 253,
15: 265 15: 265,
}, },
}, },
} }
@@ -113,7 +185,6 @@ class MB_339PAN(PlaneType):
} }
class Properties: class Properties:
class SoloFlight: class SoloFlight:
id = "SoloFlight" id = "SoloFlight"
@@ -127,7 +198,6 @@ class MB_339PAN(PlaneType):
Equally_Responsible = -2 Equally_Responsible = -2
class Liveries: class Liveries:
class Georgia(Enum): class Georgia(Enum):
MB339AA__ARMADA____Crippa = "MB339AA 'ARMADA' - Crippa" MB339AA__ARMADA____Crippa = "MB339AA 'ARMADA' - Crippa"
MB339AA__ARMADA____Yellow_Band = "MB339AA 'ARMADA' - Yellow Band" MB339AA__ARMADA____Yellow_Band = "MB339AA 'ARMADA' - Yellow Band"
@@ -370,7 +440,10 @@ class MB_339PAN(PlaneType):
class Pylon1: class Pylon1:
Tip_Fuel_Tank_500lt = (1, MB_339PAN_Weapons.Tip_Fuel_Tank_500lt) Tip_Fuel_Tank_500lt = (1, MB_339PAN_Weapons.Tip_Fuel_Tank_500lt)
Tip_Fuel_Tank_Ellittici_320lt = (1, MB_339PAN_Weapons.Tip_Fuel_Tank_Ellittici_320lt) Tip_Fuel_Tank_Ellittici_320lt = (
1,
MB_339PAN_Weapons.Tip_Fuel_Tank_Ellittici_320lt,
)
class Pylon2: class Pylon2:
Empty_Pylon = (2, MB_339PAN_Weapons.Empty_Pylon) Empty_Pylon = (2, MB_339PAN_Weapons.Empty_Pylon)
@@ -386,7 +459,10 @@ class MB_339PAN(PlaneType):
LR_25___25_ARF_8M3_API_ = (3, MB_339PAN_Weapons.LR_25___25_ARF_8M3_API_) LR_25___25_ARF_8M3_API_ = (3, MB_339PAN_Weapons.LR_25___25_ARF_8M3_API_)
Mk_82 = (3, Weapons.Mk_82) Mk_82 = (3, Weapons.Mk_82)
LAU_10___4_ZUNI_MK_71___ = (3, MB_339PAN_Weapons.LAU_10___4_ZUNI_MK_71___) LAU_10___4_ZUNI_MK_71___ = (3, MB_339PAN_Weapons.LAU_10___4_ZUNI_MK_71___)
BRD_4_250_4_MK_76_2_ARF_8M3TP_ = (3, MB_339PAN_Weapons.BRD_4_250_4_MK_76_2_ARF_8M3TP_) BRD_4_250_4_MK_76_2_ARF_8M3TP_ = (
3,
MB_339PAN_Weapons.BRD_4_250_4_MK_76_2_ARF_8M3TP_,
)
Matra_Type_155_Rocket_Pod = (3, Weapons.Matra_Type_155_Rocket_Pod) Matra_Type_155_Rocket_Pod = (3, Weapons.Matra_Type_155_Rocket_Pod)
class Pylon4: class Pylon4:
@@ -427,7 +503,10 @@ class MB_339PAN(PlaneType):
Mk_82 = (8, Weapons.Mk_82) Mk_82 = (8, Weapons.Mk_82)
LAU_10___4_ZUNI_MK_71___ = (8, MB_339PAN_Weapons.LAU_10___4_ZUNI_MK_71___) LAU_10___4_ZUNI_MK_71___ = (8, MB_339PAN_Weapons.LAU_10___4_ZUNI_MK_71___)
Matra_Type_155_Rocket_Pod = (8, Weapons.Matra_Type_155_Rocket_Pod) Matra_Type_155_Rocket_Pod = (8, Weapons.Matra_Type_155_Rocket_Pod)
BRD_4_250_4_MK_76_2_ARF_8M3TP_ = (8, MB_339PAN_Weapons.BRD_4_250_4_MK_76_2_ARF_8M3TP_) BRD_4_250_4_MK_76_2_ARF_8M3TP_ = (
8,
MB_339PAN_Weapons.BRD_4_250_4_MK_76_2_ARF_8M3TP_,
)
class Pylon9: class Pylon9:
Empty_Pylon = (9, MB_339PAN_Weapons.Empty_Pylon) Empty_Pylon = (9, MB_339PAN_Weapons.Empty_Pylon)
@@ -438,9 +517,18 @@ class MB_339PAN(PlaneType):
class Pylon10: class Pylon10:
Tip_Fuel_Tank_500lt_ = (10, MB_339PAN_Weapons.Tip_Fuel_Tank_500lt_) Tip_Fuel_Tank_500lt_ = (10, MB_339PAN_Weapons.Tip_Fuel_Tank_500lt_)
Tip_Fuel_Tank_Ellittici_320lt_ = (10, MB_339PAN_Weapons.Tip_Fuel_Tank_Ellittici_320lt_) Tip_Fuel_Tank_Ellittici_320lt_ = (
10,
MB_339PAN_Weapons.Tip_Fuel_Tank_Ellittici_320lt_,
)
pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
tasks = [task.GroundAttack, task.RunwayAttack, task.CAS, task.AntishipStrike, task.Reconnaissance] tasks = [
task_default = task.Nothing task.GroundAttack,
task.RunwayAttack,
task.CAS,
task.AntishipStrike,
task.Reconnaissance,
]
task_default = task.Nothing

View File

@@ -7,7 +7,16 @@ from pydcs_extensions.rafale.rafale import Rafale_M, Rafale_A_S, Rafale_B
from pydcs_extensions.su57.su57 import Su_57 from pydcs_extensions.su57.su57 import Su_57
import pydcs_extensions.frenchpack.frenchpack as frenchpack import pydcs_extensions.frenchpack.frenchpack as frenchpack
MODDED_AIRPLANES = [A_4E_C, MB_339PAN, Rafale_A_S, Rafale_M, Rafale_B, Su_57, F_22A, Hercules] MODDED_AIRPLANES = [
A_4E_C,
MB_339PAN,
Rafale_A_S,
Rafale_M,
Rafale_B,
Su_57,
F_22A,
Hercules,
]
MODDED_VEHICLES = [ MODDED_VEHICLES = [
frenchpack._FIELD_HIDE, frenchpack._FIELD_HIDE,
frenchpack._FIELD_HIDE_SMALL, frenchpack._FIELD_HIDE_SMALL,
@@ -84,5 +93,5 @@ MODDED_VEHICLES = [
highdigitsams.SAM_SA_24_Igla_S_manpad, highdigitsams.SAM_SA_24_Igla_S_manpad,
highdigitsams.SAM_SA_14_Strela_3_manpad, highdigitsams.SAM_SA_14_Strela_3_manpad,
highdigitsams.Polyana_D4M1_C2_node, highdigitsams.Polyana_D4M1_C2_node,
highdigitsams._34Ya6E_Gazetchik_E_decoy highdigitsams._34Ya6E_Gazetchik_E_decoy,
] ]

View File

@@ -4,6 +4,7 @@ from dcs import task
from dcs.planes import PlaneType from dcs.planes import PlaneType
from dcs.weapons_data import Weapons from dcs.weapons_data import Weapons
class RafaleWeapons: class RafaleWeapons:
SCALP = {"clsid": "{SCALP}", "name": "SCALP", "weight": None} SCALP = {"clsid": "{SCALP}", "name": "SCALP", "weight": None}
AS_30L = {"clsid": "{AS_30L}", "name": "AS_30L", "weight": 292} AS_30L = {"clsid": "{AS_30L}", "name": "AS_30L", "weight": 292}
@@ -25,16 +26,36 @@ class RafaleWeapons:
RPL751_ = {"clsid": "{RPL751}", "name": "RPL751", "weight": 70} RPL751_ = {"clsid": "{RPL751}", "name": "RPL751", "weight": 70}
RPL751__ = {"clsid": "{RPL751}", "name": "RPL751", "weight": 70} RPL751__ = {"clsid": "{RPL751}", "name": "RPL751", "weight": 70}
METEOR = {"clsid": "{RAFALE_MBDA_METEOR}", "name": "METEOR", "weight": 199} METEOR = {"clsid": "{RAFALE_MBDA_METEOR}", "name": "METEOR", "weight": 199}
METEOR_x2 = {"clsid": "{LAU-115_2xLAU-127_MBDA_METEOR}", "name": "METEOR x2", "weight": 445} METEOR_x2 = {
"clsid": "{LAU-115_2xLAU-127_MBDA_METEOR}",
"name": "METEOR x2",
"weight": 445,
}
GBU_49 = {"clsid": "{GBU_49}", "name": "GBU_49", "weight": 525} GBU_49 = {"clsid": "{GBU_49}", "name": "GBU_49", "weight": 525}
GBU12PII = {"clsid": "{GBU12PII}", "name": "GBU12PII", "weight": 525} GBU12PII = {"clsid": "{GBU12PII}", "name": "GBU12PII", "weight": 525}
AASM_250 = {"clsid": "{AASM_250}", "name": "AASM_250", "weight": 250} AASM_250 = {"clsid": "{AASM_250}", "name": "AASM_250", "weight": 250}
AASM_250_L = {"clsid": "{AASM_250_L}", "name": "AASM_250_L", "weight": 500} AASM_250_L = {"clsid": "{AASM_250_L}", "name": "AASM_250_L", "weight": 500}
AASM_250_R = {"clsid": "{AASM_250_R}", "name": "AASM_250_R", "weight": 500} AASM_250_R = {"clsid": "{AASM_250_R}", "name": "AASM_250_R", "weight": 500}
AASM_250_RIGHT = {"clsid": "{AASM_250_RIGHT}", "name": "AASM_250_RIGHT", "weight": 250} AASM_250_RIGHT = {
_2_GBU_54_V_1_B = {"clsid": "{BRU-70A_2*GBU-54_LEFT}", "name": "2 GBU-54(V)1/B", "weight": 566} "clsid": "{AASM_250_RIGHT}",
_2_GBU_54_V_1_B_ = {"clsid": "{BRU-70A_2*GBU-54_RIGHT}", "name": "2 GBU-54(V)1/B", "weight": 566} "name": "AASM_250_RIGHT",
_3_GBU_54_V_1_B = {"clsid": "{BRU-70A_3*GBU-54}", "name": "3 GBU-54(V)1/B", "weight": 819} "weight": 250,
}
_2_GBU_54_V_1_B = {
"clsid": "{BRU-70A_2*GBU-54_LEFT}",
"name": "2 GBU-54(V)1/B",
"weight": 566,
}
_2_GBU_54_V_1_B_ = {
"clsid": "{BRU-70A_2*GBU-54_RIGHT}",
"name": "2 GBU-54(V)1/B",
"weight": 566,
}
_3_GBU_54_V_1_B = {
"clsid": "{BRU-70A_3*GBU-54}",
"name": "3 GBU-54(V)1/B",
"weight": 819,
}
class Rafale_A_S(PlaneType): class Rafale_A_S(PlaneType):
@@ -50,11 +71,10 @@ class Rafale_A_S(PlaneType):
charge_total = 96 charge_total = 96
chaff_charge_size = 1 chaff_charge_size = 1
flare_charge_size = 1 flare_charge_size = 1
category = "Interceptor" #{78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F}
radio_frequency = 127.5 radio_frequency = 127.5
class Liveries: class Liveries:
class USSR(Enum): class USSR(Enum):
_01_marine_12_f = "01 marine 12 f" _01_marine_12_f = "01 marine 12 f"
_02_rafale_export = "02 rafale export" _02_rafale_export = "02 rafale export"
@@ -896,7 +916,10 @@ class Rafale_A_S(PlaneType):
_3_Mk_20_Rockeye = (2, Weapons._3_Mk_20_Rockeye) _3_Mk_20_Rockeye = (2, Weapons._3_Mk_20_Rockeye)
Mk_84 = (2, Weapons.Mk_84) Mk_84 = (2, Weapons.Mk_84)
GBU_24 = (2, Weapons.GBU_24) GBU_24 = (2, Weapons.GBU_24)
LAU_131___7_2_75__rockets_M151__HE_ = (2, Weapons.LAU_131___7_2_75__rockets_M151__HE_) LAU_131___7_2_75__rockets_M151__HE_ = (
2,
Weapons.LAU_131___7_2_75__rockets_M151__HE_,
)
LAU3_HE151 = (2, Weapons.LAU3_HE151) LAU3_HE151 = (2, Weapons.LAU3_HE151)
LAU3_WP156 = (2, Weapons.LAU3_WP156) LAU3_WP156 = (2, Weapons.LAU3_WP156)
LAU3_HE5 = (2, Weapons.LAU3_HE5) LAU3_HE5 = (2, Weapons.LAU3_HE5)
@@ -923,7 +946,10 @@ class Rafale_A_S(PlaneType):
AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM)
MICA_IR = (4, Weapons.MICA_IR) MICA_IR = (4, Weapons.MICA_IR)
LAU_10___4_ZUNI_MK_71 = (4, Weapons.LAU_10___4_ZUNI_MK_71) LAU_10___4_ZUNI_MK_71 = (4, Weapons.LAU_10___4_ZUNI_MK_71)
LAU_61___19_2_75__rockets_MK151_HE = (4, Weapons.LAU_61___19_2_75__rockets_MK151_HE) LAU_61___19_2_75__rockets_MK151_HE = (
4,
Weapons.LAU_61___19_2_75__rockets_MK151_HE,
)
LAU3_HE151 = (4, Weapons.LAU3_HE151) LAU3_HE151 = (4, Weapons.LAU3_HE151)
class Pylon5: class Pylon5:
@@ -937,7 +963,10 @@ class Rafale_A_S(PlaneType):
class Pylon6: class Pylon6:
LAU_10___4_ZUNI_MK_71 = (6, Weapons.LAU_10___4_ZUNI_MK_71) LAU_10___4_ZUNI_MK_71 = (6, Weapons.LAU_10___4_ZUNI_MK_71)
LAU_61___19_2_75__rockets_MK151_HE = (6, Weapons.LAU_61___19_2_75__rockets_MK151_HE) LAU_61___19_2_75__rockets_MK151_HE = (
6,
Weapons.LAU_61___19_2_75__rockets_MK151_HE,
)
AIM_9M_Sidewinder_IR_AAM = (6, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9M_Sidewinder_IR_AAM = (6, Weapons.AIM_9M_Sidewinder_IR_AAM)
AIM_9P_Sidewinder_IR_AAM = (6, Weapons.AIM_9P_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (6, Weapons.AIM_9P_Sidewinder_IR_AAM)
MICA_IR = (6, Weapons.MICA_IR) MICA_IR = (6, Weapons.MICA_IR)
@@ -973,7 +1002,10 @@ class Rafale_A_S(PlaneType):
Mk_84 = (9, Weapons.Mk_84) Mk_84 = (9, Weapons.Mk_84)
_3_Mk_82 = (9, Weapons._3_Mk_82) _3_Mk_82 = (9, Weapons._3_Mk_82)
AGM_88C_ = (9, Weapons.AGM_88C_) AGM_88C_ = (9, Weapons.AGM_88C_)
LAU_131___7_2_75__rockets_M151__HE_ = (9, Weapons.LAU_131___7_2_75__rockets_M151__HE_) LAU_131___7_2_75__rockets_M151__HE_ = (
9,
Weapons.LAU_131___7_2_75__rockets_M151__HE_,
)
LAU3_HE151 = (9, Weapons.LAU3_HE151) LAU3_HE151 = (9, Weapons.LAU3_HE151)
LAU3_WP156 = (9, Weapons.LAU3_WP156) LAU3_WP156 = (9, Weapons.LAU3_WP156)
LAU3_HE5 = (9, Weapons.LAU3_HE5) LAU3_HE5 = (9, Weapons.LAU3_HE5)
@@ -993,7 +1025,18 @@ class Rafale_A_S(PlaneType):
pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
tasks = [task.CAP, task.Escort, task.FighterSweep, task.GroundAttack, task.CAS, task.AFAC, task.RunwayAttack, task.AntishipStrike, task.SEAD, task.PinpointStrike] tasks = [
task.CAP,
task.Escort,
task.FighterSweep,
task.GroundAttack,
task.CAS,
task.AFAC,
task.RunwayAttack,
task.AntishipStrike,
task.SEAD,
task.PinpointStrike,
]
task_default = task.CAP task_default = task.CAP
@@ -1010,11 +1053,10 @@ class Rafale_M(PlaneType):
charge_total = 96 charge_total = 96
chaff_charge_size = 1 chaff_charge_size = 1
flare_charge_size = 1 flare_charge_size = 1
category = "Interceptor" #{78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F}
radio_frequency = 127.5 radio_frequency = 127.5
class Liveries: class Liveries:
class USSR(Enum): class USSR(Enum):
_01_marine_12_f = "01 marine 12 f" _01_marine_12_f = "01 marine 12 f"
_02_rafale_export = "02 rafale export" _02_rafale_export = "02 rafale export"
@@ -1851,7 +1893,10 @@ class Rafale_M(PlaneType):
MER_2_MK_83 = (2, Weapons.MER_2_MK_83) MER_2_MK_83 = (2, Weapons.MER_2_MK_83)
MER_2_MK_82 = (2, Weapons.MER_2_MK_82) MER_2_MK_82 = (2, Weapons.MER_2_MK_82)
_3_Mk_82 = (2, Weapons._3_Mk_82) _3_Mk_82 = (2, Weapons._3_Mk_82)
LAU_131___7_2_75__rockets_M151__HE_ = (2, Weapons.LAU_131___7_2_75__rockets_M151__HE_) LAU_131___7_2_75__rockets_M151__HE_ = (
2,
Weapons.LAU_131___7_2_75__rockets_M151__HE_,
)
LAU3_HE151 = (2, Weapons.LAU3_HE151) LAU3_HE151 = (2, Weapons.LAU3_HE151)
LAU3_WP156 = (2, Weapons.LAU3_WP156) LAU3_WP156 = (2, Weapons.LAU3_WP156)
LAU3_HE5 = (2, Weapons.LAU3_HE5) LAU3_HE5 = (2, Weapons.LAU3_HE5)
@@ -1887,7 +1932,10 @@ class Rafale_M(PlaneType):
AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM)
LAU3_WP156 = (4, Weapons.LAU3_WP156) LAU3_WP156 = (4, Weapons.LAU3_WP156)
LAU_10___4_ZUNI_MK_71 = (4, Weapons.LAU_10___4_ZUNI_MK_71) LAU_10___4_ZUNI_MK_71 = (4, Weapons.LAU_10___4_ZUNI_MK_71)
LAU_61___19_2_75__rockets_MK151_HE = (4, Weapons.LAU_61___19_2_75__rockets_MK151_HE) LAU_61___19_2_75__rockets_MK151_HE = (
4,
Weapons.LAU_61___19_2_75__rockets_MK151_HE,
)
Mk_82 = (4, Weapons.Mk_82) Mk_82 = (4, Weapons.Mk_82)
class Pylon5: class Pylon5:
@@ -1906,7 +1954,10 @@ class Rafale_M(PlaneType):
AIM_9P_Sidewinder_IR_AAM = (6, Weapons.AIM_9P_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (6, Weapons.AIM_9P_Sidewinder_IR_AAM)
LAU3_WP156 = (6, Weapons.LAU3_WP156) LAU3_WP156 = (6, Weapons.LAU3_WP156)
LAU_10___4_ZUNI_MK_71 = (6, Weapons.LAU_10___4_ZUNI_MK_71) LAU_10___4_ZUNI_MK_71 = (6, Weapons.LAU_10___4_ZUNI_MK_71)
LAU_61___19_2_75__rockets_MK151_HE = (6, Weapons.LAU_61___19_2_75__rockets_MK151_HE) LAU_61___19_2_75__rockets_MK151_HE = (
6,
Weapons.LAU_61___19_2_75__rockets_MK151_HE,
)
Mk_82 = (6, Weapons.Mk_82) Mk_82 = (6, Weapons.Mk_82)
class Pylon7: class Pylon7:
@@ -1936,7 +1987,10 @@ class Rafale_M(PlaneType):
MER_2_MK_83 = (9, Weapons.MER_2_MK_83) MER_2_MK_83 = (9, Weapons.MER_2_MK_83)
MER_2_MK_82 = (9, Weapons.MER_2_MK_82) MER_2_MK_82 = (9, Weapons.MER_2_MK_82)
_3_Mk_82 = (9, Weapons._3_Mk_82) _3_Mk_82 = (9, Weapons._3_Mk_82)
LAU_131___7_2_75__rockets_M151__HE_ = (9, Weapons.LAU_131___7_2_75__rockets_M151__HE_) LAU_131___7_2_75__rockets_M151__HE_ = (
9,
Weapons.LAU_131___7_2_75__rockets_M151__HE_,
)
LAU3_HE151 = (9, Weapons.LAU3_HE151) LAU3_HE151 = (9, Weapons.LAU3_HE151)
LAU3_WP156 = (9, Weapons.LAU3_WP156) LAU3_WP156 = (9, Weapons.LAU3_WP156)
LAU3_HE5 = (9, Weapons.LAU3_HE5) LAU3_HE5 = (9, Weapons.LAU3_HE5)
@@ -1961,7 +2015,18 @@ class Rafale_M(PlaneType):
pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
tasks = [task.CAP, task.Escort, task.FighterSweep, task.GroundAttack, task.CAS, task.AFAC, task.RunwayAttack, task.AntishipStrike, task.Reconnaissance, task.Intercept] tasks = [
task.CAP,
task.Escort,
task.FighterSweep,
task.GroundAttack,
task.CAS,
task.AFAC,
task.RunwayAttack,
task.AntishipStrike,
task.Reconnaissance,
task.Intercept,
]
task_default = task.CAP task_default = task.CAP
@@ -1978,11 +2043,10 @@ class Rafale_B(PlaneType):
charge_total = 96 charge_total = 96
chaff_charge_size = 1 chaff_charge_size = 1
flare_charge_size = 1 flare_charge_size = 1
category = "Interceptor" #{78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F}
radio_frequency = 127.5 radio_frequency = 127.5
class Liveries: class Liveries:
class USSR(Enum): class USSR(Enum):
_01_rafale_b_lafayette = "01 rafale b lafayette" _01_rafale_b_lafayette = "01 rafale b lafayette"
_02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan"
@@ -2414,7 +2478,10 @@ class Rafale_B(PlaneType):
_3_Mk_20_Rockeye = (2, Weapons._3_Mk_20_Rockeye) _3_Mk_20_Rockeye = (2, Weapons._3_Mk_20_Rockeye)
Mk_84 = (2, Weapons.Mk_84) Mk_84 = (2, Weapons.Mk_84)
GBU_24 = (2, Weapons.GBU_24) GBU_24 = (2, Weapons.GBU_24)
LAU_131___7_2_75__rockets_M151__HE_ = (2, Weapons.LAU_131___7_2_75__rockets_M151__HE_) LAU_131___7_2_75__rockets_M151__HE_ = (
2,
Weapons.LAU_131___7_2_75__rockets_M151__HE_,
)
LAU3_HE151 = (2, Weapons.LAU3_HE151) LAU3_HE151 = (2, Weapons.LAU3_HE151)
LAU3_WP156 = (2, Weapons.LAU3_WP156) LAU3_WP156 = (2, Weapons.LAU3_WP156)
LAU3_HE5 = (2, Weapons.LAU3_HE5) LAU3_HE5 = (2, Weapons.LAU3_HE5)
@@ -2442,7 +2509,10 @@ class Rafale_B(PlaneType):
AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM)
MICA_IR = (4, Weapons.MICA_IR) MICA_IR = (4, Weapons.MICA_IR)
LAU_10___4_ZUNI_MK_71 = (4, Weapons.LAU_10___4_ZUNI_MK_71) LAU_10___4_ZUNI_MK_71 = (4, Weapons.LAU_10___4_ZUNI_MK_71)
LAU_61___19_2_75__rockets_MK151_HE = (4, Weapons.LAU_61___19_2_75__rockets_MK151_HE) LAU_61___19_2_75__rockets_MK151_HE = (
4,
Weapons.LAU_61___19_2_75__rockets_MK151_HE,
)
LAU3_HE151 = (4, Weapons.LAU3_HE151) LAU3_HE151 = (4, Weapons.LAU3_HE151)
class Pylon5: class Pylon5:
@@ -2459,7 +2529,10 @@ class Rafale_B(PlaneType):
class Pylon6: class Pylon6:
LAU_10___4_ZUNI_MK_71 = (6, Weapons.LAU_10___4_ZUNI_MK_71) LAU_10___4_ZUNI_MK_71 = (6, Weapons.LAU_10___4_ZUNI_MK_71)
LAU_61___19_2_75__rockets_MK151_HE = (6, Weapons.LAU_61___19_2_75__rockets_MK151_HE) LAU_61___19_2_75__rockets_MK151_HE = (
6,
Weapons.LAU_61___19_2_75__rockets_MK151_HE,
)
AIM_9M_Sidewinder_IR_AAM = (6, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9M_Sidewinder_IR_AAM = (6, Weapons.AIM_9M_Sidewinder_IR_AAM)
AIM_9P_Sidewinder_IR_AAM = (6, Weapons.AIM_9P_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (6, Weapons.AIM_9P_Sidewinder_IR_AAM)
MICA_IR = (6, Weapons.MICA_IR) MICA_IR = (6, Weapons.MICA_IR)
@@ -2496,7 +2569,10 @@ class Rafale_B(PlaneType):
Mk_84 = (9, Weapons.Mk_84) Mk_84 = (9, Weapons.Mk_84)
_3_Mk_82 = (9, Weapons._3_Mk_82) _3_Mk_82 = (9, Weapons._3_Mk_82)
AGM_88C_ = (9, Weapons.AGM_88C_) AGM_88C_ = (9, Weapons.AGM_88C_)
LAU_131___7_2_75__rockets_M151__HE_ = (9, Weapons.LAU_131___7_2_75__rockets_M151__HE_) LAU_131___7_2_75__rockets_M151__HE_ = (
9,
Weapons.LAU_131___7_2_75__rockets_M151__HE_,
)
LAU3_HE151 = (9, Weapons.LAU3_HE151) LAU3_HE151 = (9, Weapons.LAU3_HE151)
LAU3_WP156 = (9, Weapons.LAU3_WP156) LAU3_WP156 = (9, Weapons.LAU3_WP156)
LAU3_HE5 = (9, Weapons.LAU3_HE5) LAU3_HE5 = (9, Weapons.LAU3_HE5)
@@ -2516,7 +2592,18 @@ class Rafale_B(PlaneType):
pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
tasks = [task.CAP, task.Escort, task.FighterSweep, task.GroundAttack, task.CAS, task.AFAC, task.RunwayAttack, task.AntishipStrike, task.SEAD, task.PinpointStrike] tasks = [
task.CAP,
task.Escort,
task.FighterSweep,
task.GroundAttack,
task.CAS,
task.AFAC,
task.RunwayAttack,
task.AntishipStrike,
task.SEAD,
task.PinpointStrike,
]
task_default = task.GroundAttack task_default = task.GroundAttack
@@ -2534,11 +2621,10 @@ class Rafale_M_NOUNOU(PlaneType):
chaff_charge_size = 1 chaff_charge_size = 1
flare_charge_size = 1 flare_charge_size = 1
tacan = True tacan = True
category = "Tankers" #{8A302789-A55D-4897-B647-66493FA6826F} category = "Tankers" # {8A302789-A55D-4897-B647-66493FA6826F}
radio_frequency = 127.5 radio_frequency = 127.5
class Liveries: class Liveries:
class USSR(Enum): class USSR(Enum):
_01_marine_12_f = "01 marine 12 f" _01_marine_12_f = "01 marine 12 f"
_02_rafale_export = "02 rafale export" _02_rafale_export = "02 rafale export"
@@ -2977,4 +3063,3 @@ class Rafale_M_NOUNOU(PlaneType):
tasks = [task.Refueling] tasks = [task.Refueling]
task_default = task.Refueling task_default = task.Refueling

View File

@@ -11,7 +11,11 @@ class Su57Weapons:
RVV_BD = {"clsid": "{RVV-BD}", "name": "RVV-BD", "weight": 600} RVV_BD = {"clsid": "{RVV-BD}", "name": "RVV-BD", "weight": 600}
RVV_L = {"clsid": "{RVV-L}", "name": "RVV-L", "weight": 748} RVV_L = {"clsid": "{RVV-L}", "name": "RVV-L", "weight": 748}
RVV_M = {"clsid": "{RVV-M}", "name": "RVV-M", "weight": 190} RVV_M = {"clsid": "{RVV-M}", "name": "RVV-M", "weight": 190}
Su_57_Fuel_Tank = {"clsid": "{SU_57Tank}", "name": "Su-57 Fuel Tank", "weight": 1561.421} Su_57_Fuel_Tank = {
"clsid": "{SU_57Tank}",
"name": "Su-57 Fuel Tank",
"weight": 1561.421,
}
class Su_57(PlaneType): class Su_57(PlaneType):
@@ -27,10 +31,9 @@ class Su_57(PlaneType):
charge_total = 200 charge_total = 200
chaff_charge_size = 1 chaff_charge_size = 1
flare_charge_size = 1 flare_charge_size = 1
category = "Interceptor" #{78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F}
class Liveries: class Liveries:
class USSR(Enum): class USSR(Enum):
_22 = "22" _22 = "22"
_20 = "20" _20 = "20"
@@ -1703,8 +1706,8 @@ class Su_57(PlaneType):
FAB_1500_M54 = (11, Weapons.FAB_1500_M54) FAB_1500_M54 = (11, Weapons.FAB_1500_M54)
KAB_1500L = (11, Weapons.KAB_1500L) KAB_1500L = (11, Weapons.KAB_1500L)
MER_6_FAB_250 = (11, Weapons.MER_6_FAB_250) MER_6_FAB_250 = (11, Weapons.MER_6_FAB_250)
#ERRR {R-33} # ERRR {R-33}
RVV_BD = (11,Su57Weapons.RVV_BD) RVV_BD = (11, Su57Weapons.RVV_BD)
RVV_AE = (11, Su57Weapons.RVV_AE) RVV_AE = (11, Su57Weapons.RVV_AE)
RVV_M = (11, Su57Weapons.RVV_M) RVV_M = (11, Su57Weapons.RVV_M)
RVV_L = (11, Su57Weapons.RVV_L) RVV_L = (11, Su57Weapons.RVV_L)
@@ -1732,5 +1735,15 @@ class Su_57(PlaneType):
pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
tasks = [task.CAP, task.Intercept, task.Escort, task.FighterSweep, task.AFAC, task.GroundAttack, task.RunwayAttack, task.AntishipStrike, task.CAS] tasks = [
task.CAP,
task.Intercept,
task.Escort,
task.FighterSweep,
task.AFAC,
task.GroundAttack,
task.RunwayAttack,
task.AntishipStrike,
task.CAS,
]
task_default = task.CAP task_default = task.CAP

View File

@@ -1,10 +1,31 @@
Pyside2>=5.15.2 altgraph==0.17
pyinstaller==3.6 appdirs==1.4.4
black==20.8b1
Pillow~=7.2.0 cfgv==3.2.0
tabulate~=0.8.7 click==7.1.2
distlib==0.3.1
filelock==3.0.12
future==0.18.2
identify==1.5.13
Jinja2==2.11.3
MarkupSafe==1.1.1
mypy==0.782 mypy==0.782
mypy-extensions==0.4.3 mypy-extensions==0.4.3
jinja2>=2.11.2 nodeenv==1.5.0
shapely==1.7.1 pathspec==0.8.1
pefile==2019.4.18
Pillow==7.2.0
pre-commit==2.10.1
PyInstaller==3.6
PySide2==5.15.2
pywin32-ctypes==0.2.0
PyYAML==5.4.1
regex==2020.11.13
Shapely==1.7.1
shiboken2==5.15.2
six==1.15.0
tabulate==0.8.7
toml==0.10.2
typed-ast==1.4.2
typing-extensions==3.7.4.3
virtualenv==20.4.2

View File

@@ -12,14 +12,17 @@ Terrain = Union[Caucasus, PersianGulf, Syria, Nevada, Normandy, TheChannel]
SAVE_PATH = Path("resources/frontlines") SAVE_PATH = Path("resources/frontlines")
def validate_miz(file_path: Path) -> bool: def validate_miz(file_path: Path) -> bool:
return bool(file_path.suffix == ".miz" and file_path.exists()) return bool(file_path.suffix == ".miz" and file_path.exists())
def validate_airports(airports: Tuple[int], terrain: Terrain): def validate_airports(airports: Tuple[int], terrain: Terrain):
for airport in airports: for airport in airports:
if terrain.airport_by_id(airport) is None: if terrain.airport_by_id(airport) is None:
print(f"Cannot load airport for invalid id {airport}") print(f"Cannot load airport for invalid id {airport}")
def load_files(files) -> List[Mission]: def load_files(files) -> List[Mission]:
missions = [] missions = []
for file in files: for file in files:
@@ -31,26 +34,30 @@ def load_files(files) -> List[Mission]:
print(f"Error: {file} doesn't look like a valid mission file.") print(f"Error: {file} doesn't look like a valid mission file.")
return missions return missions
def create_frontline_dict(mission: Mission) -> Dict[str, Dict]: def create_frontline_dict(mission: Mission) -> Dict[str, Dict]:
frontline_dict = {} frontline_dict = {}
for group in mission.country("USA").vehicle_group: for group in mission.country("USA").vehicle_group:
groupname = str(group.name).replace(group.name.id, "").replace(":","") groupname = str(group.name).replace(group.name.id, "").replace(":", "")
control_points = groupname.split("|") control_points = groupname.split("|")
frontline_dict[groupname] = { frontline_dict[groupname] = {
"points": [(i.position.x, i.position.y) for i in group.points], "points": [(i.position.x, i.position.y) for i in group.points],
"start_cp": int(control_points[0]) "start_cp": int(control_points[0]),
} }
return frontline_dict return frontline_dict
def process_missions(missions: List[Mission]) -> None: def process_missions(missions: List[Mission]) -> None:
for mission in missions: for mission in missions:
frontline_dict = create_frontline_dict(mission) frontline_dict = create_frontline_dict(mission)
write_json(frontline_dict, mission.terrain.name.lower()) write_json(frontline_dict, mission.terrain.name.lower())
def write_json(frontline_dict: Dict[str, Dict], terrain_name: str) -> None: def write_json(frontline_dict: Dict[str, Dict], terrain_name: str) -> None:
with open(SAVE_PATH.joinpath(terrain_name + ".json"), "w") as file: with open(SAVE_PATH.joinpath(terrain_name + ".json"), "w") as file:
json.dump(frontline_dict, file) json.dump(frontline_dict, file)
if __name__ == "__main__": if __name__ == "__main__":
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Process a miz file to create json descriptions of multi-segment frontlines" description="Process a miz file to create json descriptions of multi-segment frontlines"
@@ -69,6 +76,3 @@ if __name__ == "__main__":
# frontline_dict = create_frontline_dict(missions[0]) # frontline_dict = create_frontline_dict(missions[0])
print("Done") print("Done")

View File

@@ -13,7 +13,10 @@ def load_templates():
groups = {} # type: typing.Dict[str, typing.Dict[int, typing.List[Static]]] groups = {} # type: typing.Dict[str, typing.Dict[int, typing.List[Static]]]
for static_group in temp_mis.country("USA").static_group + temp_mis.country("USAF Aggressors").static_group: for static_group in (
temp_mis.country("USA").static_group
+ temp_mis.country("USAF Aggressors").static_group
):
for static in static_group.units: for static in static_group.units:
static_name = str(static.name).split()[0] static_name = str(static.name).split()[0]
tpl_name, tpl_idx = static_name[:-1], int(static_name[-1]) tpl_name, tpl_idx = static_name[:-1], int(static_name[-1])
@@ -34,13 +37,19 @@ def load_templates():
a = aa a = aa
b = bb b = bb
center = a.position.point_from_heading(a.position.heading_between_point(b.position), dist / 2) center = a.position.point_from_heading(
a.position.heading_between_point(b.position), dist / 2
)
for static in static_groups: for static in static_groups:
tpls[category_name][idx].append({ tpls[category_name][idx].append(
"type": static.type, {
"offset": Point(center.x - static.position.x, center.y - static.position.y), "type": static.type,
"heading": static.heading, "offset": Point(
}) center.x - static.position.x, center.y - static.position.y
),
"heading": static.heading,
}
)
tpls["aa"] = {0: [{"type": "AA", "offset": Point(0, 0), "heading": 0}]} tpls["aa"] = {0: [{"type": "AA", "offset": Point(0, 0), "heading": 0}]}
return tpls return tpls

View File

@@ -11,7 +11,8 @@ from game.theater.landmap import Landmap
@singledispatch @singledispatch
def to_multipoly(obj) -> MultiPolygon: def to_multipoly(obj) -> MultiPolygon:
raise NotImplementedError( raise NotImplementedError(
f"to_multipoly not implemented for {obj.__class__.__name__}") f"to_multipoly not implemented for {obj.__class__.__name__}"
)
@to_multipoly.register @to_multipoly.register
@@ -28,8 +29,7 @@ def _multipoly_to_multipoly(obj: MultiPolygon) -> MultiPolygon:
def _geometry_collection_to_multipoly(obj: GeometryCollection) -> MultiPolygon: def _geometry_collection_to_multipoly(obj: GeometryCollection) -> MultiPolygon:
if obj.is_empty: if obj.is_empty:
return MultiPolygon() return MultiPolygon()
raise RuntimeError( raise RuntimeError(f"Not sure how to convert collection to multipoly: {obj.wkt}")
f"Not sure how to convert collection to multipoly: {obj.wkt}")
for terrain in ["cau", "nev", "syria", "channel", "normandy", "gulf"]: for terrain in ["cau", "nev", "syria", "channel", "normandy", "gulf"]:
@@ -61,6 +61,11 @@ for terrain in ["cau", "nev", "syria", "channel", "normandy", "gulf"]:
with open("../{}landmap.p".format(terrain), "wb") as f: with open("../{}landmap.p".format(terrain), "wb") as f:
print(len(inclusion_zones), len(exclusion_zones), len(seas_zones)) print(len(inclusion_zones), len(exclusion_zones), len(seas_zones))
pickle.dump(Landmap(to_multipoly(unary_union(inclusion_zones)), pickle.dump(
to_multipoly(unary_union(exclusion_zones)), Landmap(
to_multipoly(unary_union(seas_zones))), f) to_multipoly(unary_union(inclusion_zones)),
to_multipoly(unary_union(exclusion_zones)),
to_multipoly(unary_union(seas_zones)),
),
f,
)

View File

@@ -70,13 +70,19 @@ def beacons_from_terrain(dcs_path: Path, path: Path) -> Iterable[Beacon]:
with cd(dcs_path): with cd(dcs_path):
lua = lupa.LuaRuntime() lua = lupa.LuaRuntime()
lua.execute(textwrap.dedent("""\ lua.execute(
textwrap.dedent(
"""\
function module(name) function module(name)
end end
""")) """
)
)
bind_gettext = lua.eval(textwrap.dedent("""\ bind_gettext = lua.eval(
textwrap.dedent(
"""\
function(py_gettext) function(py_gettext)
package.preload["i_18n"] = function() package.preload["i_18n"] = function()
return { return {
@@ -85,16 +91,20 @@ def beacons_from_terrain(dcs_path: Path, path: Path) -> Iterable[Beacon]:
end end
end end
""")) """
)
)
try: try:
translator = gettext.translation( translator = gettext.translation(
"messages", path / "l10n", languages=["en"]) "messages", path / "l10n", languages=["en"]
)
def translate(message_name: str) -> str: def translate(message_name: str) -> str:
if not message_name: if not message_name:
return message_name return message_name
return translator.gettext(message_name) return translator.gettext(message_name)
except FileNotFoundError: except FileNotFoundError:
# TheChannel has no locale data for English. # TheChannel has no locale data for English.
def translate(message_name: str) -> str: def translate(message_name: str) -> str:
@@ -126,7 +136,7 @@ def beacons_from_terrain(dcs_path: Path, path: Path) -> Iterable[Beacon]:
beacon["callsign"], beacon["callsign"],
beacon_type, beacon_type,
convert_lua_frequency(beacon["frequency"]), convert_lua_frequency(beacon["frequency"]),
getattr(beacon, "channel", None) getattr(beacon, "channel", None),
) )
@@ -152,9 +162,10 @@ class Importer:
def export_beacons(self, terrain: str, beacons: Iterable[Beacon]) -> None: def export_beacons(self, terrain: str, beacons: Iterable[Beacon]) -> None:
terrain_py_path = self.export_dir / f"{terrain.lower()}.json" terrain_py_path = self.export_dir / f"{terrain.lower()}.json"
import json import json
terrain_py_path.write_text(json.dumps([
dataclasses.asdict(b) for b in beacons terrain_py_path.write_text(
], indent=True)) json.dumps([dataclasses.asdict(b) for b in beacons], indent=True)
)
def parse_args() -> argparse.Namespace: def parse_args() -> argparse.Namespace:
@@ -169,13 +180,14 @@ def parse_args() -> argparse.Namespace:
"--export-to", "--export-to",
type=resolved_path, type=resolved_path,
default=EXPORT_DIR, default=EXPORT_DIR,
help="Output directory for generated JSON files.") help="Output directory for generated JSON files.",
)
parser.add_argument( parser.add_argument(
"dcs_path", "dcs_path",
metavar="DCS_PATH", metavar="DCS_PATH",
type=resolved_path, type=resolved_path,
help="Path to DCS installation." help="Path to DCS installation.",
) )
return parser.parse_args() return parser.parse_args()

View File

@@ -36,7 +36,13 @@ def _zip_dir(archieve, path):
def _mk_archieve(): def _mk_archieve():
path = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, "build", "dcs_liberation_{}.zip".format(VERSION)) path = os.path.join(
os.path.dirname(__file__),
os.pardir,
os.pardir,
"build",
"dcs_liberation_{}.zip".format(VERSION),
)
if os.path.exists(path): if os.path.exists(path):
print("version already exists") print("version already exists")
return return
@@ -46,9 +52,9 @@ def _mk_archieve():
except FileNotFoundError: except FileNotFoundError:
pass pass
os.system("pyinstaller.exe --clean pyinstaller.spec") os.system("pyinstaller.exe --clean pyinstaller.spec")
#archieve = ZipFile(path, "w") # archieve = ZipFile(path, "w")
#archieve.writestr("dcs_liberation.bat", "cd dist\\dcs_liberation\r\nliberation_main \"%UserProfile%\\Saved Games\" \"{}\"".format(VERSION)) # archieve.writestr("dcs_liberation.bat", "cd dist\\dcs_liberation\r\nliberation_main \"%UserProfile%\\Saved Games\" \"{}\"".format(VERSION))
#_zip_dir(archieve, "./dist/dcs_liberation") # _zip_dir(archieve, "./dist/dcs_liberation")
_mk_archieve() _mk_archieve()