From 87fdc16f9ba4adbe8fdc1965ae385e806edf6625 Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 26 Nov 2020 21:38:46 +0100 Subject: [PATCH 01/13] Update to support the newest version of the Rafale mod. --- game/db.py | 6 +- gen/flights/ai_flight_planner_db.py | 12 +- pydcs_extensions/mod_units.py | 4 +- pydcs_extensions/rafale/rafale.py | 3414 +++++++++++++---- resources/customized_payloads/Rafale_A_S.lua | 70 +- resources/customized_payloads/Rafale_B.lua | 265 ++ resources/customized_payloads/Rafale_M.lua | 142 +- .../factions/france_2005_frenchpack.json | 7 +- resources/factions/france_2005_modded.json | 10 +- 9 files changed, 3113 insertions(+), 817 deletions(-) create mode 100644 resources/customized_payloads/Rafale_B.lua diff --git a/game/db.py b/game/db.py index fd731dad..0da84325 100644 --- a/game/db.py +++ b/game/db.py @@ -160,13 +160,14 @@ from game.factions.faction_loader import FactionLoader from pydcs_extensions.a4ec.a4ec import A_4E_C from pydcs_extensions.f22a.f22a import F_22A from pydcs_extensions.mb339.mb339 import MB_339PAN -from pydcs_extensions.rafale.rafale import Rafale_A_S, Rafale_M +from pydcs_extensions.rafale.rafale import Rafale_A_S, Rafale_M, Rafale_B from pydcs_extensions.su57.su57 import Su_57 plane_map["A-4E-C"] = A_4E_C plane_map["MB-339PAN"] = MB_339PAN plane_map["Rafale_M"] = Rafale_M plane_map["Rafale_A_S"] = Rafale_A_S +plane_map["Rafale_B"] = Rafale_B plane_map["Su-57"] = Su_57 vehicle_map["FieldHL"] = frenchpack._FIELD_HIDE @@ -352,6 +353,7 @@ PRICES = { # Modded Rafale_M: 26, Rafale_A_S: 26, + Rafale_B: 26, # armor Armor.APC_MTLB: 4, @@ -641,6 +643,7 @@ UNIT_BY_TASK = { P_47D_40, RQ_1A_Predator, Rafale_A_S, + Rafale_B, SA342L, SA342M, SA342Minigun, @@ -1063,6 +1066,7 @@ PLANE_PAYLOAD_OVERRIDES: Dict[Type[PlaneType], Dict[Type[Task], str]] = { MB_339PAN: COMMON_OVERRIDE, Rafale_M: COMMON_OVERRIDE, Rafale_A_S: COMMON_OVERRIDE, + Rafale_B: COMMON_OVERRIDE, OH_58D: COMMON_OVERRIDE, F_16A: COMMON_OVERRIDE, MQ_9_Reaper: COMMON_OVERRIDE, diff --git a/gen/flights/ai_flight_planner_db.py b/gen/flights/ai_flight_planner_db.py index 4ae040c5..8fee007e 100644 --- a/gen/flights/ai_flight_planner_db.py +++ b/gen/flights/ai_flight_planner_db.py @@ -86,7 +86,7 @@ from dcs.planes import ( from pydcs_extensions.a4ec.a4ec import A_4E_C from pydcs_extensions.f22a.f22a import F_22A from pydcs_extensions.mb339.mb339 import MB_339PAN -from pydcs_extensions.rafale.rafale import Rafale_A_S, Rafale_M +from pydcs_extensions.rafale.rafale import Rafale_A_S, Rafale_M, Rafale_B # TODO: These lists really ought to be era (faction) dependent. # Factions which have F-5s, F-86s, and A-4s will should prefer F-5s for CAP, but @@ -292,6 +292,7 @@ CAS_CAPABLE = [ A_4E_C, Rafale_A_S, + Rafale_B, WingLoong_I, MQ_9_Reaper, @@ -340,6 +341,7 @@ CAS_PREFERRED = [ A_4E_C, Rafale_A_S, + Rafale_B, WingLoong_I, MQ_9_Reaper, @@ -367,7 +369,8 @@ SEAD_CAPABLE = [ Tornado_GR4, A_4E_C, - Rafale_A_S + Rafale_A_S, + Rafale_B ] SEAD_PREFERRED = [ @@ -452,7 +455,8 @@ STRIKE_CAPABLE = [ FW_190A8, A_4E_C, - Rafale_A_S + Rafale_A_S, + Rafale_B ] @@ -493,6 +497,7 @@ ANTISHIP_CAPABLE = [ Ju_88A4, Rafale_A_S, + Rafale_B ] ANTISHIP_PREFERRED = [ @@ -500,6 +505,7 @@ ANTISHIP_PREFERRED = [ FA_18C_hornet, JF_17, Rafale_A_S, + Rafale_B, Su_24M, Su_30, Su_34, diff --git a/pydcs_extensions/mod_units.py b/pydcs_extensions/mod_units.py index 82c6b09f..01a574aa 100644 --- a/pydcs_extensions/mod_units.py +++ b/pydcs_extensions/mod_units.py @@ -2,11 +2,11 @@ from pydcs_extensions.a4ec.a4ec import A_4E_C from pydcs_extensions.f22a.f22a import F_22A from pydcs_extensions.highdigitsams import highdigitsams from pydcs_extensions.mb339.mb339 import MB_339PAN -from pydcs_extensions.rafale.rafale import Rafale_M, Rafale_A_S +from pydcs_extensions.rafale.rafale import Rafale_M, Rafale_A_S, Rafale_B from pydcs_extensions.su57.su57 import Su_57 import pydcs_extensions.frenchpack.frenchpack as frenchpack -MODDED_AIRPLANES = [A_4E_C, MB_339PAN, Rafale_A_S, Rafale_M, Su_57, F_22A] +MODDED_AIRPLANES = [A_4E_C, MB_339PAN, Rafale_A_S, Rafale_M, Rafale_B, Su_57, F_22A] MODDED_VEHICLES = [ frenchpack._FIELD_HIDE, frenchpack._FIELD_HIDE_SMALL, diff --git a/pydcs_extensions/rafale/rafale.py b/pydcs_extensions/rafale/rafale.py index 880192a2..458a6e8e 100644 --- a/pydcs_extensions/rafale/rafale.py +++ b/pydcs_extensions/rafale/rafale.py @@ -9,16 +9,37 @@ class RafaleWeapons: AS_30L = {"clsid": "{AS_30L}", "name": "AS_30L", "weight": 292} Exocet = {"clsid": "{Exocet}", "name": "Exocet", "weight": 640} Thales_RBE2 = {"clsid": "{Thales_RBE2}", "name": "Thales_RBE2", "weight": 1.4789} + Thales_RBE2_ = {"clsid": "{Thales_RBE2}", "name": "Thales_RBE2", "weight": 1.4789} DAMOCLES = {"clsid": "{DAMOCLES}", "name": "DAMOCLES", "weight": 265} DAMOCLES_ = {"clsid": "{DAMOCLES}", "name": "DAMOCLES", "weight": 265} + DAMOCLES__ = {"clsid": "{DAMOCLES}", "name": "DAMOCLES", "weight": 265} _2300_PTB_RAF = {"clsid": "{2300-PTB RAF}", "name": "2300-PTB RAF", "weight": 70} _2300_PTB_RAF_ = {"clsid": "{2300-PTB RAF}", "name": "2300-PTB RAF", "weight": 70} PTB_1500 = {"clsid": "{PTB-1500}", "name": "PTB-1500", "weight": 70} + RPL_711 = {"clsid": "{RPL 711}", "name": "RPL 711", "weight": 70} + RPL_711_ = {"clsid": "{RPL 711}", "name": "RPL 711", "weight": 70} + RPL_711__ = {"clsid": "{RPL 711}", "name": "RPL 711", "weight": 70} + RPL_711___ = {"clsid": "{PTB-1500}", "name": "RPL 711", "weight": 50} + RPL_751 = {"clsid": "{RPL-751}", "name": "RPL-751", "weight": 50} + 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_x2 = {"clsid": "{LAU-115_2xLAU-127_MBDA_METEOR}", "name": "METEOR x2", "weight": 445} + GBU_49 = {"clsid": "{GBU_49}", "name": "GBU_49", "weight": 525} + GBU12PII = {"clsid": "{GBU12PII}", "name": "GBU12PII", "weight": 525} + 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_R = {"clsid": "{AASM_250_R}", "name": "AASM_250_R", "weight": 500} + AASM_250_RIGHT = {"clsid": "{AASM_250_RIGHT}", "name": "AASM_250_RIGHT", "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): id = "Rafale_A_S" - flyable = False + flyable = True height = 5.28 width = 10.13 length = 15.96 @@ -34,381 +55,825 @@ class Rafale_A_S(PlaneType): class Liveries: + class USSR(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + class Georgia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class Syria(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Finland(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Venezuela(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Australia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Germany(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class SaudiArabia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Israel(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class Croatia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Combined_Joint_Task_Forces_Blue(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class CzechRepublic(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Sudan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Norway(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Romania(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Spain(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Ukraine(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Belgium(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Slovakia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Greece(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class UK(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Insurgents(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Hungary(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class France(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Abkhazia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Russia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Sweden(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Austria(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Switzerland(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Italy(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class SouthOssetia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class SouthKorea(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Iran(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Ukraine(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Libya(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Belgium(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Slovakia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Greece(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class UK(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Third_Reich(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Hungary(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Abkhazia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Morocco(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class United_Nations_Peacekeepers(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Switzerland(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class SouthOssetia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Vietnam(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class China(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class Pakistan(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Yemen(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class Belarus(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class NorthKorea(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Iraq(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Kazakhstan(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Bulgaria(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Kuwait(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Serbia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Oman(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class India(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class USAFAggressors(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class USA(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Denmark(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Egypt(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Canada(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class TheNetherlands(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Turkey(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Japan(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Poland(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Syria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Finland(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Kazakhstan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Denmark(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Sweden(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Croatia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class CzechRepublic(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class GDR(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Yugoslavia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Bulgaria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class SouthKorea(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Tunisia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Combined_Joint_Task_Forces_Red(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Lebanon(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Portugal(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Cuba(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Insurgents(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class SaudiArabia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class France(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class USA(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Honduras(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Qatar(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Russia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class United_Arab_Emirates(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Italian_Social_Republi(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Austria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Bahrain(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Italy(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Chile(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Turkey(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Philippines(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Algeria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Pakistan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Malaysia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Indonesia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Iraq(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Germany(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class South_Africa(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Jordan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Mexico(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class USAFAggressors(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Brazil(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Spain(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Belarus(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Canada(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class NorthKorea(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Ethiopia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Japan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Thailand(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Pylon1: Smokewinder___red = (1, Weapons.Smokewinder___red) @@ -417,96 +882,93 @@ class Rafale_A_S(PlaneType): Smokewinder___white = (1, Weapons.Smokewinder___white) Smokewinder___yellow = (1, Weapons.Smokewinder___yellow) Smokewinder___orange = (1, Weapons.Smokewinder___orange) - MICA_IR = (1, Weapons.MICA_IR) AIM_9M_Sidewinder_IR_AAM = (1, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (1, Weapons.AIM_9P_Sidewinder_IR_AAM) -#ERRR {BRU-42_3*GBU-12} + R_550_Magic_2 = (1, Weapons.R_550_Magic_2) class Pylon2: - _2xGBU_12 = (2, Weapons._2xGBU_12) + AASM_250_L = (2, RafaleWeapons.AASM_250_L) + GBU_49 = (2, RafaleWeapons.GBU_49) MER_2_MK_82 = (2, Weapons.MER_2_MK_82) _3_Mk_82 = (2, Weapons._3_Mk_82) - GBU_10 = (2, Weapons.GBU_10) - GBU_12 = (2, Weapons.GBU_12) + GBU12PII = (2, RafaleWeapons.GBU12PII) Mk_20 = (2, Weapons.Mk_20) _3_Mk_20_Rockeye = (2, Weapons._3_Mk_20_Rockeye) Mk_84 = (2, Weapons.Mk_84) GBU_24 = (2, Weapons.GBU_24) - AGM_88C_ = (2, Weapons.AGM_88C_) 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_WP156 = (2, Weapons.LAU3_WP156) LAU3_HE5 = (2, Weapons.LAU3_HE5) SCALP = (2, RafaleWeapons.SCALP) AS_30L = (2, RafaleWeapons.AS_30L) + AGM_88C_ = (2, Weapons.AGM_88C_) class Pylon3: - GBU_10 = (3, Weapons.GBU_10) + GBU_49 = (3, RafaleWeapons.GBU_49) GBU_24 = (3, Weapons.GBU_24) -#ERRR {BRU-42_3*GBU-12} - _2xGBU_12 = (3, Weapons._2xGBU_12) - GBU_12 = (3, Weapons.GBU_12) + GBU12PII = (3, RafaleWeapons.GBU12PII) MER_2_MK_82 = (3, Weapons.MER_2_MK_82) _3_Mk_82 = (3, Weapons._3_Mk_82) AGM_88C_ = (3, Weapons.AGM_88C_) LAU3_HE151 = (3, Weapons.LAU3_HE151) LAU3_WP156 = (3, Weapons.LAU3_WP156) LAU_131x3_HYDRA_70_M151 = (3, Weapons.LAU_131x3_HYDRA_70_M151) - SCALP = (3, RafaleWeapons.SCALP) AS_30L = (3, RafaleWeapons.AS_30L) - PTB_1500 = (3, RafaleWeapons.PTB_1500) - _2300_PTB_RAF_ = (3, RafaleWeapons._2300_PTB_RAF) + RPL_711__ = (3, RafaleWeapons.RPL_711__) + RPL751__ = (3, RafaleWeapons.RPL751__) class Pylon4: AIM_9M_Sidewinder_IR_AAM = (4, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM) MICA_IR = (4, Weapons.MICA_IR) - LAU3_WP156 = (4, Weapons.LAU3_WP156) + 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) + LAU3_HE151 = (4, Weapons.LAU3_HE151) class Pylon5: - Mk_84 = (5, Weapons.Mk_84) - PTB_1500 = (5, RafaleWeapons.PTB_1500) - _2300_PTB_RAF_ = (5, RafaleWeapons._2300_PTB_RAF) + GBU12PII = (5, RafaleWeapons.GBU12PII) + RPL_711__ = (5, RafaleWeapons.RPL_711__) + RPL751__ = (5, RafaleWeapons.RPL751__) Mercury_LLTV_Pod = (5, Weapons.Mercury_LLTV_Pod) + SCALP = (5, RafaleWeapons.SCALP) Exocet = (5, RafaleWeapons.Exocet) + GBU_49 = (5, RafaleWeapons.GBU_49) class Pylon6: + 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) AIM_9M_Sidewinder_IR_AAM = (6, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (6, Weapons.AIM_9P_Sidewinder_IR_AAM) MICA_IR = (6, Weapons.MICA_IR) - LAU3_WP156 = (6, Weapons.LAU3_WP156) + LAU3_HE151 = (6, Weapons.LAU3_HE151) class Pylon7: AN_AAQ_28_LITENING = (7, Weapons.AN_AAQ_28_LITENING) - DAMOCLES_ = (7, RafaleWeapons.DAMOCLES_) - Thales_RBE2 = (7, RafaleWeapons.Thales_RBE2) + DAMOCLES__ = (7, RafaleWeapons.DAMOCLES__) + Thales_RBE2_ = (7, RafaleWeapons.Thales_RBE2_) class Pylon8: - GBU_10 = (8, Weapons.GBU_10) + GBU_49 = (8, RafaleWeapons.GBU_49) GBU_24 = (8, Weapons.GBU_24) -#ERRR {BRU-42_3*GBU-12} - _2xGBU_12 = (8, Weapons._2xGBU_12) - GBU_12 = (8, Weapons.GBU_12) + GBU12PII = (8, RafaleWeapons.GBU12PII) MER_2_MK_82 = (8, Weapons.MER_2_MK_82) _3_Mk_20_Rockeye = (8, Weapons._3_Mk_20_Rockeye) _3_Mk_82 = (8, Weapons._3_Mk_82) - AGM_88C_ = (8, Weapons.AGM_88C_) LAU3_HE151 = (8, Weapons.LAU3_HE151) LAU3_WP156 = (8, Weapons.LAU3_WP156) LAU_131x3_HYDRA_70_M151 = (8, Weapons.LAU_131x3_HYDRA_70_M151) - SCALP = (8, RafaleWeapons.SCALP) AS_30L = (8, RafaleWeapons.AS_30L) - PTB_1500 = (8, RafaleWeapons.PTB_1500) - _2300_PTB_RAF_ = (8, RafaleWeapons._2300_PTB_RAF) + AGM_88C_ = (8, Weapons.AGM_88C_) + RPL_711__ = (8, RafaleWeapons.RPL_711__) + RPL751__ = (8, RafaleWeapons.RPL751__) class Pylon9: + AASM_250_R = (9, RafaleWeapons.AASM_250_R) + GBU_49 = (9, RafaleWeapons.GBU_49) GBU_24 = (9, Weapons.GBU_24) -#ERRR {BRU-42_3*GBU-12} MER_2_MK_82 = (9, Weapons.MER_2_MK_82) - _2xGBU_12 = (9, Weapons._2xGBU_12) - GBU_10 = (9, Weapons.GBU_10) - GBU_12 = (9, Weapons.GBU_12) - Mk_20 = (9, Weapons.Mk_20) + GBU12PII = (9, RafaleWeapons.GBU12PII) _3_Mk_20_Rockeye = (9, Weapons._3_Mk_20_Rockeye) Mk_84 = (9, Weapons.Mk_84) _3_Mk_82 = (9, Weapons._3_Mk_82) @@ -519,9 +981,9 @@ class Rafale_A_S(PlaneType): AS_30L = (9, RafaleWeapons.AS_30L) class Pylon10: + R_550_Magic_2 = (10, Weapons.R_550_Magic_2) AIM_9M_Sidewinder_IR_AAM = (10, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (10, Weapons.AIM_9P_Sidewinder_IR_AAM) - MICA_IR = (10, Weapons.MICA_IR) Smokewinder___red = (10, Weapons.Smokewinder___red) Smokewinder___green = (10, Weapons.Smokewinder___green) Smokewinder___blue = (10, Weapons.Smokewinder___blue) @@ -531,13 +993,13 @@ class Rafale_A_S(PlaneType): 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] + 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 class Rafale_M(PlaneType): id = "Rafale_M" - flyable = False + flyable = True height = 5.28 width = 10.13 length = 15.96 @@ -553,381 +1015,825 @@ class Rafale_M(PlaneType): class Liveries: + class USSR(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + class Georgia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class Syria(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Finland(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Venezuela(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Australia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Germany(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class SaudiArabia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Israel(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class Croatia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Combined_Joint_Task_Forces_Blue(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class CzechRepublic(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Sudan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Norway(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Romania(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Spain(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Ukraine(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Belgium(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Slovakia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Greece(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class UK(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Insurgents(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Hungary(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class France(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Abkhazia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Russia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Sweden(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Austria(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Switzerland(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Italy(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class SouthOssetia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class SouthKorea(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Iran(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Ukraine(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Libya(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Belgium(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Slovakia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Greece(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class UK(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Third_Reich(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Hungary(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Abkhazia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Morocco(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class United_Nations_Peacekeepers(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Switzerland(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class SouthOssetia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Vietnam(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class China(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class Pakistan(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Yemen(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" - class Belarus(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class NorthKorea(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Iraq(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Kazakhstan(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Bulgaria(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + class Kuwait(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Serbia(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Oman(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class India(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class USAFAggressors(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class USA(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Denmark(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Egypt(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Canada(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class TheNetherlands(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Turkey(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" - - class Japan(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Poland(Enum): - _01_MARINE_12_F = "01 MARINE 12 F" - _02_MARINE_MAT_17F = "02 MARINE MAT 17F" - _03_BLACK_DERIVE_11F = "03 BLACK DERIVE 11F" - _04_MARINE_OLD = "04 MARINE OLD" - _05_BRAZIL = "05 BRAZIL" - _06_NEUTRE = "06 NEUTRE" + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Syria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Finland(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Kazakhstan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Denmark(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Sweden(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Croatia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class CzechRepublic(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class GDR(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Yugoslavia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Bulgaria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class SouthKorea(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Tunisia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Combined_Joint_Task_Forces_Red(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Lebanon(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Portugal(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Cuba(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Insurgents(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class SaudiArabia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class France(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class USA(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Honduras(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Qatar(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Russia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class United_Arab_Emirates(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Italian_Social_Republi(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Austria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Bahrain(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Italy(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Chile(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Turkey(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Philippines(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Algeria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Pakistan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Malaysia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Indonesia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Iraq(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Germany(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class South_Africa(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Jordan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Mexico(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class USAFAggressors(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Brazil(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Spain(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Belarus(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Canada(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class NorthKorea(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Ethiopia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Japan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" + + class Thailand(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + _04_11f_tiger_meet = "04 11f tiger meet" + _05_brazil = "05 brazil" + _07_marine_tiger_2014 = "07 marine tiger 2014" + _08_flottile_12_f_90_ans = "08 flottile 12-f.90 ans" + _09_marine_mat_17f = "09 marine mat 17f" class Pylon1: Smokewinder___red = (1, Weapons.Smokewinder___red) @@ -936,7 +1842,7 @@ class Rafale_M(PlaneType): Smokewinder___white = (1, Weapons.Smokewinder___white) Smokewinder___yellow = (1, Weapons.Smokewinder___yellow) Smokewinder___orange = (1, Weapons.Smokewinder___orange) - MICA_IR = (1, Weapons.MICA_IR) + R_550_Magic_2 = (1, Weapons.R_550_Magic_2) AIM_9M_Sidewinder_IR_AAM = (1, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (1, Weapons.AIM_9P_Sidewinder_IR_AAM) @@ -955,6 +1861,8 @@ class Rafale_M(PlaneType): AIM_120C = (2, Weapons.AIM_120C) LAU_115_2_LAU_127_AIM_120C = (2, Weapons.LAU_115_2_LAU_127_AIM_120C) Super_530D = (2, Weapons.Super_530D) + METEOR = (2, RafaleWeapons.METEOR) + AASM_250 = (2, RafaleWeapons.AASM_250) class Pylon3: Mk_84 = (3, Weapons.Mk_84) @@ -969,33 +1877,41 @@ class Rafale_M(PlaneType): AIM_120B = (3, Weapons.AIM_120B) AIM_120C = (3, Weapons.AIM_120C) Super_530D = (3, Weapons.Super_530D) - PTB_1500 = (3, RafaleWeapons.PTB_1500) - _2300_PTB_RAF_ = (3, RafaleWeapons._2300_PTB_RAF) + RPL_711__ = (3, RafaleWeapons.RPL_711__) + RPL751__ = (3, RafaleWeapons.RPL751__) + METEOR = (3, RafaleWeapons.METEOR) class Pylon4: MICA_IR = (4, Weapons.MICA_IR) AIM_9M_Sidewinder_IR_AAM = (4, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM) LAU3_WP156 = (4, Weapons.LAU3_WP156) + 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) + Mk_82 = (4, Weapons.Mk_82) class Pylon5: - PTB_1500 = (5, RafaleWeapons.PTB_1500) - _2300_PTB_RAF_ = (5, RafaleWeapons._2300_PTB_RAF) + RPL_711__ = (5, RafaleWeapons.RPL_711__) + RPL751__ = (5, RafaleWeapons.RPL751__) MICA_IR = (5, Weapons.MICA_IR) AIM_7M = (5, Weapons.AIM_7M) AIM_120B = (5, Weapons.AIM_120B) AIM_120C = (5, Weapons.AIM_120C) Super_530D = (5, Weapons.Super_530D) + METEOR = (5, RafaleWeapons.METEOR) class Pylon6: MICA_IR = (6, Weapons.MICA_IR) AIM_9M_Sidewinder_IR_AAM = (6, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (6, Weapons.AIM_9P_Sidewinder_IR_AAM) LAU3_WP156 = (6, Weapons.LAU3_WP156) + 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) + Mk_82 = (6, Weapons.Mk_82) class Pylon7: AN_AAQ_28_LITENING = (7, Weapons.AN_AAQ_28_LITENING) - DAMOCLES_ = (7, RafaleWeapons.DAMOCLES_) + DAMOCLES__ = (7, RafaleWeapons.DAMOCLES__) class Pylon8: Mk_84 = (8, Weapons.Mk_84) @@ -1010,10 +1926,12 @@ class Rafale_M(PlaneType): AIM_120B = (8, Weapons.AIM_120B) AIM_120C = (8, Weapons.AIM_120C) Super_530D = (8, Weapons.Super_530D) - PTB_1500 = (8, RafaleWeapons.PTB_1500) - _2300_PTB_RAF_ = (8, RafaleWeapons._2300_PTB_RAF) + RPL_711__ = (8, RafaleWeapons.RPL_711__) + RPL751__ = (8, RafaleWeapons.RPL751__) + METEOR = (8, RafaleWeapons.METEOR) class Pylon9: + METEOR = (9, RafaleWeapons.METEOR) Mk_84 = (9, Weapons.Mk_84) MER_2_MK_83 = (9, Weapons.MER_2_MK_83) MER_2_MK_82 = (9, Weapons.MER_2_MK_82) @@ -1028,11 +1946,12 @@ class Rafale_M(PlaneType): AIM_120C = (9, Weapons.AIM_120C) LAU_115_2_LAU_127_AIM_120C = (9, Weapons.LAU_115_2_LAU_127_AIM_120C) Super_530D = (9, Weapons.Super_530D) + AASM_250_RIGHT = (9, RafaleWeapons.AASM_250_RIGHT) class Pylon10: + R_550_Magic_2 = (10, Weapons.R_550_Magic_2) AIM_9M_Sidewinder_IR_AAM = (10, Weapons.AIM_9M_Sidewinder_IR_AAM) AIM_9P_Sidewinder_IR_AAM = (10, Weapons.AIM_9P_Sidewinder_IR_AAM) - MICA_IR = (10, Weapons.MICA_IR) Smokewinder___red = (10, Weapons.Smokewinder___red) Smokewinder___green = (10, Weapons.Smokewinder___green) Smokewinder___blue = (10, Weapons.Smokewinder___blue) @@ -1044,3 +1963,1018 @@ class Rafale_M(PlaneType): 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 + + +class Rafale_B(PlaneType): + id = "Rafale_B" + flyable = True + height = 5.28 + width = 10.13 + length = 15.96 + fuel_max = 5000 + max_speed = 2001.996 + chaff = 48 + flare = 48 + charge_total = 96 + chaff_charge_size = 1 + flare_charge_size = 1 + category = "Interceptor" #{78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 127.5 + + class Liveries: + + class USSR(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Georgia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Venezuela(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Australia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Israel(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Combined_Joint_Task_Forces_Blue(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Sudan(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Norway(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Romania(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Iran(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Ukraine(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Libya(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Belgium(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Slovakia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Greece(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class UK(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Third_Reich(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Hungary(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Abkhazia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Morocco(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class United_Nations_Peacekeepers(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Switzerland(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class SouthOssetia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Vietnam(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class China(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Yemen(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Kuwait(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Serbia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Oman(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class India(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Egypt(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class TheNetherlands(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Poland(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Syria(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Finland(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Kazakhstan(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Denmark(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Sweden(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Croatia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class CzechRepublic(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class GDR(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Yugoslavia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Bulgaria(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class SouthKorea(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Tunisia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Combined_Joint_Task_Forces_Red(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Lebanon(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Portugal(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Cuba(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Insurgents(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class SaudiArabia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class France(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class USA(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Honduras(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Qatar(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Russia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class United_Arab_Emirates(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Italian_Social_Republi(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Austria(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Bahrain(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Italy(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Chile(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Turkey(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Philippines(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Algeria(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Pakistan(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Malaysia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Indonesia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Iraq(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Germany(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class South_Africa(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Jordan(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Mexico(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class USAFAggressors(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Brazil(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Spain(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Belarus(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Canada(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class NorthKorea(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Ethiopia(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Japan(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Thailand(Enum): + _01_rafale_b_lafayette = "01 rafale b lafayette" + _02_rafale_b_mt_de_marsan = "02 rafale b mt de marsan" + _03_standard = "03 standard" + + class Pylon1: + Smokewinder___red = (1, Weapons.Smokewinder___red) + Smokewinder___green = (1, Weapons.Smokewinder___green) + Smokewinder___blue = (1, Weapons.Smokewinder___blue) + Smokewinder___white = (1, Weapons.Smokewinder___white) + Smokewinder___yellow = (1, Weapons.Smokewinder___yellow) + Smokewinder___orange = (1, Weapons.Smokewinder___orange) + AIM_9M_Sidewinder_IR_AAM = (1, Weapons.AIM_9M_Sidewinder_IR_AAM) + AIM_9P_Sidewinder_IR_AAM = (1, Weapons.AIM_9P_Sidewinder_IR_AAM) + R_550_Magic_2 = (1, Weapons.R_550_Magic_2) + + class Pylon2: + AASM_250_L = (2, RafaleWeapons.AASM_250_L) + GBU_49 = (2, RafaleWeapons.GBU_49) + MER_2_MK_82 = (2, Weapons.MER_2_MK_82) + _3_Mk_82 = (2, Weapons._3_Mk_82) + GBU12PII = (2, RafaleWeapons.GBU12PII) + Mk_20 = (2, Weapons.Mk_20) + _3_Mk_20_Rockeye = (2, Weapons._3_Mk_20_Rockeye) + Mk_84 = (2, Weapons.Mk_84) + GBU_24 = (2, Weapons.GBU_24) + 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_WP156 = (2, Weapons.LAU3_WP156) + LAU3_HE5 = (2, Weapons.LAU3_HE5) + SCALP = (2, RafaleWeapons.SCALP) + AS_30L = (2, RafaleWeapons.AS_30L) + AGM_88C_ = (2, Weapons.AGM_88C_) + + class Pylon3: + GBU_49 = (3, RafaleWeapons.GBU_49) + GBU_24 = (3, Weapons.GBU_24) + GBU12PII = (3, RafaleWeapons.GBU12PII) + MER_2_MK_82 = (3, Weapons.MER_2_MK_82) + _3_Mk_82 = (3, Weapons._3_Mk_82) + AGM_88C_ = (3, Weapons.AGM_88C_) + LAU3_HE151 = (3, Weapons.LAU3_HE151) + LAU3_WP156 = (3, Weapons.LAU3_WP156) + LAU_131x3_HYDRA_70_M151 = (3, Weapons.LAU_131x3_HYDRA_70_M151) + AS_30L = (3, RafaleWeapons.AS_30L) + RPL_711__ = (3, RafaleWeapons.RPL_711__) + RPL751__ = (3, RafaleWeapons.RPL751__) + Mk_84 = (3, Weapons.Mk_84) + + class Pylon4: + AIM_9M_Sidewinder_IR_AAM = (4, Weapons.AIM_9M_Sidewinder_IR_AAM) + AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM) + MICA_IR = (4, Weapons.MICA_IR) + 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) + LAU3_HE151 = (4, Weapons.LAU3_HE151) + + class Pylon5: + GBU12PII = (5, RafaleWeapons.GBU12PII) + Mk_84 = (5, Weapons.Mk_84) + RPL_711__ = (5, RafaleWeapons.RPL_711__) + RPL751__ = (5, RafaleWeapons.RPL751__) + Mercury_LLTV_Pod = (5, Weapons.Mercury_LLTV_Pod) + SCALP = (5, RafaleWeapons.SCALP) + Exocet = (5, RafaleWeapons.Exocet) + GBU_49 = (5, RafaleWeapons.GBU_49) + MER_2_MK_83 = (5, Weapons.MER_2_MK_83) + MER_2_MK_82 = (5, Weapons.MER_2_MK_82) + + class Pylon6: + 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) + AIM_9M_Sidewinder_IR_AAM = (6, Weapons.AIM_9M_Sidewinder_IR_AAM) + AIM_9P_Sidewinder_IR_AAM = (6, Weapons.AIM_9P_Sidewinder_IR_AAM) + MICA_IR = (6, Weapons.MICA_IR) + LAU3_HE151 = (6, Weapons.LAU3_HE151) + + class Pylon7: + AN_AAQ_28_LITENING = (7, Weapons.AN_AAQ_28_LITENING) + DAMOCLES__ = (7, RafaleWeapons.DAMOCLES__) + Thales_RBE2_ = (7, RafaleWeapons.Thales_RBE2_) + + class Pylon8: + GBU_49 = (8, RafaleWeapons.GBU_49) + GBU_24 = (8, Weapons.GBU_24) + GBU12PII = (8, RafaleWeapons.GBU12PII) + MER_2_MK_82 = (8, Weapons.MER_2_MK_82) + _3_Mk_20_Rockeye = (8, Weapons._3_Mk_20_Rockeye) + _3_Mk_82 = (8, Weapons._3_Mk_82) + Mk_84 = (8, Weapons.Mk_84) + LAU3_HE151 = (8, Weapons.LAU3_HE151) + LAU3_WP156 = (8, Weapons.LAU3_WP156) + LAU_131x3_HYDRA_70_M151 = (8, Weapons.LAU_131x3_HYDRA_70_M151) + AS_30L = (8, RafaleWeapons.AS_30L) + AGM_88C_ = (8, Weapons.AGM_88C_) + RPL_711__ = (8, RafaleWeapons.RPL_711__) + RPL751__ = (8, RafaleWeapons.RPL751__) + + class Pylon9: + AASM_250_R = (9, RafaleWeapons.AASM_250_R) + GBU_49 = (9, RafaleWeapons.GBU_49) + GBU_24 = (9, Weapons.GBU_24) + MER_2_MK_82 = (9, Weapons.MER_2_MK_82) + GBU12PII = (9, RafaleWeapons.GBU12PII) + _3_Mk_20_Rockeye = (9, Weapons._3_Mk_20_Rockeye) + Mk_84 = (9, Weapons.Mk_84) + _3_Mk_82 = (9, Weapons._3_Mk_82) + AGM_88C_ = (9, Weapons.AGM_88C_) + 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_WP156 = (9, Weapons.LAU3_WP156) + LAU3_HE5 = (9, Weapons.LAU3_HE5) + SCALP = (9, RafaleWeapons.SCALP) + AS_30L = (9, RafaleWeapons.AS_30L) + + class Pylon10: + R_550_Magic_2 = (10, Weapons.R_550_Magic_2) + AIM_9M_Sidewinder_IR_AAM = (10, Weapons.AIM_9M_Sidewinder_IR_AAM) + AIM_9P_Sidewinder_IR_AAM = (10, Weapons.AIM_9P_Sidewinder_IR_AAM) + Smokewinder___red = (10, Weapons.Smokewinder___red) + Smokewinder___green = (10, Weapons.Smokewinder___green) + Smokewinder___blue = (10, Weapons.Smokewinder___blue) + Smokewinder___white = (10, Weapons.Smokewinder___white) + Smokewinder___yellow = (10, Weapons.Smokewinder___yellow) + Smokewinder___orange = (10, Weapons.Smokewinder___orange) + + 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] + task_default = task.GroundAttack + + +class Rafale_M_NOUNOU(PlaneType): + id = "Rafale_M_NOUNOU" + group_size_max = 1 + height = 5.28 + width = 10.13 + length = 15.96 + fuel_max = 4500 + max_speed = 2001.996 + chaff = 48 + flare = 48 + charge_total = 96 + chaff_charge_size = 1 + flare_charge_size = 1 + tacan = True + category = "Tankers" #{8A302789-A55D-4897-B647-66493FA6826F} + radio_frequency = 127.5 + + class Liveries: + + class USSR(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Georgia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Venezuela(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Australia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Israel(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Combined_Joint_Task_Forces_Blue(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Sudan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Norway(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Romania(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Iran(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Ukraine(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Libya(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Belgium(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Slovakia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Greece(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class UK(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Third_Reich(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Hungary(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Abkhazia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Morocco(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class United_Nations_Peacekeepers(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Switzerland(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class SouthOssetia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Vietnam(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class China(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Yemen(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Kuwait(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Serbia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Oman(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class India(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Egypt(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class TheNetherlands(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Poland(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Syria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Finland(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Kazakhstan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Denmark(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Sweden(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Croatia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class CzechRepublic(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class GDR(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Yugoslavia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Bulgaria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class SouthKorea(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Tunisia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Combined_Joint_Task_Forces_Red(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Lebanon(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Portugal(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Cuba(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Insurgents(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class SaudiArabia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class France(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class USA(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Honduras(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Qatar(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Russia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class United_Arab_Emirates(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Italian_Social_Republi(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Austria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Bahrain(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Italy(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Chile(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Turkey(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Philippines(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Algeria(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Pakistan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Malaysia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Indonesia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Iraq(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Germany(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class South_Africa(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Jordan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Mexico(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class USAFAggressors(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Brazil(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Spain(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Belarus(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Canada(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class NorthKorea(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Ethiopia(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Japan(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Thailand(Enum): + _01_marine_12_f = "01 marine 12 f" + _02_rafale_export = "02 rafale export" + _03_black_derive_11f = "03 black derive 11f" + + class Pylon1: + MICA_IR = (1, Weapons.MICA_IR) + R_550_Magic_2 = (1, Weapons.R_550_Magic_2) + + class Pylon3: + RPL_751 = (3, RafaleWeapons.RPL_751) + RPL_711___ = (3, RafaleWeapons.RPL_711___) + + class Pylon8: + RPL_751 = (8, RafaleWeapons.RPL_751) + RPL_711___ = (8, RafaleWeapons.RPL_711___) + + class Pylon10: + MICA_IR = (10, Weapons.MICA_IR) + R_550_Magic_2 = (10, Weapons.R_550_Magic_2) + + class Pylon11: + Smokewinder___green = (11, Weapons.Smokewinder___green) + Smokewinder___blue = (11, Weapons.Smokewinder___blue) + Smokewinder___orange = (11, Weapons.Smokewinder___orange) + Smoke_Generator___red_ = (11, Weapons.Smoke_Generator___red_) + Smoke_Generator___blue_ = (11, Weapons.Smoke_Generator___blue_) + Smoke_Generator___white_ = (11, Weapons.Smoke_Generator___white_) + + pylons = {1, 3, 8, 10, 11} + + tasks = [task.Refueling] + task_default = task.Refueling + diff --git a/resources/customized_payloads/Rafale_A_S.lua b/resources/customized_payloads/Rafale_A_S.lua index 40c61645..42f3abfd 100644 --- a/resources/customized_payloads/Rafale_A_S.lua +++ b/resources/customized_payloads/Rafale_A_S.lua @@ -2,38 +2,14 @@ local unitPayloads = { ["name"] = "Rafale_A_S", ["payloads"] = { [1] = { - ["name"] = "CAP", - ["pylons"] = { - [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", - ["num"] = 10, - }, - [2] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", - ["num"] = 1, - }, - [3] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", - ["num"] = 6, - }, - [4] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", - ["num"] = 4, - }, - }, - ["tasks"] = { - [1] = 11, - }, - }, - [2] = { ["name"] = "CAS", ["pylons"] = { [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 10, }, [2] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 1, }, [3] = { @@ -73,15 +49,15 @@ local unitPayloads = { [1] = 11, }, }, - [3] = { + [2] = { ["name"] = "ANTISHIP", ["pylons"] = { [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 10, }, [2] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 1, }, [3] = { @@ -121,15 +97,39 @@ local unitPayloads = { [1] = 11, }, }, + [3] = { + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 6, + }, + [4] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, [4] = { ["name"] = "SEAD", ["pylons"] = { [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 10, }, [2] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 1, }, [3] = { @@ -173,11 +173,11 @@ local unitPayloads = { ["name"] = "STRIKE", ["pylons"] = { [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 10, }, [2] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 1, }, [3] = { @@ -193,11 +193,11 @@ local unitPayloads = { ["num"] = 9, }, [6] = { - ["CLSID"] = "{SCALP}", + ["CLSID"] = "{GBU_49}", ["num"] = 8, }, [7] = { - ["CLSID"] = "{SCALP}", + ["CLSID"] = "{GBU_49}", ["num"] = 3, }, [8] = { diff --git a/resources/customized_payloads/Rafale_B.lua b/resources/customized_payloads/Rafale_B.lua new file mode 100644 index 00000000..f663618e --- /dev/null +++ b/resources/customized_payloads/Rafale_B.lua @@ -0,0 +1,265 @@ +local unitPayloads = { + ["name"] = "Rafale_B", + ["payloads"] = { + [1] = { + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 6, + }, + [4] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [2] = { + ["name"] = "CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 6, + }, + [4] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, + [6] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 8, + }, + [7] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 3, + }, + [8] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 9, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [3] = { + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 6, + }, + [4] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, + [6] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 8, + }, + [7] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 3, + }, + [8] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "{Exocet}", + ["num"] = 5, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [4] = { + ["name"] = "SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 6, + }, + [4] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, + [6] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 8, + }, + [7] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 3, + }, + [8] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "{SCALP}", + ["num"] = 5, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [5] = { + ["name"] = "BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 6, + }, + [4] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, + [6] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 8, + }, + [7] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 3, + }, + [8] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "{AS_30L}", + ["num"] = 9, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [6] = { + ["name"] = "STRIKE", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 6, + }, + [4] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, + [6] = { + ["CLSID"] = "{GBU_49}", + ["num"] = 8, + }, + [7] = { + ["CLSID"] = "{GBU_49}", + ["num"] = 3, + }, + [8] = { + ["CLSID"] = "{GBU_49}", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "{GBU_49}", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "{GBU_49}", + ["num"] = 5, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "Rafale_B", +} +return unitPayloads diff --git a/resources/customized_payloads/Rafale_M.lua b/resources/customized_payloads/Rafale_M.lua index ca564585..d0aaa5dc 100644 --- a/resources/customized_payloads/Rafale_M.lua +++ b/resources/customized_payloads/Rafale_M.lua @@ -2,10 +2,10 @@ local unitPayloads = { ["name"] = "Rafale_M", ["payloads"] = { [1] = { - ["name"] = "CAP", + ["name"] = "CAS", ["pylons"] = { [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 10, }, [2] = { @@ -13,15 +13,15 @@ local unitPayloads = { ["num"] = 1, }, [3] = { - ["CLSID"] = "LAU-115_2*LAU-127_AIM-120C", + ["CLSID"] = "LAU3_HE5", ["num"] = 2, }, [4] = { - ["CLSID"] = "LAU-115_2*LAU-127_AIM-120C", + ["CLSID"] = "LAU3_HE5", ["num"] = 9, }, [5] = { - ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["CLSID"] = "LAU3_WP156", ["num"] = 8, }, [6] = { @@ -29,39 +29,47 @@ local unitPayloads = { ["num"] = 6, }, [7] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{RAFALE_MBDA_METEOR}", ["num"] = 5, }, [8] = { - ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["CLSID"] = "LAU3_WP156", ["num"] = 3, }, + [9] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, }, ["tasks"] = { [1] = 11, }, }, [2] = { - ["name"] = "CAS", + ["name"] = "STRIKE", ["pylons"] = { [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 10, }, [2] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 1, }, [3] = { - ["CLSID"] = "LAU3_HE5", + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", ["num"] = 2, }, [4] = { - ["CLSID"] = "LAU3_HE5", + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", ["num"] = 9, }, [5] = { - ["CLSID"] = "LAU3_WP156", + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", ["num"] = 8, }, [6] = { @@ -69,39 +77,47 @@ local unitPayloads = { ["num"] = 6, }, [7] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{RAFALE_MBDA_METEOR}", ["num"] = 5, }, [8] = { - ["CLSID"] = "LAU3_WP156", + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", ["num"] = 3, }, + [9] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, }, ["tasks"] = { [1] = 11, }, }, [3] = { - ["name"] = "STRIKE", + ["name"] = "CAP", ["pylons"] = { [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 10, }, [2] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 1, }, [3] = { - ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["CLSID"] = "{RAFALE_MBDA_METEOR}", ["num"] = 2, }, [4] = { - ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["CLSID"] = "{RAFALE_MBDA_METEOR}", ["num"] = 9, }, [5] = { - ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["CLSID"] = "{RAFALE_MBDA_METEOR}", ["num"] = 8, }, [6] = { @@ -109,13 +125,17 @@ local unitPayloads = { ["num"] = 6, }, [7] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{RAFALE_MBDA_METEOR}", ["num"] = 5, }, [8] = { - ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["CLSID"] = "{RAFALE_MBDA_METEOR}", ["num"] = 3, }, + [9] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, }, ["tasks"] = { [1] = 11, @@ -125,11 +145,11 @@ local unitPayloads = { ["name"] = "SEAD", ["pylons"] = { [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 10, }, [2] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 1, }, [3] = { @@ -149,13 +169,21 @@ local unitPayloads = { ["num"] = 6, }, [7] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{RAFALE_MBDA_METEOR}", ["num"] = 5, }, [8] = { ["CLSID"] = "{D5D51E24-348C-4702-96AF-97A714E72697}", ["num"] = 3, }, + [9] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, }, ["tasks"] = { [1] = 11, @@ -165,11 +193,11 @@ local unitPayloads = { ["name"] = "ANTISHIP", ["pylons"] = { [1] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 10, }, [2] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", ["num"] = 1, }, [3] = { @@ -189,13 +217,69 @@ local unitPayloads = { ["num"] = 6, }, [7] = { - ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["CLSID"] = "{RAFALE_MBDA_METEOR}", ["num"] = 5, }, [8] = { ["CLSID"] = "{18617C93-78E7-4359-A8CE-D754103EDF63}", ["num"] = 3, }, + [9] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [6] = { + ["name"] = "BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FC23864E-3B80-48E3-9C03-4DA8B1D7497B}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{60CC734F-0AFA-4E2E-82B8-93B941AB11CF}", + ["num"] = 2, + }, + [4] = { + ["CLSID"] = "{60CC734F-0AFA-4E2E-82B8-93B941AB11CF}", + ["num"] = 3, + }, + [5] = { + ["CLSID"] = "{60CC734F-0AFA-4E2E-82B8-93B941AB11CF}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{60CC734F-0AFA-4E2E-82B8-93B941AB11CF}", + ["num"] = 9, + }, + [7] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 6, + }, + [8] = { + ["CLSID"] = "{RAFALE_MBDA_METEOR}", + ["num"] = 5, + }, + [9] = { + ["CLSID"] = "{0DA03783-61E4-40B2-8FAE-6AEE0A5C5AAE}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{DAMOCLES}", + ["num"] = 7, + }, }, ["tasks"] = { [1] = 11, diff --git a/resources/factions/france_2005_frenchpack.json b/resources/factions/france_2005_frenchpack.json index d909c08b..6efb6971 100644 --- a/resources/factions/france_2005_frenchpack.json +++ b/resources/factions/france_2005_frenchpack.json @@ -69,13 +69,14 @@ "frenchpack V3.5": "https://forums.eagle.ru/showthread.php?t=279974" }, "carrier_names": [ + "R91 Charles de Gaulle" + ], + "helicopter_carrier_names": [ + "R97 Jeanne d'Arc", "L9013 Mistral", "L9014 Tonerre", "L9015 Dixmude" ], - "helicopter_carrier_names": [ - "Jeanne d'Arc" - ], "navy_generators": [ "ArleighBurkeGroupGenerator" ], diff --git a/resources/factions/france_2005_modded.json b/resources/factions/france_2005_modded.json index 87624cc8..07243816 100644 --- a/resources/factions/france_2005_modded.json +++ b/resources/factions/france_2005_modded.json @@ -8,6 +8,7 @@ "Mirage_2000_5", "Rafale_M", "Rafale_A_S", + "Rafale_B", "SA342M", "SA342L", "SA342Mistral" @@ -71,16 +72,17 @@ ], "requirements": { "frenchpack V3.5": "https://forums.eagle.ru/showthread.php?t=279974", - "RAFALE 2.5.5": "https://www.digitalcombatsimulator.com/fr/files/3307478/" + "RAFALE 2.5.6": "https://forums.eagle.ru/forum/english/dcs-world-topics/mods-and-apps/dcs-mods/7135261-download-rafales-pack-2-5-6-55960-and-openbeta-2-5-6-57530-by-cuesta-brothers" }, "carrier_names": [ + "R91 Charles de Gaulle" + ], + "helicopter_carrier_names": [ + "R97 Jeanne d'Arc", "L9013 Mistral", "L9014 Tonerre", "L9015 Dixmude" ], - "helicopter_carrier_names": [ - "Jeanne d'Arc" - ], "navy_generators": [ "ArleighBurkeGroupGenerator" ], From cd97526d2b47df921adde35add1436137f7fadd3 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 26 Nov 2020 13:46:05 -0800 Subject: [PATCH 02/13] Mark the fishbed as capable of strike missions. --- gen/flights/ai_flight_planner_db.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gen/flights/ai_flight_planner_db.py b/gen/flights/ai_flight_planner_db.py index 8fee007e..2dbc6433 100644 --- a/gen/flights/ai_flight_planner_db.py +++ b/gen/flights/ai_flight_planner_db.py @@ -388,6 +388,7 @@ SEAD_PREFERRED = [ # Aircraft used for Strike mission STRIKE_CAPABLE = [ MiG_15bis, + MiG_21Bis, MiG_27K, MB_339PAN, From a0d38f74651bdd51918114319dfb0537767674be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20Mu=C3=B1oz=20Fernandez?= Date: Fri, 27 Nov 2020 00:00:34 +0100 Subject: [PATCH 03/13] fix: disable topbar buttons when game is None --- qt_ui/widgets/QBudgetBox.py | 2 ++ qt_ui/widgets/QTopPanel.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/qt_ui/widgets/QBudgetBox.py b/qt_ui/widgets/QBudgetBox.py index 27233559..0e92a4e2 100644 --- a/qt_ui/widgets/QBudgetBox.py +++ b/qt_ui/widgets/QBudgetBox.py @@ -18,6 +18,7 @@ class QBudgetBox(QGroupBox): self.money_amount = QLabel() self.finances = QPushButton("Details") + self.finances.setDisabled(True) self.finances.setProperty("style", "btn-primary") self.finances.clicked.connect(self.openFinances) @@ -38,6 +39,7 @@ class QBudgetBox(QGroupBox): def setGame(self, game): self.game = game self.setBudget(self.game.budget, self.game.budget_reward_amount) + self.finances.setEnabled(True) def openFinances(self): self.subwindow = QFinancesMenu(self.game) diff --git a/qt_ui/widgets/QTopPanel.py b/qt_ui/widgets/QTopPanel.py index b6f56896..8fe1c347 100644 --- a/qt_ui/widgets/QTopPanel.py +++ b/qt_ui/widgets/QTopPanel.py @@ -60,11 +60,13 @@ class QTopPanel(QFrame): self.factionsInfos = QFactionsInfos(self.game) self.settings = QPushButton("Settings") + self.settings.setDisabled(True) self.settings.setIcon(CONST.ICONS["Settings"]) self.settings.setProperty("style", "btn-primary") self.settings.clicked.connect(self.openSettings) self.statistics = QPushButton("Statistics") + self.statistics.setDisabled(True) self.statistics.setIcon(CONST.ICONS["Statistics"]) self.statistics.setProperty("style", "btn-primary") self.statistics.clicked.connect(self.openStatisticsWindow) @@ -100,6 +102,9 @@ class QTopPanel(QFrame): if game is None: return + self.settings.setEnabled(True) + self.statistics.setEnabled(True) + self.conditionsWidget.setCurrentTurn(game.turn, game.conditions) self.budgetBox.setGame(game) self.factionsInfos.setGame(game) From 7fcf74a8ed371a2dc49041c8abecc5b4053c7f2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20Mu=C3=B1oz=20Fernandez?= Date: Fri, 27 Nov 2020 00:02:40 +0100 Subject: [PATCH 04/13] added none check on budget setGame --- qt_ui/widgets/QBudgetBox.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/qt_ui/widgets/QBudgetBox.py b/qt_ui/widgets/QBudgetBox.py index 0e92a4e2..ad1d66a4 100644 --- a/qt_ui/widgets/QBudgetBox.py +++ b/qt_ui/widgets/QBudgetBox.py @@ -37,6 +37,9 @@ class QBudgetBox(QGroupBox): self.money_amount.setText(str(budget) + "M (+" + str(reward) + "M)") def setGame(self, game): + if game is None: + return + self.game = game self.setBudget(self.game.budget, self.game.budget_reward_amount) self.finances.setEnabled(True) From 28cf42aeb84c4f2b5a093b6104c1e5e88eaa6473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20Mu=C3=B1oz=20Fernandez?= Date: Thu, 26 Nov 2020 23:11:59 +0100 Subject: [PATCH 05/13] fix: Unable to find MLRS_BM21_Grad in pydcs --- resources/factions/georgia_2008.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/factions/georgia_2008.json b/resources/factions/georgia_2008.json index f575054c..6475506c 100644 --- a/resources/factions/georgia_2008.json +++ b/resources/factions/georgia_2008.json @@ -20,7 +20,7 @@ "MBT_T_55" ], "artillery_units": [ - "MLRS_BM21_Grad", + "MLRS_BM_21_Grad", "SPH_2S1_Gvozdika", "SPH_2S3_Akatsia" ], From 3ad57d995b8a4088c5b7788fbb44a1ced81c33b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20Mu=C3=B1oz=20Fernandez?= Date: Thu, 26 Nov 2020 22:55:53 +0100 Subject: [PATCH 06/13] feat: added timestamp to information widget log items --- game/infos/information.py | 10 ++++++++-- qt_ui/windows/infos/QInfoItem.py | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/game/infos/information.py b/game/infos/information.py index 4fd12d2f..35e94f92 100644 --- a/game/infos/information.py +++ b/game/infos/information.py @@ -1,3 +1,4 @@ +import datetime class Information(): @@ -5,7 +6,12 @@ class Information(): self.title = title self.text = text self.turn = turn + self.timestamp = datetime.datetime.now() def __str__(self): - s = "[" + str(self.turn) + "] " + self.title + "\n" + self.text - return s \ No newline at end of file + return '[{}][{}] {} {}'.format( + self.timestamp.strftime("%Y-%m-%d %H:%M:%S") if self.timestamp is not None else '', + self.turn, + self.title, + self.text + ) \ No newline at end of file diff --git a/qt_ui/windows/infos/QInfoItem.py b/qt_ui/windows/infos/QInfoItem.py index be5cf333..f8d63bf2 100644 --- a/qt_ui/windows/infos/QInfoItem.py +++ b/qt_ui/windows/infos/QInfoItem.py @@ -8,5 +8,5 @@ class QInfoItem(QStandardItem): def __init__(self, info: Information): super(QInfoItem, self).__init__() self.info = info - self.setText("[%02d]" % self.info.turn + " " + self.info.title + ' : {:<16}'.format(info.text)) + self.setText(str(info)) self.setEditable(False) From 0e807d84c2e60c1b717053dc00f8b04b382144bd Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 26 Nov 2020 19:42:20 -0800 Subject: [PATCH 07/13] Differentiate required long and medium range SAMs. To improve IADS design in campaigns, this differentiates required long and medium range SAMs. SAMs that must be long range SAMs are defined by SA-10 or Patriot launchers, while medium range SAMs are defined by SA-2, SA-3, or Hawk launchers. Long range SAMs positions will only be populated by long range SAMs (Patriots and SA-10s), and not all factions have those available. Medium range SAMs currently comprise all air defenses that are not long range SAMs, so if the faction includes flak guns in their `sams` property then flak guns may be spawned at medium range SAM locations. Base defenses and random SAM locations continue to use either type of SAM. --- game/theater/conflicttheater.py | 46 ++++++++++------ game/theater/controlpoint.py | 7 ++- game/theater/start_generator.py | 28 ++++++---- gen/sam/sam_group_generator.py | 55 ++++++++++++------- .../windows/groundobject/QGroundObjectMenu.py | 4 +- 5 files changed, 88 insertions(+), 52 deletions(-) diff --git a/game/theater/conflicttheater.py b/game/theater/conflicttheater.py index 74c0b77b..7ae6938b 100644 --- a/game/theater/conflicttheater.py +++ b/game/theater/conflicttheater.py @@ -7,7 +7,7 @@ from dataclasses import dataclass from functools import cached_property from itertools import tee from pathlib import Path -from typing import Any, Dict, Iterator, List, Optional, Tuple, Union, cast +from typing import Any, Dict, Iterator, List, Optional, Set, Tuple, Union, cast from dcs import Mission from dcs.countries import ( @@ -96,17 +96,17 @@ class MizCampaignLoader: COASTAL_DEFENSE_UNIT_TYPE = MissilesSS.SS_N_2_Silkworm.id # Multiple options for the required SAMs so campaign designers can more - # easily see the coverage of their IADS. Designers focused on campaigns that - # will primarily use SA-2s can place SA-2 launchers to ensure that they will - # have adequate coverage, and designers focused on campaigns that will - # primarily use SA-10s can do the same. - REQUIRED_SAM_UNIT_TYPES = { - AirDefence.SAM_Hawk_LN_M192, - AirDefence.SAM_Patriot_LN_M901, - AirDefence.SAM_SA_10_S_300PS_LN_5P85C, - AirDefence.SAM_SA_10_S_300PS_LN_5P85D, - AirDefence.SAM_SA_2_LN_SM_90, - AirDefence.SAM_SA_3_S_125_LN_5P73, + # accurately see the coverage of their IADS for the expected type. + REQUIRED_LONG_RANGE_SAM_UNIT_TYPES = { + AirDefence.SAM_Patriot_LN_M901.id, + AirDefence.SAM_SA_10_S_300PS_LN_5P85C.id, + AirDefence.SAM_SA_10_S_300PS_LN_5P85D.id, + } + + REQUIRED_MEDIUM_RANGE_SAM_UNIT_TYPES = { + AirDefence.SAM_Hawk_LN_M192.id, + AirDefence.SAM_SA_2_LN_SM_90.id, + AirDefence.SAM_SA_3_S_125_LN_5P73.id, } BASE_DEFENSE_RADIUS = nm_to_meter(2) @@ -221,9 +221,15 @@ class MizCampaignLoader: yield group @property - def required_sams(self) -> Iterator[VehicleGroup]: + def required_long_range_sams(self) -> Iterator[VehicleGroup]: for group in self.red.vehicle_group: - if group.units[0].type == self.REQUIRED_SAM_UNIT_TYPES: + if group.units[0].type in self.REQUIRED_LONG_RANGE_SAM_UNIT_TYPES: + yield group + + @property + def required_medium_range_sams(self) -> Iterator[VehicleGroup]: + for group in self.red.vehicle_group: + if group.units[0].type in self.REQUIRED_MEDIUM_RANGE_SAM_UNIT_TYPES: yield group @cached_property @@ -335,9 +341,17 @@ class MizCampaignLoader: closest, distance = self.objective_info(group) closest.preset_locations.coastal_defenses.append(group.position) - for group in self.required_sams: + for group in self.required_long_range_sams: closest, distance = self.objective_info(group) - closest.preset_locations.required_sams.append(group.position) + closest.preset_locations.required_long_range_sams.append( + group.position + ) + + for group in self.required_medium_range_sams: + closest, distance = self.objective_info(group) + closest.preset_locations.required_medium_range_sams.append( + group.position + ) def populate_theater(self) -> None: for control_point in self.control_points.values(): diff --git a/game/theater/controlpoint.py b/game/theater/controlpoint.py index ef689c03..54759d3c 100644 --- a/game/theater/controlpoint.py +++ b/game/theater/controlpoint.py @@ -95,8 +95,11 @@ class PresetLocations: #: Locations used by missile sites like scuds and V-2s. missile_sites: List[Point] = field(default_factory=list) - #: Locations of SAMs which should always be spawned. - required_sams: List[Point] = field(default_factory=list) + #: Locations of long range SAMs which should always be spawned. + required_long_range_sams: List[Point] = field(default_factory=list) + + #: Locations of medium range SAMs which should always be spawned. + required_medium_range_sams: List[Point] = field(default_factory=list) @staticmethod def _random_from(points: List[Point]) -> Optional[Point]: diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index c5232a32..95398aec 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -4,7 +4,7 @@ import logging import math import pickle import random -from typing import Any, Dict, Optional +from typing import Any, Dict, List, Optional from dcs.mapping import Point from dcs.task import CAP, CAS, PinpointStrike @@ -36,7 +36,7 @@ from gen.fleet.ship_group_generator import ( from gen.locations.preset_location_finder import MizDataLocationFinder from gen.missiles.missiles_group_generator import generate_missile_group from gen.sam.sam_group_generator import ( - generate_anti_air_group, + LONG_RANGE_SAMS, MEDIUM_RANGE_SAMS, generate_anti_air_group, generate_ewr_group, generate_shorad_group, ) from . import ( @@ -268,7 +268,6 @@ class LocationFinder: Find a valid ground object location :param on_ground: Whether it should be on ground or on sea (True = on ground) - :param theater: Theater object :param min_range: Minimal range from point :param max_range: Max range from point :param is_base_defense: True if the location is for base defense. @@ -459,7 +458,7 @@ class BaseDefenseGenerator: g = EwrGroundObject(namegen.random_objective_name(), group_id, position, self.control_point) - group = generate_ewr_group(self.game, g, self.faction_name) + group = generate_ewr_group(self.game, g, self.faction) if group is None: return @@ -507,7 +506,7 @@ class BaseDefenseGenerator: g = SamGroundObject(namegen.random_objective_name(), group_id, position, self.control_point, for_airbase=True) - group = generate_anti_air_group(self.game, g, self.faction_name) + group = generate_anti_air_group(self.game, g, self.faction) if group is not None: g.groups.append(group) self.control_point.base_defenses.append(g) @@ -523,7 +522,7 @@ class BaseDefenseGenerator: g = SamGroundObject(namegen.random_objective_name(), group_id, position, self.control_point, for_airbase=True) - group = generate_shorad_group(self.game, g, self.faction_name) + group = generate_shorad_group(self.game, g, self.faction) if group is not None: g.groups.append(group) self.control_point.base_defenses.append(g) @@ -575,10 +574,13 @@ class AirbaseGroundObjectGenerator(ControlPointGroundObjectGenerator): Returns: The number of AA sites that were generated. """ - sams = self.control_point.preset_locations.required_sams - for position in sams: - self.generate_aa_at(position) - return len(sams) + presets = self.control_point.preset_locations + for position in presets.required_long_range_sams: + self.generate_aa_at(position, filter_names=LONG_RANGE_SAMS) + for position in presets.required_medium_range_sams: + self.generate_aa_at(position, filter_names=MEDIUM_RANGE_SAMS) + return (len(presets.required_long_range_sams) + + len(presets.required_medium_range_sams)) def generate_ground_point(self) -> None: try: @@ -620,12 +622,14 @@ class AirbaseGroundObjectGenerator(ControlPointGroundObjectGenerator): return self.generate_aa_at(position) - def generate_aa_at(self, position: Point) -> None: + def generate_aa_at(self, position: Point, + filter_names: Optional[List[str]] = None) -> None: group_id = self.game.next_group_id() g = SamGroundObject(namegen.random_objective_name(), group_id, position, self.control_point, for_airbase=False) - group = generate_anti_air_group(self.game, g, self.faction_name) + group = generate_anti_air_group(self.game, g, self.faction, + filter_names) if group is not None: g.groups = [group] self.control_point.connected_objectives.append(g) diff --git a/gen/sam/sam_group_generator.py b/gen/sam/sam_group_generator.py index b5855750..12614692 100644 --- a/gen/sam/sam_group_generator.py +++ b/gen/sam/sam_group_generator.py @@ -5,6 +5,7 @@ from dcs.unitgroup import VehicleGroup from dcs.vehicles import AirDefence from game import Game, db +from game.factions.faction import Faction from game.theater import TheaterGroundObject from game.theater.theatergroundobject import SamGroundObject from gen.sam.aaa_bofors import BoforsGenerator @@ -90,6 +91,16 @@ SAM_MAP = { "AllyWW2FlakGenerator": AllyWW2FlakGenerator } +#: Used to fill the long-range required SAM locations in the campaign. +LONG_RANGE_SAMS = { + "SA10Generator", + "PatriotGenerator", +} + +#: Used to fill the medium-range required SAM location in the campaign. +MEDIUM_RANGE_SAMS = SAM_MAP.keys() - LONG_RANGE_SAMS + + SAM_PRICES = { AirDefence.SAM_Hawk_PCP: 35, AirDefence.AAA_ZU_23_Emplacement: 10, @@ -138,34 +149,40 @@ EWR_MAP = { } -def get_faction_possible_sams_generator(faction: str) -> List[Type[GroupGenerator]]: +def get_faction_possible_sams_generator( + faction: Faction, + filter_names: Optional[List[str]] = None) -> List[Type[GroupGenerator]]: + """ + Return the list of possible SAM generator for the given faction + :param faction: Faction name to search units for + :param filter_names: Optional list of names to filter allowed SAMs by. + """ + return [SAM_MAP[s] for s in faction.sams if + filter_names is None or s in filter_names] + + +def get_faction_possible_ewrs_generator(faction: Faction) -> List[Type[GroupGenerator]]: """ Return the list of possible SAM generator for the given faction :param faction: Faction name to search units for """ - return [SAM_MAP[s] for s in db.FACTIONS[faction].sams if s in SAM_MAP] + return [EWR_MAP[s] for s in faction.ewrs] -def get_faction_possible_ewrs_generator(faction: str) -> List[Type[GroupGenerator]]: - """ - Return the list of possible SAM generator for the given faction - :param faction: Faction name to search units for - """ - return [EWR_MAP[s] for s in db.FACTIONS[faction].ewrs if s in EWR_MAP] - - -def generate_anti_air_group(game: Game, ground_object: TheaterGroundObject, - faction: str) -> Optional[VehicleGroup]: +def generate_anti_air_group( + game: Game, ground_object: TheaterGroundObject, faction: Faction, + filter_names: Optional[List[str]] = None) -> Optional[VehicleGroup]: """ This generate a SAM group :param game: The Game. :param ground_object: The ground object which will own the sam group. :param faction: Owner faction. + :param filter_names: Optional list of names to filter allowed SAMs by. :return: The generated group, or None if one could not be generated. """ - possible_sams_generators = get_faction_possible_sams_generator(faction) - if len(possible_sams_generators) > 0: - sam_generator_class = random.choice(possible_sams_generators) + generators = get_faction_possible_sams_generator(faction, filter_names) + if len(generators) > 0: + sam_generator_class = random.choice(generators) generator = sam_generator_class(game, ground_object) generator.generate() return generator.get_generated_group() @@ -173,7 +190,7 @@ def generate_anti_air_group(game: Game, ground_object: TheaterGroundObject, def generate_ewr_group(game: Game, ground_object: TheaterGroundObject, - faction: str) -> Optional[VehicleGroup]: + faction: Faction) -> Optional[VehicleGroup]: """Generates an early warning radar group. :param game: The Game. @@ -191,13 +208,11 @@ def generate_ewr_group(game: Game, ground_object: TheaterGroundObject, def generate_shorad_group(game: Game, ground_object: SamGroundObject, - faction_name: str) -> Optional[VehicleGroup]: - faction = db.FACTIONS[faction_name] - + faction: Faction) -> Optional[VehicleGroup]: if len(faction.shorads) > 0: sam = random.choice(faction.shorads) generator = SAM_MAP[sam](game, ground_object) generator.generate() return generator.get_generated_group() else: - return generate_anti_air_group(game, ground_object, faction_name) + return generate_anti_air_group(game, ground_object, faction) diff --git a/qt_ui/windows/groundobject/QGroundObjectMenu.py b/qt_ui/windows/groundobject/QGroundObjectMenu.py index 7f6c934f..b1eabf7a 100644 --- a/qt_ui/windows/groundobject/QGroundObjectMenu.py +++ b/qt_ui/windows/groundobject/QGroundObjectMenu.py @@ -248,7 +248,7 @@ class QBuyGroupForGroundObjectDialog(QDialog): self.init_ui() def init_ui(self): - faction = self.game.player_name + faction = self.game.player_faction # Sams @@ -268,7 +268,7 @@ class QBuyGroupForGroundObjectDialog(QDialog): # Armored units - armored_units = db.find_unittype(PinpointStrike, faction) # Todo : refactor this legacy nonsense + armored_units = db.find_unittype(PinpointStrike, faction.name) # Todo : refactor this legacy nonsense for unit in set(armored_units): self.buyArmorCombo.addItem(db.unit_type_name_2(unit) + " [$" + str(db.PRICES[unit]) + "M]", userData=unit) self.buyArmorCombo.currentIndexChanged.connect(self.armorComboChanged) From 9f078e1483e431eceaa85fc983d6cb92334f9eee Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 26 Nov 2020 20:03:16 -0800 Subject: [PATCH 08/13] Don't generate empty groups. --- game/theater/start_generator.py | 34 +++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index 95398aec..09e2c0c5 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -460,6 +460,7 @@ class BaseDefenseGenerator: group = generate_ewr_group(self.game, g, self.faction) if group is None: + logging.error(f"Could not generate EWR at {self.control_point}") return g.groups = [group] @@ -491,8 +492,11 @@ class BaseDefenseGenerator: for_airbase=True) group = generate_armor_group(self.faction_name, self.game, g) - if group is not None: - g.groups.append(group) + if group is None: + logging.error( + f"Could not generate garrison at {self.control_point}") + return + g.groups.append(group) self.control_point.base_defenses.append(g) def generate_sam(self) -> None: @@ -507,8 +511,10 @@ class BaseDefenseGenerator: position, self.control_point, for_airbase=True) group = generate_anti_air_group(self.game, g, self.faction) - if group is not None: - g.groups.append(group) + if group is None: + logging.error(f"Could not generate SAM at {self.control_point}") + return + g.groups.append(group) self.control_point.base_defenses.append(g) def generate_shorad(self) -> None: @@ -523,8 +529,11 @@ class BaseDefenseGenerator: position, self.control_point, for_airbase=True) group = generate_shorad_group(self.game, g, self.faction) - if group is not None: - g.groups.append(group) + if group is None: + logging.error( + f"Could not generate SHORAD group at {self.control_point}") + return + g.groups.append(group) self.control_point.base_defenses.append(g) @@ -630,8 +639,17 @@ class AirbaseGroundObjectGenerator(ControlPointGroundObjectGenerator): position, self.control_point, for_airbase=False) group = generate_anti_air_group(self.game, g, self.faction, filter_names) - if group is not None: - g.groups = [group] + if group is None: + location = f"{g.name} at {self.control_point}" + if filter_names is not None: + logging.warning( + "Could not generate SAM group for %s from types: %s", + location, ", ".join(filter_names) + ) + else: + logging.error("Could not generate SAM group for %s", location) + return + g.groups = [group] self.control_point.connected_objectives.append(g) def generate_missile_sites(self) -> None: From 5d4fccd43874e5c1a6f1f10099da0c4e27556e97 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 26 Nov 2020 20:08:24 -0800 Subject: [PATCH 09/13] Fix mypy regressions. --- game/theater/start_generator.py | 4 ++-- gen/sam/sam_group_generator.py | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index 09e2c0c5..26fa6c4c 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -4,7 +4,7 @@ import logging import math import pickle import random -from typing import Any, Dict, List, Optional +from typing import Any, Dict, Iterable, Optional from dcs.mapping import Point from dcs.task import CAP, CAS, PinpointStrike @@ -632,7 +632,7 @@ class AirbaseGroundObjectGenerator(ControlPointGroundObjectGenerator): self.generate_aa_at(position) def generate_aa_at(self, position: Point, - filter_names: Optional[List[str]] = None) -> None: + filter_names: Optional[Iterable[str]] = None) -> None: group_id = self.game.next_group_id() g = SamGroundObject(namegen.random_objective_name(), group_id, diff --git a/gen/sam/sam_group_generator.py b/gen/sam/sam_group_generator.py index 12614692..aebcfbf5 100644 --- a/gen/sam/sam_group_generator.py +++ b/gen/sam/sam_group_generator.py @@ -1,10 +1,10 @@ import random -from typing import List, Optional, Type +from typing import Iterable, List, Optional, Type from dcs.unitgroup import VehicleGroup from dcs.vehicles import AirDefence -from game import Game, db +from game import Game from game.factions.faction import Faction from game.theater import TheaterGroundObject from game.theater.theatergroundobject import SamGroundObject @@ -151,7 +151,8 @@ EWR_MAP = { def get_faction_possible_sams_generator( faction: Faction, - filter_names: Optional[List[str]] = None) -> List[Type[GroupGenerator]]: + filter_names: Optional[Iterable[str]] = None +) -> List[Type[GroupGenerator]]: """ Return the list of possible SAM generator for the given faction :param faction: Faction name to search units for @@ -171,7 +172,7 @@ def get_faction_possible_ewrs_generator(faction: Faction) -> List[Type[GroupGene def generate_anti_air_group( game: Game, ground_object: TheaterGroundObject, faction: Faction, - filter_names: Optional[List[str]] = None) -> Optional[VehicleGroup]: + filter_names: Optional[Iterable[str]] = None) -> Optional[VehicleGroup]: """ This generate a SAM group :param game: The Game. From fd454dce746a70a79d1868d914d34190aa72162e Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 26 Nov 2020 22:14:23 -0800 Subject: [PATCH 10/13] Load campaign data lazily. Error checking comes later, but the new game wizard opens much faster by not spending time creating theaters it doesn't need. Fixes https://github.com/Khopa/dcs_liberation/issues/469 --- qt_ui/main.py | 2 +- qt_ui/windows/newgame/QCampaignList.py | 20 +++++++++++++------ qt_ui/windows/newgame/QNewGameWizard.py | 2 +- resources/ui/templates/campaigntemplate_EN.j2 | 4 ---- resources/ui/templates/campaigntemplate_FR.j2 | 4 ---- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/qt_ui/main.py b/qt_ui/main.py index 6d92993f..65c0153b 100644 --- a/qt_ui/main.py +++ b/qt_ui/main.py @@ -128,7 +128,7 @@ def parse_args() -> argparse.Namespace: def create_game(campaign_path: Path, blue: str, red: str, supercarrier: bool) -> Game: campaign = Campaign.from_json(campaign_path) - generator = GameGenerator(blue, red, campaign.theater, + generator = GameGenerator(blue, red, campaign.load_theater(), Settings(supercarrier=supercarrier), start_date=datetime.today(), starting_budget=650, diff --git a/qt_ui/windows/newgame/QCampaignList.py b/qt_ui/windows/newgame/QCampaignList.py index 86ce0461..6f981694 100644 --- a/qt_ui/windows/newgame/QCampaignList.py +++ b/qt_ui/windows/newgame/QCampaignList.py @@ -4,7 +4,7 @@ import json import logging from dataclasses import dataclass from pathlib import Path -from typing import List +from typing import Any, Dict, List from PySide2 import QtGui from PySide2.QtCore import QItemSelectionModel @@ -21,7 +21,8 @@ class Campaign: icon_name: str authors: str description: str - theater: ConflictTheater + data: Dict[str, Any] + path: Path @classmethod def from_json(cls, path: Path) -> Campaign: @@ -29,10 +30,17 @@ class Campaign: data = json.load(campaign_file) sanitized_theater = data["theater"].replace(" ", "") - return cls(data["name"], f"Terrain_{sanitized_theater}", - data.get("authors", "???"), - data.get("description", ""), - ConflictTheater.from_json(path.parent, data)) + return cls( + data["name"], + f"Terrain_{sanitized_theater}", + data.get("authors", "???"), + data.get("description", ""), + data, + path + ) + + def load_theater(self) -> ConflictTheater: + return ConflictTheater.from_json(self.path.parent, self.data) def load_campaigns() -> List[Campaign]: diff --git a/qt_ui/windows/newgame/QNewGameWizard.py b/qt_ui/windows/newgame/QNewGameWizard.py index 5a96acd5..2b0c7004 100644 --- a/qt_ui/windows/newgame/QNewGameWizard.py +++ b/qt_ui/windows/newgame/QNewGameWizard.py @@ -58,7 +58,7 @@ class NewGameWizard(QtWidgets.QWizard): if selectedCampaign is None: selectedCampaign = self.campaigns[0] - conflictTheater = selectedCampaign.theater + conflictTheater = selectedCampaign.load_theater() timePeriod = db.TIME_PERIODS[list(db.TIME_PERIODS.keys())[self.field("timePeriod")]] midGame = self.field("midGame") diff --git a/resources/ui/templates/campaigntemplate_EN.j2 b/resources/ui/templates/campaigntemplate_EN.j2 index 88a210fb..5d721dcc 100644 --- a/resources/ui/templates/campaigntemplate_EN.j2 +++ b/resources/ui/templates/campaigntemplate_EN.j2 @@ -1,7 +1,3 @@ Author(s): {{ campaign.authors }} -
-
-Number of control points: {{ campaign.theater.controlpoints|length }} -
{{ campaign.description|safe }} diff --git a/resources/ui/templates/campaigntemplate_FR.j2 b/resources/ui/templates/campaigntemplate_FR.j2 index 60170f2e..e71616f7 100644 --- a/resources/ui/templates/campaigntemplate_FR.j2 +++ b/resources/ui/templates/campaigntemplate_FR.j2 @@ -1,7 +1,3 @@ Auteur(s) : {{ campaign.authors }} -
-
-Nombre de points : {{ campaign.theater.controlpoints|length }} -
{{ campaign.description|safe }} From 8d5abb877c7ca5aace29ccf568da854e82eeb8c8 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 26 Nov 2020 22:54:30 -0800 Subject: [PATCH 11/13] Improve IADS on Inherent Resolve. --- resources/campaigns/inherent_resolve.miz | Bin 46412 -> 45864 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/campaigns/inherent_resolve.miz b/resources/campaigns/inherent_resolve.miz index acfd3ca0c16114bcd93ab71ab0429f5ec5a9ba82..97ab030394199c2adf3ebf83fd4f5c71ba0b993c 100644 GIT binary patch literal 45864 zcmZ6z2RxPk`#(-X$*8P@V^xl1vana9rNa88mf zj?FnF*&}5B?sHV1@BjZekMro|cAe|KUe|oSp6Ax>TQtYnsE(aDK}AI+K$VlP1bb*h zMdi)RL`4r=adYzacJgpv7&G%W(=55X?H|hUIHTa{m;7C+J?Rb|D4;I1yK{ngP~)inOPn%NwO zP=&)GY!80-;U-aUwrF?z$G+O@D7nKhv#rDLt}^n9s&l_Ug{q}1GCREUIN_IdTBS*| zJ7%5_9tKqGStuN=Osz~h1`h@rsaA}H2EE2t5`{YXRyNy%2Tvs`_czCsuZ+ykN^RwL zqPsMrI30S{Cw{83bgk}jgenGI^w#?zYP9;yT_|mWwz%~MKQpCGkEiO z<_!PkP-O4^MzGYu?@7-+uZ_Sxsf0=Q!{0MV6suZ{PH`XP_F=b7yCAWqV=G z<3Q!WXJzS9=0gx~270#P%osmP&q%XIw1%0P1)or~yNp&1<>Rg6*Yk?=+ic2Q{XO(v zaf-O**|vq8^C%j}KDLsmKh`ecF~z}**6o7KE_b5oeP`B<$~~L#p&4jltH@t(8Z7#V zNs9q%%RSTk2d6LZY?hDxW>P&cd~Uw|t=WI+XKFyO?=Sz**vp6C*H{nv;yP72RA2KL zw3c?^bA-o=@VgFHdbrAj!G%lX8F~i`A8R$2U+%STJ8sNQ1sq~m@iSJNq5NR`o0~l* z{iYL_ALR&>W(2G9pYm%jtuNLoO%=><&k)@Q9|#%c)cT6oE;%&Iy>4q>cCbl{nV$>r zc@SKtP~t%95+=1drreX@+8|lr8x%%^Lp}zb-o6pQ9dKlt@)b?;N*`0twKhW7AKUrj61aUh$M zBKjg!S(sTm>m?2j48y$oL{9P7uJ0|g=yqusO$^T|hHi;`XOZ{M-b%l@IT079n`Ax> zcx6YkyuBmz#O`rYLq3dPwThZiUvp;FBW;bp` zf46Hjt0Vf(ilOMcXYqACY|!16!%y3#!aXL47qgBRs~wXnbj;0hEJg;udZug*_8UU3 zU5jx${yBzt+U-@JC@lxkTi=fkO-C1P<*==|k}KRF+AOX%L`c*vcj>U&C6n=`aJ zfU4JUZM7ISyFRuM6gpqzFtKZvQ(M(u9H4mLFR8Mgx0I8-!=+yF z141W5Wvj5G1IE18U9qOU^;B8uyIu0{yjHb_Vp2CM8FoxAa#|THijHwaATGQ2jw^g# zc+BL_p*!*A9iO;isjZ}hcxYsf5VM!(Sb&EN+K7$hP78=n5KQ8Lfjb-z{5Lc%QYNuDY}u3e>G?qS1PUsA)wYz<$l-ahcI6m@TY zFhWx8Vo{_H=AB?Ev|84fKOB$9pU|!FWY^5Ryeo{SudFUE>A*ZO`HWwlg#%QLf)7_xBshMpH9rY*5o|0b@4DLkc~7%$8Njwo^$Sn>X%C5`lW;eq!+B?!S1#A z9}E0^4ZHIt-~A7ZT9kQQqy-=PThy}G+dCM2i?Mt?zhz(T8Xgq-ss^ok7#OUd_gmld zMM96=#_zI2_V&VR|NFWArfO%5mRr`{s(U$u+suL<`k60U8x{5OC-k(nZSQw3@aRA2 z&s^^cwe*ADp2OU<{Pw`6*1(#LzhLiyyT(dMJ?y|q>46crc_*%6$?bCgnT0s^xE&h> zF=X(D`%51!e9S|>0+$TZSZ=~V6FzTry|NB(5O?6@<0GSzzq(%&IN60?#_P>8A8a4q zt6NgVXKE!yh_bt%`u1N@j)hSE_mL6;o#*fCzu&GQi@v1sNBR`V#c7t%ob(+ej=wa& z*>&FB@Y+ndNzZwU+AVt>@vZGqp}^%ZQq29>b|f;GUnf){;P7E^zux4mCcQ(B0j;k1 z^xn3sl!Ah?d`6muoRo~W570I7uP4S8rj%dLSuFqVApNTP)z`qxeA&CPGilXs137x0 z_3QjWYmwrvM@`W}gJvDGWXScUL+*hDpHJ_SPVQ_ix!?b9pf001XZ6RvL34kI%66av ziD*W$Eb5ZzkAqk7eajrr8g1qYGLhNqmgrqOaXDteM`pO~x?>+{7d+*o&}MzOFuA_1 z5;pfs#zEQM@wP^U6!(jsH%g+!_|+!g$C(ZlF(JKM5*J@Z=Noi-odAc_(ak*Bv?~+N zROVW2bJWuak{V9v$v_=l`u(;-n3epq`EbVGch_JaAJ0o}+7K;7$-SPLaLb`&aQ92| zPvW0E-po*2j=fw+trYUk79Vmg6z5`UcI>(yw6u2YOR2Q36D*SE7M{NJe%F|q?bd|d zPuW?8n~vSrBbJJ}eZp|!nwgc>=LyDNa1#@?LldvSXcm=+!-sRhYl8uYzr9zVTwpMi zfoQ#~ZD-xOd0pYDr=7j#CaO%SIge}ZqD<8Lwky5I;vZcQke9ik;P%b{hX=(c>B)R+ zx`fA>Sg^-`1%7q%#<6%=!8t0eD_+*me9qorNbnCNS~6)tu9Qe!2+}a+n_|3RA{X_( z<4P~}A5|J2C?gRkKj>3IC-W1R;!l3{rF{PEv*Q?we-K1pjfoYwK81=bKPmS!5R5Ko0L(f2 zET5r`3b2kQ!tOMaTcQv}+lA~K1Ce%JH`>pqMcD1i$E(m#WFAdV4%C)L)|J%fSq9GW zUCKu==$quc3Ng6B?fUK*pyZLA!3_;SCm3`g)A0kZ$(n@TXr7=`v3ro)4T{I)Z&X-S zDccEfQIl^C=Dt9q>0sa)Cax89;nkfrjVx=in%nI09Kap{ffC3CR={)2jPY8>v~0+_ zxNdO&ABQo?McIA5B6Z|2$s1CirVG~W@@G@z{~BS4tv?GW$7OMGHapW}lIuoanr( zz0QA>r95jXeEw*#=`knZi_H{qp^ONZO`Og_)FX`d<&xEw+ysV*BvxwS@{mTKU zQ=t!b<|YdpY6}lXzrE~x<-IpIIrcGpZRzUj&LyKn%;El9NqVZz-_9GPxuDVX-I>*) z94Dmr1WN-KKYAkl*GC@Nshv5kq_qmY`7(~?uV1ua65RF$nCIe{YfvLvhY~INnR8AM zbybf3FF{M%hkBMI8t=mP;7dN0j+t@U(_#AB5*Pb;W6COoSWt(*)YpZ_)%@-9-}uOPw1sGPko5)YQ2`F^k}#Dp(W2@WXpS9%Z! zBSrPz7t819mtUQco84P~O=`>kM8Y>CVmrIgkF8$SSY@d~G82F!OZpJ!+l^dO<_Go( zqna=AM&*_uk3{xXP0@yoRQ=JAecNRnn~k5UzpDL%hTcdiDDfLTXm}~ZWl_#JDDN3N zo*e|<`q{B(b7RodE}Oo<&|A+AGrDp%`cvfUW2fDw6LD0W*3CsYNy$4OkL#xUYD=*8$u;_|7+OSzFK-N z$pb+vp_c8a*k?ZJAx&)BwuTlxxr&+kYJ-ruH<<>=>f;(KOK&%6OJNpg^)+1Z1J&X5 zFX500<-m7rb(`u-r|PTR*R64TjL`og9?sT`cpC=l6bAX#PlnNA*}nM@#CGih&o9^h z9`uKIcF21qFo4};s(++AFtqv1)Czgbs79H`h4-apg4shmQnX6dMZt$8B6^$2e8qWLWN>R`5UN{KD5c zK~&LS9Ow7Wqte;it*(zDkJeXLsb+aNg16E-*r8)8A2br!aKhHr;rH`dO?F9~AF$lK zBU$177UvPzC;L!W#==nW@pSBR18vvJ&%^6X?|r#7jlLbyX!u{H!m?AXX(kR7RiyV0 z{>HB2IMFhF>5#-&i?<_L&$g+)(IrK^H|(*Q5T?phSrO@}StgC7iwv9od0 zG$I2E58B67AMNS))>r{&Pu~N{&-~=qNRld@wCA+h!4n><*w68p_m0&IBCS!9@}C?h zHPhAjMR$vMd+C7}elv@uk~SfM7b1-CTGJ2~t~p3ZXg%NgMKiS^E$u69jZ@wY!D~{2 z**|zy32kk42;sP)pKWcU4?`EU4_lRY#3beAfp||(*Dx>gf3>4?Nr%kT#hC7fYq!6#7Q1wHS|^B+p?Gda`(8yWdIeI;=47Mv}I6MW+bK_J+docD{twL5`~f zFT#68vL`LHL?#j!$3;1-#oY2A7N>SHN{QP_9Sm@q0eO_ZH6X&7AScM?s(>hS$WYmC z=`_`DJw(%-s4bj(j91!Y=R9z`m)4}Tw}xaCN^DbLZ%ZVB&V8RkfUx@+XMlhC4!Er- zxX93&?|^Q}&(CfCRg{M$3;+5`X;OILww%je;UQz)u;d0B|fkzT`nruZ^KJk2n219pjFdk&FMf*f(@%|b*uUq zG}}dvg~qfy#rmI?R8vTi;{gYJvzvDrEq)n2wnG@naMrF~lXw+Vq?=OD#hmwGce2lnQmw- zoa;>-3PHGs_FyC{42SNeoB_~S zu(M9~b_3p2BH1*d=(Me~j>?6Jp=V0`$0DZ2Br@8D2!TM7K@h&k=noCitsiQX+=^hx zN716!Zt-QIqDL+_C7VQSy{4v!?m#M1Y={ira(A^2eXsj^g+1mOQ9{D5W#&iY=B}|< zR;(Up#ZvCx+`(U2-PPW}{Ay6Jp| z=SkJo;ubYiCflwKHL$dRE*10&<7qi6j5HN8mYrMNCClQe>p86?LWzii{VVkoABbno zRH#}gQk7H~+9%XRn@5CAdJNo~(_!(Oz$O*)v2}FB3u=rDGw}sA)aeQ6T;!Aa7=qcO zDo~3aqcCeCOvQ`Qw5pav+DYfq@e09~d&sV1OlQ-TSKUxD6cWE<2(QayEfLojwo?9-qZT@+e+x|mx~q5>&_ z-jl(Ek=+7OTJfy3`pGMb zL>VIBw}Tk(GGiGTX|Ro+A&iRoc?LAtuxud-p{HT-&z+5hT@ou^KJjTS&yI+Sd~4$f z;&y*)<9dsciRB7b?VXL&u!QbVp8P`N6hqTldJ&S%$T&7_y*Mmt$|j(yK1zJ^eBqSM z@|`=87X553b=VixC6*Y>%b|e{&v3E`h|hg$>I4fGo4V!sBEUGMBIfRnTPK#850IYP;e)}bTi6GZ{X_z1(zn_oFIpgmSvA>% z?OcLeL!M+t{LwgRGXNM+i)7&uH?cBJE{~DkbY?d5tWq*0g6w5nhg}FWG7EowL(gQ? zv*OdY1&YXiHmxWTn0JhJ`P28EUg%Y9x1?FMWrx#u4>&7&A~vyghfVQBsl|GI7bT zz^XQovGh2$w!Qr|7u9pJ3v2NftNDOx!}(E~!rV8@khbsNaJ=W6^Rc%mwzNPTuV3RV)Ya z0l6ZZ5i2Y)-y#iTrk_{R^$zXZa725&rs^ zTN1R0OPfpy1Cx?)M&<~tIDDbe#xr0Y?01&=RG%O6i)F{uab}9=7^4v0%>Kh2p2>g& z2<+ZyGcf7N#2oecX)W6I?lV8;ARdEa*V;I+vlrnJmZGn6vY0-qX{y7U5Ca#xHPR{) zBow73tz^z8hJ0oilq^$D51qO4^-tA9zcUX~VFabqhtAeP(7gvX3AOL6wWStZ9uTnP zlG zF3{p@16hT`qO$^PlpKm+&@s zpJ;(tXU$#OZ)sAzuDhF?C90!}l+Y-MuTbHhMd+|<{Mbl`L2gENOaPjUPT2@5|F<*P&{s`N*(XY;W-?oV6&%Y(B^Y#Bb zPEzHdTXGn&Syt&cjx8PMG8S;#yid6cZKQo+%V}r?aK7F8VI6MdL`av4sv& z*rTVdEBZRvh=@B7)d&^+)Rtg-jv>W)la+_*pF-v%g~I<7BE$bGBu|pH``X&T4j5Sn zlICPfB{J!V1h)BbDO|`str67)Wl%cOex%Tz~GSLhV@%wU-U_;A9Xbr1FTwt7ua=UxLqDxt$xwthN5lZoDB=miGf@mZN^dq z9anC7N?^5Ek{k%s6W(i-#PfnwEb4rfXXW|h-F0>$ewj@6p9aT=HC8p^xwdh(n^ z+)JgKT&!mQrzD`-O8tC9$E!xBW)6gn<*|K3ubkw2URooK_3xs2H!lG71)!40(cdTZOZjF#S`Is<;k{tn0#Tub48MhkDCG=%wYWUqKit}b$D z4^)VH*TE!AE{}z_1&$>C?rd>{XQkx1$S-J-OGpyQ%8JmlO%9-fa4cwvbyBL$c0tQr z5Ws~q+M^Hki0E3bKc&f&oXo0iZqw?7oqmB-`FXARA@Q_4oxKQ`OYZlBTYQRVkD$!8 z7Q%DTIlf0v((US;Yz8Dc2wW@(RU!i>9(OTkN_Ig5?9HwFr{5R%b$enWMd%h$Pha>j zs1ek)r%mYX-^p6u?P$$bt~gH@)nwyYbutRW3xz9DF`ue9&yll8d{H-y<=Z`DbmAra z2G{9bS=SqBQUVp+0(1Z<+Ywl5U}jSa&dYyjn;~nVO;wFfQiBz}+}=7En;s4 zzV~E+b|iFdd8RRAvd*CMLPB+@0WH+;JaBW{M^z`EV0fTcM%n!pt#AoF_*ICG*w8cM z6aaJj;Q+rJA(~fJ`!8EwdO_|}vYjWHa6P%|%bU5zOYy50mM%aThUM9h;q6@F;nwQ5 z&p-f(O??L9IUCV}6+p%_rE&-@^}eq&ZJ|~?YxD%jcCOP=o4aTH$2%SoDEQQzzlE<| z+lWg>Iejv|cHPO;F-B8o7i7?z5}Z4%1qNSZBx6n_&6x=YE(UTTUA8T{PLuQaLk-*w z=w$#z?>Va}l4ILv*$TW5Kg%`CJJ>U!kJ=A~Aif`r+ST)hRV`*XaQ#Md)LS zLuxytFE@zIzCHx&-R~0%6;m4cvA1BnE%a&EV0a&~jGV*ZH2Xd_?>Y|}u7wYrvW&$& zBO0ER*-$EuFyiNVEJ#Zz0r=n zYDa<*5MG(NH(Cx_3FzzOE3onR2qBW+HQBB;;4WIiZ?tmY#%lsIDLw;|2+`>jpL1mO z5s>s99R z@p3n%p(7VYeV%;wwXc^lZOH^;j`;Xgy(vY&4ZavtWPvGDXYjdWq$e6B%B zr*mey=NsnI3N#xn37k+g_z`QGX+U3~;P_1~kJ;3>`(uP*x=?|_8S<5(fIQuWiI3-t zf;a{hr8^W(b|}a;3o+j20HE9;@J!|bWYun`Q9+DOL+o5TW9xbVm>&cbv z-kUesO25ax-9BjjwliC_fdU3!p3c{l;nZYr2pR5Bz(OnCRax!)1W0BXtmpT^{Fdd* z(YL#MU!7X-cy*PSHJYG zM$oNsLW+#;8>k~AcLYw{Q5#q(fw&W_!)s-NI31QysPlHf*aD(q4Iai4zFRL)AsRuF zg)F2K97$bq4i2>j&#zi9C!DE6Ct|9fy&4r_H*l#KInJPYm)=GF z&b9aH0~iR3*P0PTgL{NL1>ynj&&P<0eSGkPh-)r_a9{{{>5ZL4bdGSDYJQuJEqScNe=TP93^!l zabFjm(xhZIxdHRkNINn(q8Yp00&7rS{3*f5OA}WCjDdan?$p>}{- zDQ3V@B@h>V7^-!y2JY)%xA50K#GpBjH&|KU&@ zsHTfmfBMwzg3k1=|F$K^sILFx0$V*c^^U22+?BsBM21sb2-mU`>ln{^6(oydqQL>Q zP3#?9YvgcEvbO|`l3j!TP>vjco-ITTXb5S3?NnGjYu<@58qWS9JCq{1`3Oo$8YXM7 z46tCK#p$22J__-91U=WE5RYuiz~s5j{)CudE#oU6`^vTZ5}Y+6cKAdPsz6%d61uH= z$x7BfO#nghi`nO7U=<)Km3<(^;jm2nnjVHcjsoa8a8_E3dJyMGS`06c``FfB7Ov?u zs2CgVCIyB|zB2{V+RYLOmt?K$JP{5?rR@Z%e@QJ(HjoZC%8w&1SfqV2!V=C}Q|iv% z+SNA*R0BpS|Jln|{Qr5Q+K$g_1*V#>7zlHj(UWTgYCU=kM<+># zqNhQe55q{3>zENGexz^4+7+ndS!*z*j@_vdU!@AENFZY#_F9YM4I#MAo-DUV9% z8xVnb_`Yx_$c&Y%I9`{ab5p<0sTdwJWm^T3aG$cJ2b>du#IRNwr_|nJ-E!toWa0pT zr_2p`_MFX2XnA&FfP#&D%99JXEzM@QRAKSf^rs%P~xxuM&RV zWUL4)cz;txRO621LSkI!&q?hr{knHQ$9}P|D7-fE9MG^YkdD;87+{(9S=6Qa>ImkR zP*==h`M`q>{{glZ=o^vTT9MrMX&>(3^4%F292u_OJ)IKX&DQ@;liMuE`VXk`<>OAx=v zI$2qLl>BiD11hJ6JoYq<*z^W|(r@|5k2cWnr~9A0gx}->?UEJFTDu-)4HfBt6iQ7R zd0f8LW-^lw1?RIi6C62T48U+8+m5jsWsQ4(^H3jHtlqXxE2F~ok~3QxC`;hP7M=Mb zVwIatKNSolCb_dSS?6Q4OlU!h=U`7mHrlx3n*tQ1Z-~xEBTlp#{Dr*mlQO|pLsG#%)S$xDen^;Fb@+2Q4*(# z$RTzgSn)B&m^9itElGSG$LrRTqIy0Gr~nFklm*{8hom9Y2dwyXp+y?;hm15RzYgA6eFne5r!5h zz@|n5gEi0!TVE;C0HtO`j)^=dYEzO~9;8Vr(s^uh0zFDptcD#GeJP%0!1;W{YFTdO z(_=g(u|5-?XWZ^BC^I1yyg#k8G$`6dv2?FH+YJny~ z2}vCd%4NYCJS4gtAJcQfX0L^QEOEOhC_TKOTEG`YnV;%7aXau)cV&Jjj`<;)9&xJJiel({}XMS z{^1jq(K(8o4T%GW29S^vh(|LlHjAvYr~=trjHCeOQlzs7;>%F74FV7@^gys$lNeyx z*0qMNnS*Ms2>#$3m##tZkXI?N3P1-V4;Clxnr4k41W3YkkMSHqF9M+v$KEW&auR z^j1@Nmr^EoiR=3_*U1MmOP6^6p$7`019Kvd%;}EG3K*AtzaMZ1yJHPaYgZk>;6%J5N?MCp!bZQ@)SiopflF)_K}^8XkO1hcDe#~&U%9X+Nt+Lz7PX4GU|QM z3h{ihUujjHavGa&V&aE0^T=b)(`|%Ol!|-0h9M>c;P8t0Z&m;Ou2J%L@B|-ODH28M z=EDm{kxo!<9s;iUFN5R-4&u?i1C~FosaB1J3fV#uQCj2o(!I4Q7D7EokKvht{YOP0 z2Kn*CJ&TMQBU17Sc;RV@z+@>nWQ-3FjUpZYqcBM9vjH_;%S`>IaKcxgLnT49$w=X6 z!<4%W_k4|I<^Oqd6EIc@4BkC}bIdNUjixtYXwjno-QvpzqjiG7IgIE8z~hL?Diw4l zvJnYIBg#ZB+VZ;IfZas8Y71+AGdTNB8gmJK{+}D^k3yp!3XWO#4_xY;gj3-uiOGzw zmq#n^-uKj|_-7E0i8%w8cMArY#=aH`1i6tjJzxw`1iZ>#%Yc13H};*J_Sl-ycGNveOEp&s`D+R&1jnF_|B`xYz>o*j*UdWMf?CMxW7Y$qu-LIek5O0cqz29Hl5ys z3_l7=8X6JAJCcUx1yrfynS8YQ6eReK3lK72X!(bp`g=(Y|6BsK88gTZlBDR!m>ht| zCu6yQRg^k{gE5c8etGR{-EeE<6tUO14e>$^^LF#1pFCU88xU|B;dukMjv{ee;2_uS zhaBTKIe8X+S1xhS=4YkMdvdX`(X;|%X7qR~9UvPOVS9e=@=H5FU%DEG=IJejP@Fz< zYlZUD5aw2D^3jI4bCH?)mSaiH5Yu|HRw)o@w`xc2Hiy)0i5JWvod9;*jSS(fc_Kk#sFA|};IqF?s+}_z z{dN3Om&EniJJ)&5{^ve=KpfkHVRfCjpffqs7F3QFS362V4ZLCHAoA-RTn!Jz!`up= zaZ*8I07|0JOEG&+X*rniTbq1vKQ;2f^LL5iCHYu}zreI0W)QqH~Ok z$Bb|^ReK0!Imj>F$z_qTK>Mx=i``xDV&R$i7SDwMz!R^`$b|}|REienBy{MrED}u7 zM~6-&S4HEhrziNhGQRh?Wk#*E0(1A#G$3I-I!PZMdaFRTK`N1P^Sgw{$N7_X36ZDS zf4`BXoqeyuJpMbE@M&%!DEnO;Zxen68qCNqw~G8PZi+Ou4QBuz37~8`Ek~N1F?AVU~O(dH9ZM2upc6(3)rYgLa^`~ok&vBmgldL-6q(DxB@o@ zsT3|FHu#O^RMBkVUTo?9&!zO-Ozd8sdVBw>!+U^Gpn;Ze7t!_xs0^x=r}jTo6A zIXslkaPWkYBDe@)=lhumKSpjz=KOfW%-O1&T^JifC_EtzeFtndn_dF*>{T;rg=+lM z#Broa^r!qwN^9W8Q)556ko!L)8mka#fEPov{^_l*@$_iX4e+`!8O`o+p*=O3gMZA3qNBH`E|=yxLc zl4*;yDrtZ>IXYe>U`!%V@}dZuKU_;H2p~Cb8L;Z@JHRi%h|q7y>LC81YY=X;1l*Z_ zy_%IwW&DTJD!W%M7L)|=U$HcQ(b587UqUM|pULx>7Kn>EEgt=%Tr1UjIu98r^)w+S zQu|{x>Dr%IhmW&j}$Oe0nLYeBzP~BQ!ompQPTifNYjKlGijVs z*Dmc(hd=ojDWF{%k$=krnApd`Mva)*;ambcAzB0kMXOsErP;Szj-&wl`J2oX{3Zae zI0n8|>L2*sG8$3Db)*icR~J(nG=c-rPllv)@cWE;h0s|zBoCFDn+cIeCqN4Ff8m5R zW&ikt-1G@RTCZO5T)5!i+IGa#6|ErJC&2+&|KNj~8Ac;K1+&Te=(j`H|`FfcW7=|SFqSTvr`$(S}| z;(w0K{EeTcp1SjIa1ZkjJFWsy@whvjwM6jOErD1o5!<7KdIl4rN5Uz zL&hE;8TYHC6Tta`<}H$K!4o(@&b(4YAWrcd^?Y!u>|}E3AAid=V(_jc2Do2}iAe{# zCbSI+ZcAWTNVhNi#Kw934;F;L$>3V)G+3A#4G=+;cJR-G4RqjCu|F739B4!UpiZ66 zwDoKAKB0>uO{N>A#oM#GFn_#%?9W&aBfTe=$7%Te0$Mo0H~`Ry8=wCVp_kEtN5p_b z0J(cGd4fT32|Om&^BN4Sj< z{R$}Fq*ih_1B#a#t!zm8*yF7&q2u4_-2}Q1MTgiK;!OG9`2rY$a?Bv73%L~mz4X3T z7r>zby?_xot^7HWEC99px)n)9QKy2|Ipiv7T#d(RBg}83U46txTSNjJntkHJKo%FQ zp5rtqCp<=OxwjZ=9$M8`;;i7QB~ zkn#nM7_5wr11}cC3P?n>G8vDCs)!obzAwwpO@G?-V=^|;k5kj{W~v>5tMI2S3&6$! zeClXRD>Hxz>4~<&NQ`74r!c@8^8R5B?OX>1NG}pFJ(NSb+%qU5@F%y_eg4>UNv=k= z!f#QT(EK}-Ao-1Dyp_-qzYVn;y@ulh4y^R&5SO1HDg58p33lM&_9|}=UEC2DPQ%3- zd1vq$#(p-@zq9In)?HMlL&3%C*ss~&vvDsec^`>N{R{^v;?*m5;0sb5kY!>EK&`(N zI3gm?Bl7-FjkpUSk_1S$Tz65p2kdo&3!gvRX-~VYe7Pt4Tp;?!BQVrPC{n{gL=mSbqlkt}QLMp09j6jdl(zh3 zEZ5``Vm{oU?bGS9si#tY6n6lwyMoJ?B{u|h+OgjVW*DaQq@=$mahesQ*Y z`8$nwlF3*0a3Q8U=vH?ou}u>WdJ4BTUrMmO{?m(H6{?nCG$3h~kmgwmxnJV0aP^`I zCqjoai0NO>(H-Sn-$d&gg&>sDeTIznjK;nwMVd#%st@4K08Eb!X$R&<4Fjki&1p85 z-e@IEKh9P5!zA3K$b~s;la4F`;Q#1Yae$yz%mOtzz z06qQ~hp~u=z1xX1#Qyn;Z5)e}-HCO(z#h^qBEQ@M)17{S?yS0EfWIgFhl7H^Hpv{+ zX`Uech9g!U6?@**{Jc3)a>f-rJW`e5(TO__*j9`T;YmFKP9h~o1Dwv!$)U#r7LlS- zPBWRZhB;67abcLuBOXe}^{a6PHw=Kb>6b}uKS;)3NdB|STcKw&2`A|80#8Q(Pe3{m z8wp>kGyn?HREOB;Lij?s^Rk7JLTb{S<;ia{2x|f7-)BGn7?gG<-niyRgqK1ff7`ta zm?pFig+8tngua|S7A>c1tEP&9yKp)ze7gW!t4l$hODgkid(bPQWG%22n-0IvC6FrX zI@Z4`M{h?XK=YZ(i$=iv*t7O9aJa9olX{Q5j+8)6OUsvpI0&tuY#6F8mCBBa>xw&# zT|SmpzythQjmpkxK%$etB@jgQ>A^w^w4FMTDHZO!*FimW>@$_rqfx5QXG9H*s7f#} zCt2~lI-$8_=Lz=Bn`Sy}>K}g~VwBS+$;TIW5+c8qmfvF(uRn>f>6OqWaPbMRRQdgA z5p16eU>bq@Zg$KOC@0X-D|q9$yl`||V1*i2m*4|ob94+m#W8X5shdvcz%;Z1c`U98 zu~NkphXHd2)FSzE4wN_?$j@&M<6lmZeqvbhVl;L&k#%Vb2j3qpP*XNUHGPB1D{u?r z_x#<>fyZ{cdUF}cz#;b>% z(rZAe^48X@=RI6i02f?rTaqX*EV4Ba+@9cPI5oF>`*3}AcOBc~+oA6fw;?gy2!*sy`L} z)4adZqn(rKAVZsudvNvAotwTMggA0NIhdRp}N z@6k-I7uv42vV3THl{d?rRs8$qBg+Ot(A~E!A9nla#}^ld>ru>I_{4f@|4RD1=`@29 z?8{z_GpX{EXVVTJKTM?FkT?2qrVczrdN-ik`XZd8$Y8(4(JkSw1pGcRCE|muN1^oo z?!0p5^25!neCmSYw)xj_EG+dXVXLj8kJLe#mr0p@nyLvw8?IY(d7&E$1Ll_rMfCit zzjj>%?{){zZLhO>>9vkIj=FGvZ<|v)jJuswDhJQIrQ4ZAWsD^p(aj>{~eN~+bP4Vp1E zJw;ZLzOL{+cb|ZO2P><&b9tKK-23@MZ3R>nGEERV z?m&r8XMEY;=e5O?>|Kfb)tiDdA?@aYCaH7q!5vH97v%pNW66DOtkQCHmsxpfaOR=O zhBofdTSeu8zkG{;e`?*kEj^9bu$?l|fs~${kcJa)^lBW~=|YBG+}5wZ_G{SHcCUOEkJ$kp93o4Ouvz`+8#j)QP+9CChh?BIr{hN-Ah&s^o}}V7ODMgI!&~PbGEU^( z*KjD)?;+%#-%YU?X0{l1S?Fc{(W{ZPdAqtS*79yrMHQo%#G#b(Fo*K+kDix?v3z!M zFc0;(&C~>~Ef9TQo(|38wBC%E9pj!p&Y5>>?$mLm4{ya#DU=5d z*mi%Y8_=-wao(!&@NwqkJ(WH@Uz6)G!9kJKS$(X#7@G+H(LcU0)>-JLoIXsKKK!G< z)AEb|=!gB5z*+fA>OI%9cVVGMUOjC$o zduLS5E+af!d#*!6k#nZzs?*d(WKn_aC6j{m*fv*G<2vFPpQ_zX{5O_pjDEVUr{N7)0fxD8u**FX!ZT!@9q5npXDZpRAZi5TrtAF*1!MpYsHM~_q6L{ zo@(_E1hErJSq2K~Y;7&x&&|CGM~86SxmI`0^s-?8t%^66=Lji!dlnK0Qs3jVg8l0c zw4BcWim%tR+-q@Bnu~WnS?PHA$$9GcTO%;1nQUBFTxT|I6N~>|(`!zW`orX)c+z^Q z))tjJhqv6V*Gq`ms4?lC>h~|bYtpJ8@V~r(&3kfr&v})*NN*Es+uyJ-VIaM;{PBEe z=t@-0`1^U`RT4{#ctR3O`JjC1+wINi*=8tLgXV>77B$d+>?WHHs?%TMa}KvgUh^-; zE)SpEdvImQLTF`lDS2d6cXwuTJ3Yvp4&Ly=A_fJ8%?_7gCx0%a@ zBl00L2{Eqft&6vUC-FQW=yt)cMiIHKxXV4ec`W>Vi#m7_>k^ZWyruM?KhrnEVt?%) zXoUS-e(08|tEibHj87PMWYS9Vv< z{O-KG9$a7Url2-juEshLSOOT>%sLhfwON=1pw3fyyvsI%rTp8AjViM@9k8hdPF@To zK4PJ$3txY)Ri(wdSxQk<2EB)I0$}GghK7AsLB+-p1u@{+ev)4Wh4STY!eRd>Es71@ zrPCY#kgmuIJ7rD9-nT~t)DZULrq51gGG%}YS=Bn1J1@Bmf{tq>hArXuS05goZO$el zjBSYUofU=3P%_Tdep9b}vncz&q|MD49S~LS|ByDpA?=&U-k{%Qmvk0sJcu8n{SiRmb|r4fzi+K>JHO zLF{W6iU9qE^OZsNMlj6smqFIa^W6~-iW-6NFFSv2xU6q)cV3?J5Xu@~&{9HC4r6>Z z($@`sGtJmCP#PTs4FVED1emV_UTp*;7^1vI=oZ8D5#UWDBFe&kuTixRjS6-^wr!qITGtlXrBn&o75ar2O z-lD?$cP6|&7B;|i+d_xFY37$PMpt5j zu#&a1()`Y{x|kgBmg{5Tn^1D+K%aGwx9F3GZX7UTgnuuiq%{iwkAh_2%p!{-To&bD znCactgcbG(#3JD!6P9zf zQlyDx*GX)Hi00^ON;BKde^c2uCJ})J#PxQ}Z zgTm5^@P;i#KnRNV6R{#Q-MzZ$Kz3bN^5>t8IS7E-+d^s0je`Es2irq46kxS}qeud>ElrN()!kbjKCp57<9h=e+W&0i7OrwzGw|DbHC?y^;X zFT~;~Kl3k(d2e%O6_oA>W7+)8AGL?)vf9~KhttZ=J1Vx9e*V#AtCp1OHGsI+7RGd7 zV0D8{jq*QWPs0|4i6kt%36^RaY~ist*Rfvz&m!B}^t6dk-8YJJtPcFIT5qSnYHhA) zX)6Vg0C7$`mWLB~tq!5B(e*~b_A>=p_0xZfrE8xIRejrBruUJs(*w?{-5`t zcA;=kN(;YLrHTE_LQ$hQY-MPTZWe(dD*q-60~T8`ut&g=I9Ap91!5H|r=hU={M(Jf z`E95l@>q4WHC;{eUy9P-Xbn<0<6jmxoCd=}i$;3WFsxh>2kRH;Uv4%Cln1U|*n_dU z|AO#}@lCvU3`}O#+`8GNe$+-$QGpC*E|Z7}MDBo)A2oQM956+!8p}bTg*F&uhYv^M z!wqM5b)Ornf_*ppFQ0=`X&7A)V{DK3Z*0NvNHKtYpmT!~kem)T2O~4E4Mb~cmJmDn z{pgucpj?Ud#^T?durV^MS^`Uj9}Zihi$reopGnd5k;wfknH=l2TF9l{{l|8N6+;?q z{uD^1JD%(%=T*v#n9qLsp;_yfHlX;)6v1;-#SxCvIQnnNQBWv28FpD+y`n7DCcadb zn@sXcFc$1WR`FjmKgmgO8%mSHhXDzz~@?r#-9+JE#VCxaoQGrzfwjr>BnO^ha72rbek zz}ie;YHOpbFjUR8gq-i<+GZ!-O20&<`_xWO(bDqEUz`2XG`QI?m_w-Tw0>`OvMrFc26Lp&LNj+~rU92_X4Uu!3GAcM@YPQApTiQJ6`6hvTU#;7o1!wH40qR5 zSyK*+Yv3d@)*M&n`o5?lYEthfViz84erzMC33|2ok8X;fDSAR~Q5e!Adt-z6i4@q5P=3SBh- z152qfa{q>fuW=?j;((2Bi&K*=WCF5m<`*-kAS7S>&k9|f$gE+K(8L(>tNC-B5${a? zvj&^%ej_HnA$8!MCc#?rn>eL|e2a!-W|^rZPHdnF`J!|zCG6cwnMtmR1gT~s)A&Rw zxz)QE#(#xH{aP!l)z7DUHD`Ft$eVm5Tisbc_^=*Hu6qs8O>Z8p?`|u)in{tB7;^0p z`j|L;`|Eyh>vk_V_h=|*l_W`_nfd%Y?L0+gTftRN=(#%Sh1rVwR!|+G6CjYJdGu){ zKC}tmOM$8%)(>y7>&{7lgP_gV*UO=vX@<-;J35APuhA8UKnXXtFFct<>D~!I z!+MJ{I$KUHk2L=H&G0wZy6trB&&d(;@_i6jvxLTMY<*EW``yDPQCjPE%ItaOn^hGW z`$IukqZPiEdgk1oOZ)uWqf;sa?Y+)A8Bhz6-MtxlBjTQKHoYmF?l5+>J1{<5C%3eT|z25BHE#}5j8ip-8hxLf`a^aY?)pw9VJM|k?j%D z@}y6)r<1iSg_X~fM;eq*de~ZiyD0rxSuvh;r@ZWKV;&A36CH)cReyn*+D!w}R9oiC z;QrBu)1%b%>)p6hB8gG332u1TaNNx(;@;LUvmf<}?_xJbaPA-jSG%i^&#mRvMo(FF zxTo*k*8SwpVT;x>z~_mrEVt)oW&iB#YJKbbw0bn6TyU+pe>*8#EXJsJoNKfoQ3S@? zZAlA500fM6@;+!QS14K{?iMPsmt~Hd1JU)fHXw2A_@u5gQ*p|H!MjrGda-i8H@+g! z4xJ11>=-gwJG~i>HD`Oyx;&q385V0?ygA4nKOGD}w{fyiFJsRYh5Eb~4t5zQK;;F_ zFRh28pJZMOI9VhSVG#dctY`r{N$ork{p5tnej>YVu_Z$n?7<5p<^@h>XSBsb8b!fh z3i+z~$;?GGIt%=0YsKiDq#<>GM56a)eR3gXi4vYj0q z!`=6jE=PR#uU8q`r~CIL%;PE@B{a(hqbi50w6lnaNk;6OJWKkgPb<^DXFOTI{IGvK z*uEb;P;I2qd%F7DKh(j8XASXb&6GL=+A^%r&X*+%E75TreLcZPTp8VrX%=-}BHW=k z)N&40r=I2;$Z*~OR7SDz^6+OZw{OdkwJ$tDOOwX++m~0sp3lRT000h%JAA2P`vrI` z*1E6q=;%(@{Nqz=_^TJM$NNi_UYW45gGwBQ2D|=-N}tm?7aw2f;q@hMW&LsHE|ce} znNOye{Y%ohMa|1aH1{>+02#YsY-VfsVw}?PvH{>Y$nNIxcyHpnw>W(>zWyMa=JtBc z*6|cy_Sw5xxAGE%H112Ue+p?`xIBPBg&_RC=g`&D=d_h1fZoYT$H{XCR9oZq%2CiR zNoQq;kmt?g=n*d8%R&V-z2meAj86(!L~*z8x@6w2-Gg>?c(vOAR<2dY*M`Pc+tI=y z8{sQi4JW&5%l%%03&t&%7bmB~Nqk^uUv4I^(;)O)p{VHkBQ+*w_fx7>LEm$;mQzC) zkYmFcaJYFMum)aP(}SFzw4OZQx~$BtxU#yIdh(4oGlR#%8^(RX-h9xg6W7Y!*}eLs zs9J7z*R8Df_ADa6{E4pKMJ&Pj(L9v7k9170L)RZ=cdRZ{>-@2tNsZq1w)|NQ%@cZf zG8WEQCd1Sg-XdMd4RD2BKr;wwdKRrLYG+!Vx#iHQ|8X(tA$pJ5cky9>sjcun=RUfv z;%upX3H<16PG1Oq+pfx8lV`W;{b2Sot5E5qDZ2Q0qLN0Fx@YS&Xnc3?<<;2XdUig& zsLE% z+O%4?*jk>}K+=+#kbedzrtAWKth(_jv_$JZ-LIZbuk87*t<*H!RCsDAIkn-FW{kDB zRbs#z$oddRk1_STaWl3iX1QR2=7}*3+EpF*q8Y8m()G?B>7Ry=j*<+ahdMBO(iGda zdpw1QMN6Y$<%f&s1gjgAd&`ouCWGb7T(6H63YhP3xZdgL-gyo9u6duk?Cq?LBw`O; z&bPH@7{l)HtIuN!P@$JcCxJ*}Zu!P+oai)efm?&;g%$Uw!=1EO4emPQd|Dp)ZKOlQ z-2AtatH=DF)uT4T!xg@R+~D?wF+ja{^+np##T_gLN(8CAY17g$4vJ{~~8IwK4%&)QqvdQZ^-_%xrW*_tR_9T0@AEvJgZwfpP*{;E6FX#dOgQJiz|zs7Cpyi zw@#(`N28~!YYm<_+ndD8=?=gQgl2%w-7;E6l>BW+)N@;4`5` z;q|G@{I6YzaeLC~>=ABd#mm|C*eZAr;iOT=C;zGCI&tkRa#08p72R$PzRFtUTx*Ox zpX~PsW$Xm|epXlao|lBKxnw>!gSL*%lR75q8XNdV2`YVGPOfj9S;q9Cx;>GuFSo}h z`}>s*ag&n=!RICbIfN)chKsRi6hP=_3(2gL-AwZvvo-#`K9Z^K^0k%35xyfEnRec_ z*WlPnzfHdH{^6KgY9U0{dlF2k#h5~Zf&;t z;c}WAsvwlYSy!c(VPjlgHs9b00h!d>ZG?L+kH=Qa+RF6%HRFaKx!c`>e4c+Csa-ZU zA2+4l+w9#BGiHo8*d4geJ~BN}%?l)$Y~&G^UNf#fu7tCdwOu~UNpUyI_GIYJbK`u0 zp3qiWGBzBfaMdS*K{l(|!+VAO)0F#b3WL|vX_bYrcE(n~-3;@!cz%cvk!yMAU4N<2 z9FS`BN|sO?>wJ@I@7Mk2>~x2X`QBJ}K6CN>go~P$#UM+qrS?wgNomY#^Bs0B;v7FM z1Ox}`_@%*13)s6~Rq*8V1=mz=HI$AqEnQ5PHURXWZZOqsnwsM%y@$1V2;DZO_TE$+ zKi_z`3~O^an4UHRqRmKrjOV9N5~57UMvOGtg8C5%huM9VU7anTg!XcCYyE3sPL-gZ zjrwG}f)(s9AI)gB-nWoU0X--5t}!YO@K^p$=VW*JxIp&&cnf3!=OgoQMeQxSrbn&J zn*p0^r-?v94c0f_qdmH}uUVFz0hXUfr`HO$#2aK8lIFd}$;p|y*eSL_20;O>jgF(; z9nt6=5%aZX8^YkUmrW~4ZbYq!Z$#5z zuQGFGZkJ|+xMgm&My0>^v;~B(?z`b8SLQvzci8DI$CSf))@xtIV2e+RdsfV2VXVDm zSVq6OsK4H&-lyf}{yA;!*2m-7VYsAi9@pE^xs348p(R+53{5#+B|ie7d7f=1Aov^2mTnsj(h|* z9G9E)$Y*yNXgpI>S_{F83p#p#+*U3p=d&(sT}ArNH}JjiXFj!?dOJ^}WL9Q9x8FK| zhssN>GPyVFBf7lQOi_1hkMTzG5h4n)xJkQ(4;H}J^%|G8>e7DyyE8-Yssx+5%W7jkc;=at3%P?8NYHg{~o=+^i zwD%pm0n9(fKq8r#YHu4_dPWKZrraz!WJG`7@}oHMJoN|B*UfivU4O86xu)`~2zldbkSJs%-QLLotkX+J-R(S#1;|;m1Kuj)?E0Ng>q8haZp49Gulg zAZFv+D&=HOP!`X(<*N4&KhqJgd zCx41n8GpXJ>=Dg~ld->!)8W}olJR*+_IjoGzqV*73cjKx$Ap8k4upflg>BJb&B|iS z{7p<;L{(OW*~HS=3ASH@p@Vy*?ur#@KeqR{KKY~0WCoO#G*FO&BS1+~W-2CFDWVFS zZc{@%Rz~#TMUV1^m)Czc{X7@{1mJoz_QZ3W-ckwB6IfnuZ)=9$Z${&0J>AxZ_xrxM zofr1MJPluuGk5sjo?Xu>%rjdJ;=Xw4oNa<2IP_YfpfJels+Y!8^s}K9zAw#_!=0%n zGm~Z()6Ec$y3X7A{ybXn8EL zA~9LDF_&$>5BQ6DUt?9Tk{`!ru4xkk$|j}kyQ|s-2bTt?spGD#tvzqt`VWY~`R^GjR2*a$}r6m8L zXI_5#esgrTl$5!>t^MJN8v=mf~o}Pts^}*G{{>xzs{fzTwys0ePw!BiI@a?BG+uI!M&TX;lI{f#7u9Dom zU~`B}tv2L0uFW{Y>92=li(yYYvxgnj7IPhKu%z<)WgUW++en(VPUCv%bgRzA;z+6* zBphu_&%=K5@sl5*qa&!gD>uYPYPX}^=f%$TdiNQkek;_DdcRE^SLuMcmVv(NHqm20 zu%!X)mv5s)OIPL*Fv2^Qsmg!T+AQ+q_{X>2`A{r*g{NJ+bd4oW9lPqW#N-mH84!f;w6~o6*8?|ZAy;IeChY6I~tYV-# z1e?_>@-(B>hc@-P`+SlQv_%&L6<$7&scowg%J0Bz0|t{p;ajx%$J?V9{?_F)kHVew z8>xscf@Wm&1QSq6x+tX#*!_c+vrSC$cN0T^T)PHeF66*6PE8dZh7%d<5k3!gwRLN* z2q??eA}e{!+tU3mZ?hb>`S36hxeO<|&YLn$2Ph8UDl~?7b!+Ee_fFt6Qw(>(GvD{`7>(CNIq^HqZ^w`c+e9{o%Nwrel5(P&I1~K)Vj3+Y(D zXk5ODDd4vtvQ=g#OR-@zJ}P`u$r~4rh3rEmVe-4NpOt)jq`4FQi@X*~ZZ0vsu9eeO zY2-;^Ybv&E9CCQ__n9MmbuuY5-8Ag8m?MMvuUJT(&dPQZm_j>eBC;&6MH4Cam31T{ zBX5F8E$~IO!U*B&2)~9(q4sPeIPp

^A5{IRUEketR{C2ud%|<`w8GaV=O6;UK|d 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�$Ah{6oe2TCcVFBB&$SC2mNw-t#e_>K1`W3d2>=R@cS-2tFCdzPxk?&QM~Z&31+*`{ z$%1=lDTzylW!bj%ZS{n}VYv4q{B!G5^n@NBGNB;9CpRBEXDmZkT_Xtbronn!VGv4& zeF5+@zG*mB!4>t^@=j|!rtEM<_8=?jn5Q+FavMVp701gM zDi2yMn7VV5!B>uT*(#MR!Jq}7rNeIbb>Q`>1$gnfV@`uX%9Rc;<@2d3>B@TlTRv5u zZc|57`7b{8iP(v)RAm4S9?_GD0=sI%p)BS13k4Oe>Vj^k9wxVjRV300siQiOJ{kwy z0;?B=Hf5&=5%z{*wNmIdZfM>Dj%*lns0x=Y147C)wMB_mMr3t{#R@hZdD zdexpkur(2=8RDxs@WT+J^jI8nJ9yW! zPJq?9NgTQQ{A&W^!TOD5)5A!t2ZuO?$xN8~PGE3#X8H}|4}R&^%yAyV0#VwnXpyh1 z?v%cQhyy<$ek(7!zY8ap55Dd(vC@v1iW-Xzosksuc?*>TO`>vPJ_AC7wPRDH;^F-+ z+G(E+ri4)PE=JT}LYvbV8V8G+IGo#=%I*_S`r5y*S!-4qnKs7&%@#<$s!Z7BV(`%? zdyI40txLI9NP?H%fHQAv7mS+#!pxITa%M&>3;M?sRqE91>QO3m=>@u3uHc_wLnr3g zSKpy}YOWi~Pn0C>3Pkhx3Qa8^uk{+M=A4$+hhQ&nixrA?LYDo%XECa28TOxd;28&o zduM$Y1+n#cMqxFMtH@G5cx?_T)rQp%!xDJQ63$&pH5a;whV5bv$*GPd^?$-Xq({bx z)SB^SUrg8FL}EL}@y5_a*^j-oeM`$a5GiRH%O~OUw)UIvP})%1PiuAbIIqv%h(aED zU2ARRvo%<=&xsO)8bp%VEf&tCaMzvh5>_S^+;ZR0@+*Jjhi2GALx^pKs~KtyV~7}A z70@@&*tv_@5c@O{FfFLKYbmMMnper&VuFZ&p3A%uzm}qC}3RU*3_m6N5m-A z0F5+Pw-A#zbrc)k^JiCk4&Cch!=BJVl(cNUYE+Xtq?+ei;OIJWY+}xco=4Rgp=qti z#V+in4<`^}esJZO0*-6e=x7IM1W4mgPHueG5Q3p=I>z$sa&o2MCFiK0KDiRHJ1uu7 zZ4PzIA5U`^gO;4f-Y?=T(vEB;6k;!a_nNx(Wmzwj@AM}~er2|qFzY4DBz&dqh`-w4 zD9ZT#h8MMB^G74f?fZ00FNfmB%E9+FQ%w$7`7KyYp^9~@S{kkryQAA-cB-c3!{W!BYHKM!*vZ-v%X{9ouOJqA{3e&k-paQh7sZhn;W{RA$v)L?} zx&t3Nw)F|bo0&SZ;Cngc38kVut}-JMib;JC-gW2E#9YjmJ6D;q$Q##s*Lp=Md*OVo zCOq_Asu*j!`dfg^!Vc%jtyW8n>2PtNl(HO$YO&LseAv&Nj2{j8>fwaz(uqM5*xu7f zUNzHQa-YQ4lqpBK)L2&vJ8qohxY9D`!bifa3u#!_{ z2|R~MD$c}Gg?5St%?SyVLrc2yY1Bxud9ylk_t(;98mrGr-7F3?W%lQ9YoA`g#xoc0$LV&@ z;(jQ~P@#)< z#QcfTnpg>ATI$yMn=>Ci3i*oT2!o)(5vElS(8dl?u%UP%8vbqb6Him@ww5s~)<~R^ ze9I+MhZCy%z$WPT!z@Q_Wg88PIhR}P9b`AL+wG?iAoW<&U4d!>P;v_XbI~kAm^@?T zQt`+NA+M1UNWCI0RJG$1xhX{9=ACPhB`TJ8Y~!?tc6c4*u82A1@0NJG;k< z@b{qKdkFrz_s^i5$5j8Nqu}pJes3A@cakfc-;(@W1A*VO{N5kn?<@+o|K2U&_qg9n q-@oI^a{jjv{ypgTsr@_1ui}3vT22ZX@M{3@2))NyDSsS-gZm!_si>0x literal 46412 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 YKOL Date: Thu, 26 Nov 2020 22:54:50 -0800 Subject: [PATCH 12/13] Generate required IADS even at unconnected bases. If the campaign designer doesn't want SAMs at unconnected bases they can just not put them there. If they *do* put them there, generate them. --- game/theater/start_generator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index 26fa6c4c..0c4bec24 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -557,14 +557,14 @@ class AirbaseGroundObjectGenerator(ControlPointGroundObjectGenerator): def generate_ground_points(self) -> None: """Generate ground objects and AA sites for the control point.""" + skip_sams = self.generate_required_aa() + if self.control_point.is_global: return # Always generate at least one AA point. self.generate_aa_site() - skip_sams = self.generate_required_aa() - # And between 2 and 7 other objectives. amount = random.randrange(2, 7) for i in range(amount): From d24c7ea93e460600fb33e8b75e3fd150e6388854 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 26 Nov 2020 22:55:44 -0800 Subject: [PATCH 13/13] Remove the Hawk from USA 2005. According to Wikipedia the last user of these (USMC) stopped using them in 2002. --- resources/factions/usa_2005.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/factions/usa_2005.json b/resources/factions/usa_2005.json index f10e36bb..6815a9f6 100644 --- a/resources/factions/usa_2005.json +++ b/resources/factions/usa_2005.json @@ -49,7 +49,6 @@ "AvengerGenerator" ], "sams": [ - "HawkGenerator", "PatriotGenerator" ], "ewrs": [