From 3a432782b224905ecd844497b7150ce08ab1b4ee Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Sun, 20 Aug 2023 15:22:49 +0200 Subject: [PATCH 1/3] Storages Enum --- Moose Development/Moose/Utilities/Enums.lua | 48 ++++++++++----------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Moose Development/Moose/Utilities/Enums.lua b/Moose Development/Moose/Utilities/Enums.lua index d7133b760..0b69dc772 100644 --- a/Moose Development/Moose/Utilities/Enums.lua +++ b/Moose Development/Moose/Utilities/Enums.lua @@ -564,6 +564,7 @@ ENUMS.ReportingName = } + --- Enums for the STORAGE class for stores - which need to be in "" -- @type ENUMS.Storage -- @type ENUMS.Storage.weapons @@ -586,7 +587,7 @@ ENUMS.Storage.weapons.missiles.AGM_154 = "weapons.missiles.AGM_154" ENUMS.Storage.weapons.nurs.HYDRA_70_M151_M433 = "weapons.nurs.HYDRA_70_M151_M433" ENUMS.Storage.weapons.bombs.SAM_Avenger_M1097_Skid_7090lb = "weapons.bombs.SAM Avenger M1097 Skid [7090lb]" ENUMS.Storage.weapons.bombs.British_GP_250LB_Bomb_Mk5 = "weapons.bombs.British_GP_250LB_Bomb_Mk5" -ENUMS.Storage.weapons.containers._OV10_SMOKE = "weapons.containers.{OV10_SMOKE}" +ENUMS.Storage.weapons.containers.OV10_SMOKE = "weapons.containers.{OV10_SMOKE}" ENUMS.Storage.weapons.bombs.BLU_4B_OLD = "weapons.bombs.BLU-4B_OLD" ENUMS.Storage.weapons.bombs.FAB_500M54 = "weapons.bombs.FAB-500M54" ENUMS.Storage.weapons.bombs.GBU_38 = "weapons.bombs.GBU_38" @@ -696,7 +697,7 @@ ENUMS.Storage.weapons.droptanks.DFT_300_GAL_A4E_LR = "weapons.droptanks.DFT_300_ ENUMS.Storage.weapons.bombs.CBU_87 = "weapons.bombs.CBU_87" ENUMS.Storage.weapons.missiles.GAR_8 = "weapons.missiles.GAR-8" ENUMS.Storage.weapons.bombs.BELOUGA = "weapons.bombs.BELOUGA" -ENUMS.Storage.weapons.containers._EclairM_33 = "weapons.containers.{EclairM_33}" +ENUMS.Storage.weapons.containers.EclairM_33 = "weapons.containers.{EclairM_33}" ENUMS.Storage.weapons.bombs.ART_2S9_NONA_Air_19140lb = "weapons.bombs.ART 2S9 NONA Air [19140lb]" ENUMS.Storage.weapons.bombs.BR_250 = "weapons.bombs.BR_250" ENUMS.Storage.weapons.bombs.IAB_500 = "weapons.bombs.IAB-500" @@ -706,10 +707,10 @@ ENUMS.Storage.weapons.bombs.SD_250_Stg = "weapons.bombs.SD_250_Stg" ENUMS.Storage.weapons.missiles.R_530F_IR = "weapons.missiles.R_530F_IR" ENUMS.Storage.weapons.bombs.British_SAP_500LB_Bomb_Mk5 = "weapons.bombs.British_SAP_500LB_Bomb_Mk5" ENUMS.Storage.weapons.bombs.FAB_250M54 = "weapons.bombs.FAB-250M54" -ENUMS.Storage.weapons.containers._M2KC_AAF = "weapons.containers.{M2KC_AAF}" +ENUMS.Storage.weapons.containers.M2KC_AAF = "weapons.containers.{M2KC_AAF}" ENUMS.Storage.weapons.missiles.CM_802AKG_AI = "weapons.missiles.CM-802AKG_AI" ENUMS.Storage.weapons.bombs.CBU_103 = "weapons.bombs.CBU_103" -ENUMS.Storage.weapons.containers._US_M10_SMOKE_TANK_RED = "weapons.containers.{US_M10_SMOKE_TANK_RED}" +ENUMS.Storage.weapons.containers.US_M10_SMOKE_TANK_RED = "weapons.containers.{US_M10_SMOKE_TANK_RED}" ENUMS.Storage.weapons.missiles.X_29T = "weapons.missiles.X_29T" ENUMS.Storage.weapons.bombs.HEMTT_TFFT_34400lb = "weapons.bombs.HEMTT TFFT [34400lb]" ENUMS.Storage.weapons.missiles.C_701IR = "weapons.missiles.C-701IR" @@ -726,9 +727,9 @@ ENUMS.Storage.weapons.bombs.HEBOMB = "weapons.bombs.HEBOMB" ENUMS.Storage.weapons.bombs.CBU_97 = "weapons.bombs.CBU_97" ENUMS.Storage.weapons.bombs.MK_81SE = "weapons.bombs.MK-81SE" ENUMS.Storage.weapons.nurs.Zuni_127 = "weapons.nurs.Zuni_127" -ENUMS.Storage.weapons.containers._M2KC_AGF = "weapons.containers.{M2KC_AGF}" +ENUMS.Storage.weapons.containers.M2KC_AGF = "weapons.containers.{M2KC_AGF}" ENUMS.Storage.weapons.droptanks.Hercules_ExtFuelTank = "weapons.droptanks.Hercules_ExtFuelTank" -ENUMS.Storage.weapons.containers._SMOKE_WHITE = "weapons.containers.{SMOKE_WHITE}" +ENUMS.Storage.weapons.containers.SMOKE_WHITE = "weapons.containers.{SMOKE_WHITE}" ENUMS.Storage.weapons.droptanks.droptank_150_gal = "weapons.droptanks.droptank_150_gal" ENUMS.Storage.weapons.nurs.HYDRA_70_WTU1B = "weapons.nurs.HYDRA_70_WTU1B" ENUMS.Storage.weapons.missiles.GB_6_SFW = "weapons.missiles.GB-6-SFW" @@ -826,7 +827,7 @@ ENUMS.Storage.weapons.bombs.ARV_BRDM_2_Air_12320lb = "weapons.bombs.ARV BRDM-2 A ENUMS.Storage.weapons.bombs.ARV_BRDM_2_Skid_12210lb = "weapons.bombs.ARV BRDM-2 Skid [12210lb]" ENUMS.Storage.weapons.nurs.SNEB_TYPE251_F1B = "weapons.nurs.SNEB_TYPE251_F1B" ENUMS.Storage.weapons.missiles.X_41 = "weapons.missiles.X_41" -ENUMS.Storage.weapons.containers._MIG21_SMOKE_WHITE = "weapons.containers.{MIG21_SMOKE_WHITE}" +ENUMS.Storage.weapons.containers.MIG21_SMOKE_WHITE = "weapons.containers.{MIG21_SMOKE_WHITE}" ENUMS.Storage.weapons.bombs.MK_82AIR = "weapons.bombs.MK_82AIR" ENUMS.Storage.weapons.missiles.R_530F_EM = "weapons.missiles.R_530F_EM" ENUMS.Storage.weapons.bombs.SAMP400LD = "weapons.bombs.SAMP400LD" @@ -866,7 +867,7 @@ ENUMS.Storage.weapons.missiles.X_25ML = "weapons.missiles.X_25ML" ENUMS.Storage.weapons.droptanks.FPU_8A = "weapons.droptanks.FPU_8A" ENUMS.Storage.weapons.bombs.BLG66 = "weapons.bombs.BLG66" ENUMS.Storage.weapons.nurs.C_8CM_RD = "weapons.nurs.C_8CM_RD" -ENUMS.Storage.weapons.containers._EclairM_06 = "weapons.containers.{EclairM_06}" +ENUMS.Storage.weapons.containers.EclairM_06 = "weapons.containers.{EclairM_06}" ENUMS.Storage.weapons.bombs.RBK_500AO = "weapons.bombs.RBK_500AO" ENUMS.Storage.weapons.missiles.AIM_9P = "weapons.missiles.AIM-9P" ENUMS.Storage.weapons.bombs.British_GP_500LB_Bomb_Mk4_Short = "weapons.bombs.British_GP_500LB_Bomb_Mk4_Short" @@ -875,7 +876,7 @@ ENUMS.Storage.weapons.missiles.Rb_15F = "weapons.missiles.Rb 15F" ENUMS.Storage.weapons.nurs.ARAKM70BHE = "weapons.nurs.ARAKM70BHE" ENUMS.Storage.weapons.bombs.AAA_Vulcan_M163_Air_21666lb = "weapons.bombs.AAA Vulcan M163 Air [21666lb]" ENUMS.Storage.weapons.missiles.X_29L = "weapons.missiles.X_29L" -ENUMS.Storage.weapons.containers._F14_LANTIRN_TP = "weapons.containers.{F14-LANTIRN-TP}" +ENUMS.Storage.weapons.containers.F14_LANTIRN_TP = "weapons.containers.{F14-LANTIRN-TP}" ENUMS.Storage.weapons.bombs.FAB_250_M62 = "weapons.bombs.FAB-250-M62" ENUMS.Storage.weapons.missiles.AIM_120C = "weapons.missiles.AIM_120C" ENUMS.Storage.weapons.bombs.EWR_SBORKA_Air_21624lb = "weapons.bombs.EWR SBORKA Air [21624lb]" @@ -896,7 +897,7 @@ ENUMS.Storage.weapons.bombs.MK77mod1_WPN = "weapons.bombs.MK77mod1-WPN" ENUMS.Storage.weapons.droptanks.PTB400_MIG19 = "weapons.droptanks.PTB400_MIG19" ENUMS.Storage.weapons.torpedoes.Mark_46 = "weapons.torpedoes.Mark_46" ENUMS.Storage.weapons.containers.rightSeat = "weapons.containers.rightSeat" -ENUMS.Storage.weapons.containers._US_M10_SMOKE_TANK_ORANGE = "weapons.containers.{US_M10_SMOKE_TANK_ORANGE}" +ENUMS.Storage.weapons.containers.US_M10_SMOKE_TANK_ORANGE = "weapons.containers.{US_M10_SMOKE_TANK_ORANGE}" ENUMS.Storage.weapons.bombs.SAB_100MN = "weapons.bombs.SAB_100MN" ENUMS.Storage.weapons.nurs.FFAR_Mk5_HEAT = "weapons.nurs.FFAR Mk5 HEAT" ENUMS.Storage.weapons.bombs.IFV_TPZ_FUCH_33440lb = "weapons.bombs.IFV TPZ FUCH [33440lb]" @@ -930,7 +931,7 @@ ENUMS.Storage.weapons.missiles.Rb_74 = "weapons.missiles.Rb 74" ENUMS.Storage.weapons.containers.leftSeat = "weapons.containers.leftSeat" ENUMS.Storage.weapons.bombs.LS_6_100 = "weapons.bombs.LS-6-100" ENUMS.Storage.weapons.bombs.Transport_URAL_375_14815lb = "weapons.bombs.Transport URAL-375 [14815lb]" -ENUMS.Storage.weapons.containers._US_M10_SMOKE_TANK_GREEN = "weapons.containers.{US_M10_SMOKE_TANK_GREEN}" +ENUMS.Storage.weapons.containers.US_M10_SMOKE_TANK_GREEN = "weapons.containers.{US_M10_SMOKE_TANK_GREEN}" ENUMS.Storage.weapons.missiles.X_22 = "weapons.missiles.X_22" ENUMS.Storage.weapons.containers.FAS = "weapons.containers.FAS" ENUMS.Storage.weapons.nurs.S_25_O = "weapons.nurs.S-25-O" @@ -943,9 +944,9 @@ ENUMS.Storage.weapons.missiles.AIM_54A_Mk47 = "weapons.missiles.AIM_54A_Mk47" ENUMS.Storage.weapons.droptanks.oiltank = "weapons.droptanks.oiltank" ENUMS.Storage.weapons.missiles.AGM_154B = "weapons.missiles.AGM_154B" ENUMS.Storage.weapons.containers.MB339_SMOKE_POD = "weapons.containers.MB339_SMOKE-POD" -ENUMS.Storage.weapons.containers._ECM_POD_L_175V = "weapons.containers.{ECM_POD_L_175V}" +ENUMS.Storage.weapons.containers.ECM_POD_L_175V = "weapons.containers.{ECM_POD_L_175V}" ENUMS.Storage.weapons.droptanks.PTB_580G_F1 = "weapons.droptanks.PTB_580G_F1" -ENUMS.Storage.weapons.containers._EclairM_15 = "weapons.containers.{EclairM_15}" +ENUMS.Storage.weapons.containers.EclairM_15 = "weapons.containers.{EclairM_15}" ENUMS.Storage.weapons.containers.F_15E_AAQ_13_LANTIRN = "weapons.containers.F-15E_AAQ-13_LANTIRN" ENUMS.Storage.weapons.droptanks.Eight00L_Tank_Empty = "weapons.droptanks.800L Tank Empty" ENUMS.Storage.weapons.containers.One6c_hts_pod = "weapons.containers.16c_hts_pod" @@ -955,7 +956,7 @@ ENUMS.Storage.weapons.droptanks.Mosquito_Drop_Tank_50gal = "weapons.droptanks.Mo ENUMS.Storage.weapons.droptanks.DFT_150_GAL_A4E = "weapons.droptanks.DFT_150_GAL_A4E" ENUMS.Storage.weapons.missiles.AIM_9 = "weapons.missiles.AIM_9" ENUMS.Storage.weapons.bombs.IFV_BTR_D_Air_18040lb = "weapons.bombs.IFV BTR-D Air [18040lb]" -ENUMS.Storage.weapons.containers._EclairM_42 = "weapons.containers.{EclairM_42}" +ENUMS.Storage.weapons.containers.EclairM_42 = "weapons.containers.{EclairM_42}" ENUMS.Storage.weapons.bombs.KAB_1500T = "weapons.bombs.KAB_1500T" ENUMS.Storage.weapons.droptanks.PTB_490_MIG21 = "weapons.droptanks.PTB-490-MIG21" ENUMS.Storage.weapons.droptanks.PTB_200_F86F35 = "weapons.droptanks.PTB_200_F86F35" @@ -965,7 +966,7 @@ ENUMS.Storage.weapons.torpedoes.G7A_T1 = "weapons.torpedoes.G7A_T1" ENUMS.Storage.weapons.bombs.IFV_BMD_1_Air_18040lb = "weapons.bombs.IFV BMD-1 Air [18040lb]" ENUMS.Storage.weapons.bombs.SAM_LINEBACKER_34720lb = "weapons.bombs.SAM LINEBACKER [34720lb]" ENUMS.Storage.weapons.containers.ais_pod_t50_r = "weapons.containers.ais-pod-t50_r" -ENUMS.Storage.weapons.containers._CE2_SMOKE_WHITE = "weapons.containers.{CE2_SMOKE_WHITE}" +ENUMS.Storage.weapons.containers.CE2_SMOKE_WHITE = "weapons.containers.{CE2_SMOKE_WHITE}" ENUMS.Storage.weapons.droptanks.fuel_tank_230 = "weapons.droptanks.fuel_tank_230" ENUMS.Storage.weapons.droptanks.M2KC_RPL_522 = "weapons.droptanks.M2KC_RPL_522" ENUMS.Storage.weapons.missiles.AGM_130 = "weapons.missiles.AGM_130" @@ -975,7 +976,7 @@ ENUMS.Storage.weapons.containers.bmp_1 = "weapons.containers.bmp-1" ENUMS.Storage.weapons.bombs.GBU_31 = "weapons.bombs.GBU_31" ENUMS.Storage.weapons.containers.aaq_28LEFT_litening = "weapons.containers.aaq-28LEFT litening" ENUMS.Storage.weapons.missiles.Kh_66_Grom = "weapons.missiles.Kh-66_Grom" -ENUMS.Storage.weapons.containers._MIG21_SMOKE_RED = "weapons.containers.{MIG21_SMOKE_RED}" +ENUMS.Storage.weapons.containers.MIG21_SMOKE_RED = "weapons.containers.{MIG21_SMOKE_RED}" ENUMS.Storage.weapons.containers.U22 = "weapons.containers.U22" ENUMS.Storage.weapons.bombs.IFV_BMD_1_Skid_17930lb = "weapons.bombs.IFV BMD-1 Skid [17930lb]" ENUMS.Storage.weapons.droptanks.Bidon = "weapons.droptanks.Bidon" @@ -984,7 +985,7 @@ ENUMS.Storage.weapons.bombs.Mk_82Y = "weapons.bombs.Mk_82Y" ENUMS.Storage.weapons.containers.pl5eii = "weapons.containers.pl5eii" ENUMS.Storage.weapons.bombs.RBK_500U_OAB_2_5RT = "weapons.bombs.RBK_500U_OAB_2_5RT" ENUMS.Storage.weapons.bombs.British_GP_500LB_Bomb_Mk5 = "weapons.bombs.British_GP_500LB_Bomb_Mk5" -ENUMS.Storage.weapons.containers._Eclair = "weapons.containers.{Eclair}" +ENUMS.Storage.weapons.containers.Eclair = "weapons.containers.{Eclair}" ENUMS.Storage.weapons.nurs.S5MO_HEFRAG_FFAR = "weapons.nurs.S5MO_HEFRAG_FFAR" ENUMS.Storage.weapons.bombs.BETAB_500M = "weapons.bombs.BETAB-500M" ENUMS.Storage.weapons.bombs.Transport_M818_16000lb = "weapons.bombs.Transport M818 [16000lb]" @@ -1027,7 +1028,7 @@ ENUMS.Storage.weapons.missiles.AGM_65B = "weapons.missiles.AGM_65B" ENUMS.Storage.weapons.bombs.MK_82SNAKEYE = "weapons.bombs.MK_82SNAKEYE" ENUMS.Storage.weapons.nurs.HYDRA_70_MK1 = "weapons.nurs.HYDRA_70_MK1" ENUMS.Storage.weapons.bombs.BLG66_BELOUGA = "weapons.bombs.BLG66_BELOUGA" -ENUMS.Storage.weapons.containers._EclairM_51 = "weapons.containers.{EclairM_51}" +ENUMS.Storage.weapons.containers.EclairM_51 = "weapons.containers.{EclairM_51}" ENUMS.Storage.weapons.missiles.AIM_54A_Mk60 = "weapons.missiles.AIM_54A_Mk60" ENUMS.Storage.weapons.droptanks.DFT_300_GAL_A4E = "weapons.droptanks.DFT_300_GAL_A4E" ENUMS.Storage.weapons.bombs.ATGM_M1134_Stryker_30337lb = "weapons.bombs.ATGM M1134 Stryker [30337lb]" @@ -1072,8 +1073,8 @@ ENUMS.Storage.weapons.bombs.Two50_3 = "weapons.bombs.250-3" ENUMS.Storage.weapons.bombs.SC_500_L2 = "weapons.bombs.SC_500_L2" ENUMS.Storage.weapons.containers.HMMWV_M1045 = "weapons.containers.HMMWV_M1045" ENUMS.Storage.weapons.bombs.FAB_500M54TU = "weapons.bombs.FAB-500M54TU" -ENUMS.Storage.weapons.containers._US_M10_SMOKE_TANK_YELLOW = "weapons.containers.{US_M10_SMOKE_TANK_YELLOW}" -ENUMS.Storage.weapons.containers._EclairM_60 = "weapons.containers.{EclairM_60}" +ENUMS.Storage.weapons.containers.US_M10_SMOKE_TANK_YELLOW = "weapons.containers.{US_M10_SMOKE_TANK_YELLOW}" +ENUMS.Storage.weapons.containers.EclairM_60 = "weapons.containers.{EclairM_60}" ENUMS.Storage.weapons.bombs.SAB_250_200 = "weapons.bombs.SAB_250_200" ENUMS.Storage.weapons.bombs.FAB_100 = "weapons.bombs.FAB_100" ENUMS.Storage.weapons.bombs.KAB_500S = "weapons.bombs.KAB_500S" @@ -1095,7 +1096,7 @@ ENUMS.Storage.weapons.nurs.HYDRA_70_M282 = "weapons.nurs.HYDRA_70_M282" ENUMS.Storage.weapons.droptanks.DFT_400_GAL_A4E = "weapons.droptanks.DFT_400_GAL_A4E" ENUMS.Storage.weapons.nurs.HYDRA_70_M257 = "weapons.nurs.HYDRA_70_M257" ENUMS.Storage.weapons.droptanks.AV8BNA_AERO1D = "weapons.droptanks.AV8BNA_AERO1D" -ENUMS.Storage.weapons.containers._US_M10_SMOKE_TANK_BLUE = "weapons.containers.{US_M10_SMOKE_TANK_BLUE}" +ENUMS.Storage.weapons.containers.US_M10_SMOKE_TANK_BLUE = "weapons.containers.{US_M10_SMOKE_TANK_BLUE}" ENUMS.Storage.weapons.nurs.ARF8M3HEI = "weapons.nurs.ARF8M3HEI" ENUMS.Storage.weapons.bombs.RN_28 = "weapons.bombs.RN-28" ENUMS.Storage.weapons.bombs.Squad_30_x_Soldier_7950lb = "weapons.bombs.Squad 30 x Soldier [7950lb]" @@ -1118,7 +1119,7 @@ ENUMS.Storage.weapons.nurs.SNEB_TYPE256_H1 = "weapons.nurs.SNEB_TYPE256_H1" ENUMS.Storage.weapons.containers.MATRA_PHIMAT = "weapons.containers.MATRA-PHIMAT" ENUMS.Storage.weapons.containers.smoke_pod = "weapons.containers.smoke_pod" ENUMS.Storage.weapons.containers.F_15E_AAQ_14_LANTIRN = "weapons.containers.F-15E_AAQ-14_LANTIRN" -ENUMS.Storage.weapons.containers._EclairM_24 = "weapons.containers.{EclairM_24}" +ENUMS.Storage.weapons.containers.EclairM_24 = "weapons.containers.{EclairM_24}" ENUMS.Storage.weapons.bombs.GBU_16 = "weapons.bombs.GBU_16" ENUMS.Storage.weapons.nurs.HYDRA_70_M156 = "weapons.nurs.HYDRA_70_M156" ENUMS.Storage.weapons.missiles.R_60 = "weapons.missiles.R-60" @@ -1134,7 +1135,6 @@ ENUMS.Storage.weapons.missiles.S_25L = "weapons.missiles.S_25L" ENUMS.Storage.weapons.nurs.British_AP_25LBNo1_3INCHNo1 = "weapons.nurs.British_AP_25LBNo1_3INCHNo1" ENUMS.Storage.weapons.bombs.BDU_50LD = "weapons.bombs.BDU_50LD" ENUMS.Storage.weapons.bombs.AGM_62 = "weapons.bombs.AGM_62" -ENUMS.Storage.weapons.containers._US_M10_SMOKE_TANK_WHITE = "weapons.containers.{US_M10_SMOKE_TANK_WHITE}" +ENUMS.Storage.weapons.containers.US_M10_SMOKE_TANK_WHITE = "weapons.containers.{US_M10_SMOKE_TANK_WHITE}" ENUMS.Storage.weapons.missiles.MICA_T = "weapons.missiles.MICA_T" ENUMS.Storage.weapons.containers.HVAR_rocket = "weapons.containers.HVAR_rocket" - From 8d2e291deb543803465f6165fc527bc79fa36ab1 Mon Sep 17 00:00:00 2001 From: Thomas <72444570+Applevangelist@users.noreply.github.com> Date: Mon, 21 Aug 2023 11:35:01 +0200 Subject: [PATCH 2/3] Update Enums.lua Error in ENUM --- Moose Development/Moose/Utilities/Enums.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/Moose Development/Moose/Utilities/Enums.lua b/Moose Development/Moose/Utilities/Enums.lua index 0b69dc772..fc4e1d955 100644 --- a/Moose Development/Moose/Utilities/Enums.lua +++ b/Moose Development/Moose/Utilities/Enums.lua @@ -1067,7 +1067,6 @@ ENUMS.Storage.weapons.bombs.BDU_45B = "weapons.bombs.BDU_45B" ENUMS.Storage.weapons.missiles.GB_6_HE = "weapons.missiles.GB-6-HE" ENUMS.Storage.weapons.missiles.KD_63B = "weapons.missiles.KD-63B" ENUMS.Storage.weapons.missiles.P_27PE = "weapons.missiles.P_27PE" -ENUMS.Storage.weapons.droptanks = "weapons.droptanks." ENUMS.Storage.weapons.droptanks.PTB300_MIG15 = "weapons.droptanks.PTB300_MIG15" ENUMS.Storage.weapons.bombs.Two50_3 = "weapons.bombs.250-3" ENUMS.Storage.weapons.bombs.SC_500_L2 = "weapons.bombs.SC_500_L2" From cf824b912d05d63da4aa28cb323872c9d2b59831 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Tue, 22 Aug 2023 10:24:40 +0200 Subject: [PATCH 3/3] #Controllable * Added Aerobtics tasks --- .../Moose/Wrapper/Controllable.lua | 1208 +++++++++++++++++ 1 file changed, 1208 insertions(+) diff --git a/Moose Development/Moose/Wrapper/Controllable.lua b/Moose Development/Moose/Wrapper/Controllable.lua index 79f794b48..52a659e44 100644 --- a/Moose Development/Moose/Wrapper/Controllable.lua +++ b/Moose Development/Moose/Wrapper/Controllable.lua @@ -4056,3 +4056,1211 @@ function CONTROLLABLE:SetAltitude(Altitude, Keep, AltType) end return self end + +--- Return an empty task shell for Aerobatics. +-- @param #CONTROLLABLE self +-- @return DCS#Task +-- @usage +-- local plane = GROUP:FindByName("Aerial-1") +-- -- get a task shell +-- local aerotask = plane:TaskAerobatics() +-- -- add a series of maneuvers +-- aerotask = plane:TaskAerobaticsHorizontalEight(aerotask,1,5000,850,true,false,1,70) +-- aerotask = plane:TaskAerobaticsWingoverFlight(aerotask,1,0,0,true,true,20) +-- aerotask = plane:TaskAerobaticsLoop(aerotask,1,0,0,false,true) +-- -- set the task +-- plane:SetTask(aerotask) +function CONTROLLABLE:TaskAerobatics() + + local DCSTaskAerobatics = { + id = "Aerobatics", + params = { + ["maneuversSequency"] = {}, + }, + ["enabled"] = true, + ["auto"] = false, + } + + return DCSTaskAerobatics +end + +--- Add an aerobatics entry of type "CANDLE" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsCandle(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local CandleTask = { + ["name"] = "CANDLE", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + } + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],CandleTask) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "EDGE_FLIGHT" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number FlightTime (Optional) Time to fly this manoever in seconds, defaults to 10. +-- @param #number Side (Optional) On which side to fly, 0 == left, 1 == right side, defaults to 0. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsEdgeFlight(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,FlightTime,Side) + + local maxrepeats = 10 + local maxflight = 200 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local flighttime = FlightTime or 10 + + if flighttime > 200 then maxflight = flighttime end + + local EdgeTask = { + ["name"] = "EDGE_FLIGHT", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["FlightTime"] = { + ["max_v"] = maxflight, + ["min_v"] = 1, + ["order"] = 6, + ["step"] = 0.1, + ["value"] = flighttime or 10, -- Secs? + }, + ["SIDE"] = { + ["order"] = 7, + ["value"] = Side or 0, --0 == left, 1 == right side + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],EdgeTask) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "WINGOVER_FLIGHT" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number FlightTime (Optional) Time to fly this manoever in seconds, defaults to 10. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsWingoverFlight(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,FlightTime) + + local maxrepeats = 10 + local maxflight = 200 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local flighttime = FlightTime or 10 + + if flighttime > 200 then maxflight = flighttime end + + local WingoverTask = { + ["name"] = "WINGOVER_FLIGHT", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["FlightTime"] = { + ["max_v"] = maxflight, + ["min_v"] = 1, + ["order"] = 6, + ["step"] = 0.1, + ["value"] = flighttime or 10, -- Secs? + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],WingoverTask) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "LOOP" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsLoop(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local LoopTask = { + ["name"] = "LOOP", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + } + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],LoopTask) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "HORIZONTAL_EIGHT" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number Side (Optional) On which side to fly, 0 == left, 1 == right side, defaults to 0. +-- @param #number RollDeg (Optional) Roll degrees for Roll 1 and 2, defaults to 60. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsHorizontalEight(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,Side,RollDeg) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local LoopTask = { + ["name"] = "HORIZONTAL_EIGHT", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["SIDE"] = { + ["order"] = 6, + ["value"] = Side or 0, + }, + ["ROLL1"] = { + ["order"] = 7, + ["value"] = RollDeg or 60, + }, + ["ROLL2"] = { + ["order"] = 8, + ["value"] = RollDeg or 60, + }, + + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],LoopTask) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "HAMMERHEAD" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number Side (Optional) On which side to fly, 0 == left, 1 == right side, defaults to 0. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsHammerhead(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,Side) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "HUMMERHEAD", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["SIDE"] = { + ["order"] = 6, + ["value"] = Side or 0, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "SKEWED_LOOP" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number Side (Optional) On which side to fly, 0 == left, 1 == right side, defaults to 0. +-- @param #number RollDeg (Optional) Roll degrees for Roll 1 and 2, defaults to 60. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsSkewedLoop(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,Side,RollDeg) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "SKEWED_LOOP", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["ROLL"] = { + ["order"] = 6, + ["value"] = RollDeg or 60, + }, + ["SIDE"] = { + ["order"] = 7, + ["value"] = Side or 0, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "TURN" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number Side (Optional) On which side to fly, 0 == left, 1 == right side, defaults to 0. +-- @param #number RollDeg (Optional) Roll degrees for Roll 1 and 2, defaults to 60. +-- @param #number Pull (Optional) How many Gs to pull in this, defaults to 2. +-- @param #number Angle (Optional) How many degrees to turn, defaults to 180. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsTurn(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,Side,RollDeg,Pull,Angle) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "TURN", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["Ny_req"] = { + ["order"] = 6, + ["value"] = Pull or 2, --amount of G to pull + }, + ["ROLL"] = { + ["order"] = 7, + ["value"] = RollDeg or 60, + }, + ["SECTOR"] = { + ["order"] = 8, + ["value"] = Angle or 180, + }, + ["SIDE"] = { + ["order"] = 9, + ["value"] = Side or 0, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "DIVE" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 5000. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number Angle (Optional) With how many degrees to dive, defaults to 45. Can be 15 to 90 degrees. +-- @param #number FinalAltitude (Optional) Final altitude in meters, defaults to 1000. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsDive(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,Angle,FinalAltitude) + + local maxrepeats = 10 + + local angle = Angle + + if angle < 15 then angle = 15 elseif angle > 90 then angle = 90 end + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "DIVE", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 5000, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["Angle"] = { + ["max_v"] = 90, + ["min_v"] = 15, + ["order"] = 6, + ["step"] = 5, + ["value"] = angle or 45, + }, + ["FinalAltitude"] = { + ["order"] = 7, + ["value"] = FinalAltitude or 1000, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "MILITARY_TURN" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsMilitaryTurn(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "MILITARY_TURN", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + } + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "IMMELMAN" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsImmelmann(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "IMMELMAN", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + } + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "STRAIGHT_FLIGHT" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number FlightTime (Optional) Time to fly this manoever in seconds, defaults to 10. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsStraightFlight(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,FlightTime) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local maxflight = 200 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local flighttime = FlightTime or 10 + + if flighttime > 200 then maxflight = flighttime end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "STRAIGHT_FLIGHT", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["FlightTime"] = { + ["max_v"] = maxflight, + ["min_v"] = 1, + ["order"] = 6, + ["step"] = 0.1, + ["value"] = flighttime or 10, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "CLIMB" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number Angle (Optional) Angle to climb. Can be between 15 and 90 degrees. Defaults to 45 degrees. +-- @param #number FinalAltitude (Optional) Altitude to climb to in meters. Defaults to 5000m. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsClimb(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,Angle,FinalAltitude) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "CLIMB", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["Angle"] = { + ["max_v"] = 90, + ["min_v"] = 15, + ["order"] = 6, + ["step"] = 5, + ["value"] = Angle or 45, + }, + ["FinalAltitude"] = { + ["order"] = 7, + ["value"] = FinalAltitude or 5000, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "SPIRAL" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number TurnAngle (Optional) Turn angle, defaults to 360 degrees. +-- @param #number Roll (Optional) Roll to take, defaults to 60 degrees. +-- @param #number Side (Optional) On which side to fly, 0 == left, 1 == right side, defaults to 0. +-- @param #number UpDown (Optional) Spiral upwards (1) or downwards (0). Defaults to 0 - downwards. +-- @param #number Angle (Optional) Angle to spiral. Can be between 15 and 90 degrees. Defaults to 45 degrees. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsSpiral(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,TurnAngle,Roll,Side,UpDown,Angle) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + local updown = UpDown and 1 or 0 + local side = Side and 1 or 0 + + local Task = { + ["name"] = "SPIRAL", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["SECTOR"] = { + ["order"] = 6, + ["value"] = TurnAngle or 360, + }, + ["ROLL"] = { + ["order"] = 7, + ["value"] = Roll or 60, + }, + ["SIDE"] = { + ["order"] = 8, + ["value"] = side or 0, + }, + ["UPDOWN"] = { + ["order"] = 9, + ["value"] = updown or 0, + }, + ["Angle"] = { + ["max_v"] = 90, + ["min_v"] = 15, + ["order"] = 10, + ["step"] = 5, + ["value"] = Angle or 45, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "SPLIT_S" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number FinalSpeed (Optional) Final speed to reach in KPH. Defaults to 500 kph. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsSplitS(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,FinalSpeed) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local maxflight = 200 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local finalspeed = FinalSpeed or 500 + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "SPLIT_S", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["FinalSpeed"] = { + ["order"] = 6, + ["value"] = finalspeed, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "AILERON_ROLL" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number Side (Optional) On which side to fly, 0 == left, 1 == right side, defaults to 0. +-- @param #number RollRate (Optional) How many degrees to roll per sec(?), can be between 15 and 450, defaults to 90. +-- @param #number TurnAngle (Optional) Angles to turn overall, defaults to 360. +-- @param #number FixAngle (Optional) No idea what this does, can be between 0 and 180 degrees, defaults to 180. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsAileronRoll(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,Side,RollRate,TurnAngle,FixAngle) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local maxflight = 200 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "AILERON_ROLL", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["SIDE"] = { + ["order"] = 6, + ["value"] = Side or 0, + }, + ["RollRate"] = { + ["max_v"] = 450, + ["min_v"] = 15, + ["order"] = 7, + ["step"] = 5, + ["value"] = RollRate or 90, + }, + ["SECTOR"] = { + ["order"] = 8, + ["value"] = TurnAngle or 360, + }, + ["FIXSECTOR"] = { + ["max_v"] = 180, + ["min_v"] = 0, + ["order"] = 9, + ["step"] = 5, + ["value"] = FixAngle or 0, -- TODO: Need to find out what this does + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "FORCED_TURN" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number TurnAngle (Optional) Angles to turn, defaults to 360. +-- @param #number Side (Optional) On which side to fly, 0 == left, 1 == right side, defaults to 0. +-- @param #number FlightTime (Optional) Flight time in seconds for thos maneuver. Defaults to 30. +-- @param #number MinSpeed (Optional) Minimum speed to keep in kph, defaults to 250 kph. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsForcedTurn(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,TurnAngle,Side,FlightTime,MinSpeed) + + local maxrepeats = 10 + local flighttime = FlightTime or 30 + local maxtime = 200 + if flighttime > 200 then maxtime = flighttime end + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "FORCED_TURN", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["SECTOR"] = { + ["order"] = 6, + ["value"] = TurnAngle or 360, + }, + ["SIDE"] = { + ["order"] = 7, + ["value"] = Side or 0, + }, + ["FlightTime"] = { + ["max_v"] = maxtime or 200, + ["min_v"] = 0, + ["order"] = 8, + ["step"] = 0.1, + ["value"] = flighttime or 30, + }, + ["MinSpeed"] = { + ["max_v"] = 3000, + ["min_v"] = 30, + ["order"] = 9, + ["step"] = 10, + ["value"] = MinSpeed or 250, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end + +--- Add an aerobatics entry of type "BARREL_ROLL" to the Aerobatics Task. +-- @param #CONTROLLABLE self +-- @param DCS#Task TaskAerobatics The Aerobatics Task +-- @param #number Repeats (Optional) The number of repeats, defaults to 1. +-- @param #number InitAltitude (Optional) Starting altitude in meters, defaults to 0. +-- @param #number InitSpeed (Optional) Starting speed in KPH, defaults to 0. +-- @param #boolean UseSmoke (Optional) Using smoke, defaults to false. +-- @param #boolean StartImmediately (Optional) If true, start immediately and ignore InitAltitude and InitSpeed. +-- @param #number Side (Optional) On which side to fly, 0 == left, 1 == right side, defaults to 0. +-- @param #number RollRate (Optional) How many degrees to roll per sec(?), can be between 15 and 450, defaults to 90. +-- @param #number TurnAngle (Optional) Turn angle, defaults to 360 degrees. +-- @return DCS#Task +function CONTROLLABLE:TaskAerobaticsBarrelRoll(TaskAerobatics,Repeats,InitAltitude,InitSpeed,UseSmoke,StartImmediately,Side,RollRate,TurnAngle) + + local maxrepeats = 10 + + if Repeats > maxrepeats then maxrepeats = Repeats end + + local usesmoke = UseSmoke and 1 or 0 + + local startimmediately = StartImmediately and 1 or 0 + + local Task = { + ["name"] = "BARREL_ROLL", + ["params"] = { + ["RepeatQty"] = { + ["max_v"] = maxrepeats, + ["min_v"] = 1, + ["order"] = 1, + ["value"] = Repeats or 1, + }, + ["InitAltitude"] = { + ["order"] = 2, + ["value"] = InitAltitude or 0, + }, + ["InitSpeed"] = { + ["order"] = 3, + ["value"] = InitSpeed or 0, + }, + ["UseSmoke"] = { + ["order"] = 4, + ["value"] = usesmoke, + }, + ["StartImmediatly"] = { + ["order"] = 5, + ["value"] = startimmediately, + }, + ["SIDE"] = { + ["order"] = 6, + ["value"] = Side or 0, + }, + ["RollRate"] = { + ["max_v"] = 450, + ["min_v"] = 15, + ["order"] = 7, + ["step"] = 5, + ["value"] = RollRate or 90, + }, + ["SECTOR"] = { + ["order"] = 8, + ["value"] = TurnAngle or 360, + }, + } + } + + table.insert(TaskAerobatics.params["maneuversSequency"],Task) + + return TaskAerobatics +end