From bff60bdb695f66193bc37634c82ab59fc8c26995 Mon Sep 17 00:00:00 2001 From: kaltokri Date: Thu, 29 Feb 2024 10:32:35 +0100 Subject: [PATCH 1/2] Update of all Airbases (uptodate and sorted) --- Moose Development/Moose/Wrapper/Airbase.lua | 693 ++++++++++---------- 1 file changed, 350 insertions(+), 343 deletions(-) diff --git a/Moose Development/Moose/Wrapper/Airbase.lua b/Moose Development/Moose/Wrapper/Airbase.lua index ae2d9db16..be41aa6c5 100644 --- a/Moose Development/Moose/Wrapper/Airbase.lua +++ b/Moose Development/Moose/Wrapper/Airbase.lua @@ -79,92 +79,92 @@ AIRBASE = { -- -- Airbases of the Caucasus map: -- --- * AIRBASE.Caucasus.Gelendzhik --- * AIRBASE.Caucasus.Krasnodar_Pashkovsky --- * AIRBASE.Caucasus.Sukhumi_Babushara --- * AIRBASE.Caucasus.Gudauta --- * AIRBASE.Caucasus.Batumi --- * AIRBASE.Caucasus.Senaki_Kolkhi --- * AIRBASE.Caucasus.Kobuleti --- * AIRBASE.Caucasus.Kutaisi --- * AIRBASE.Caucasus.Tbilisi_Lochini --- * AIRBASE.Caucasus.Soganlug --- * AIRBASE.Caucasus.Vaziani --- * AIRBASE.Caucasus.Anapa_Vityazevo --- * AIRBASE.Caucasus.Krasnodar_Center --- * AIRBASE.Caucasus.Novorossiysk --- * AIRBASE.Caucasus.Krymsk --- * AIRBASE.Caucasus.Maykop_Khanskaya --- * AIRBASE.Caucasus.Sochi_Adler --- * AIRBASE.Caucasus.Mineralnye_Vody --- * AIRBASE.Caucasus.Nalchik --- * AIRBASE.Caucasus.Mozdok --- * AIRBASE.Caucasus.Beslan +-- * AIRBASE.Caucasus.Anapa_Vityazevo +-- * AIRBASE.Caucasus.Batumi +-- * AIRBASE.Caucasus.Beslan +-- * AIRBASE.Caucasus.Gelendzhik +-- * AIRBASE.Caucasus.Gudauta +-- * AIRBASE.Caucasus.Kobuleti +-- * AIRBASE.Caucasus.Krasnodar_Center +-- * AIRBASE.Caucasus.Krasnodar_Pashkovsky +-- * AIRBASE.Caucasus.Krymsk +-- * AIRBASE.Caucasus.Kutaisi +-- * AIRBASE.Caucasus.Maykop_Khanskaya +-- * AIRBASE.Caucasus.Mineralnye_Vody +-- * AIRBASE.Caucasus.Mozdok +-- * AIRBASE.Caucasus.Nalchik +-- * AIRBASE.Caucasus.Novorossiysk +-- * AIRBASE.Caucasus.Senaki_Kolkhi +-- * AIRBASE.Caucasus.Sochi_Adler +-- * AIRBASE.Caucasus.Soganlug +-- * AIRBASE.Caucasus.Sukhumi_Babushara +-- * AIRBASE.Caucasus.Tbilisi_Lochini +-- * AIRBASE.Caucasus.Vaziani -- -- @field Caucasus AIRBASE.Caucasus = { - ["Gelendzhik"] = "Gelendzhik", - ["Krasnodar_Pashkovsky"] = "Krasnodar-Pashkovsky", - ["Sukhumi_Babushara"] = "Sukhumi-Babushara", - ["Gudauta"] = "Gudauta", - ["Batumi"] = "Batumi", - ["Senaki_Kolkhi"] = "Senaki-Kolkhi", - ["Kobuleti"] = "Kobuleti", - ["Kutaisi"] = "Kutaisi", - ["Tbilisi_Lochini"] = "Tbilisi-Lochini", - ["Soganlug"] = "Soganlug", - ["Vaziani"] = "Vaziani", ["Anapa_Vityazevo"] = "Anapa-Vityazevo", - ["Krasnodar_Center"] = "Krasnodar-Center", - ["Novorossiysk"] = "Novorossiysk", - ["Krymsk"] = "Krymsk", - ["Maykop_Khanskaya"] = "Maykop-Khanskaya", - ["Sochi_Adler"] = "Sochi-Adler", - ["Mineralnye_Vody"] = "Mineralnye Vody", - ["Nalchik"] = "Nalchik", - ["Mozdok"] = "Mozdok", + ["Batumi"] = "Batumi", ["Beslan"] = "Beslan", + ["Gelendzhik"] = "Gelendzhik", + ["Gudauta"] = "Gudauta", + ["Kobuleti"] = "Kobuleti", + ["Krasnodar_Center"] = "Krasnodar-Center", + ["Krasnodar_Pashkovsky"] = "Krasnodar-Pashkovsky", + ["Krymsk"] = "Krymsk", + ["Kutaisi"] = "Kutaisi", + ["Maykop_Khanskaya"] = "Maykop-Khanskaya", + ["Mineralnye_Vody"] = "Mineralnye Vody", + ["Mozdok"] = "Mozdok", + ["Nalchik"] = "Nalchik", + ["Novorossiysk"] = "Novorossiysk", + ["Senaki_Kolkhi"] = "Senaki-Kolkhi", + ["Sochi_Adler"] = "Sochi-Adler", + ["Soganlug"] = "Soganlug", + ["Sukhumi_Babushara"] = "Sukhumi-Babushara", + ["Tbilisi_Lochini"] = "Tbilisi-Lochini", + ["Vaziani"] = "Vaziani", } --- Airbases of the Nevada map: -- --- * AIRBASE.Nevada.Creech_AFB --- * AIRBASE.Nevada.Groom_Lake_AFB --- * AIRBASE.Nevada.McCarran_International_Airport --- * AIRBASE.Nevada.Nellis_AFB --- * AIRBASE.Nevada.Beatty_Airport --- * AIRBASE.Nevada.Boulder_City_Airport --- * AIRBASE.Nevada.Echo_Bay --- * AIRBASE.Nevada.Henderson_Executive_Airport --- * AIRBASE.Nevada.Jean_Airport --- * AIRBASE.Nevada.Laughlin_Airport --- * AIRBASE.Nevada.Lincoln_County --- * AIRBASE.Nevada.Mesquite --- * AIRBASE.Nevada.Mina_Airport --- * AIRBASE.Nevada.North_Las_Vegas --- * AIRBASE.Nevada.Pahute_Mesa_Airstrip --- * AIRBASE.Nevada.Tonopah_Airport --- * AIRBASE.Nevada.Tonopah_Test_Range_Airfield +-- * AIRBASE.Nevada.Beatty +-- * AIRBASE.Nevada.Boulder_City +-- * AIRBASE.Nevada.Creech +-- * AIRBASE.Nevada.Echo_Bay +-- * AIRBASE.Nevada.Groom_Lake +-- * AIRBASE.Nevada.Henderson_Executive +-- * AIRBASE.Nevada.Jean +-- * AIRBASE.Nevada.Laughlin +-- * AIRBASE.Nevada.Lincoln_County +-- * AIRBASE.Nevada.McCarran_International +-- * AIRBASE.Nevada.Mesquite +-- * AIRBASE.Nevada.Mina +-- * AIRBASE.Nevada.Nellis +-- * AIRBASE.Nevada.North_Las_Vegas +-- * AIRBASE.Nevada.Pahute_Mesa +-- * AIRBASE.Nevada.Tonopah +-- * AIRBASE.Nevada.Tonopah_Test_Range -- -- @field Nevada AIRBASE.Nevada = { - ["Creech_AFB"] = "Creech", - ["Groom_Lake_AFB"] = "Groom Lake", - ["McCarran_International_Airport"] = "McCarran International", - ["Nellis_AFB"] = "Nellis", - ["Beatty_Airport"] = "Beatty", - ["Boulder_City_Airport"] = "Boulder City", + ["Beatty"] = "Beatty", + ["Boulder_City"] = "Boulder City", + ["Creech"] = "Creech", ["Echo_Bay"] = "Echo Bay", - ["Henderson_Executive_Airport"] = "Henderson Executive", - ["Jean_Airport"] = "Jean", - ["Laughlin_Airport"] = "Laughlin", + ["Groom_Lake"] = "Groom Lake", + ["Henderson_Executive"] = "Henderson Executive", + ["Jean"] = "Jean", + ["Laughlin"] = "Laughlin", ["Lincoln_County"] = "Lincoln County", + ["McCarran_International"] = "McCarran International", ["Mesquite"] = "Mesquite", - ["Mina_Airport"] = "Mina", + ["Mina"] = "Mina", + ["Nellis"] = "Nellis", ["North_Las_Vegas"] = "North Las Vegas", - ["Pahute_Mesa_Airstrip"] = "Pahute Mesa", - ["Tonopah_Airport"] = "Tonopah", - ["Tonopah_Test_Range_Airfield"] = "Tonopah Test Range", + ["Pahute_Mesa"] = "Pahute Mesa", + ["Tonopah"] = "Tonopah", + ["Tonopah_Test_Range"] = "Tonopah Test Range", } --- Airbases of the Normandy map: @@ -334,31 +334,32 @@ AIRBASE.Normandy = { --- Airbases of the Persion Gulf Map: -- --- * AIRBASE.PersianGulf.Abu_Dhabi_International_Airport --- * AIRBASE.PersianGulf.Abu_Musa_Island_Airport --- * AIRBASE.PersianGulf.Al_Bateen_Airport --- * AIRBASE.PersianGulf.Al_Ain_International_Airport --- * AIRBASE.PersianGulf.Al_Dhafra_AB +-- * AIRBASE.PersianGulf.Abu_Dhabi_Intl +-- * AIRBASE.PersianGulf.Abu_Musa_Island +-- * AIRBASE.PersianGulf.Al_Ain_Intl +-- * AIRBASE.PersianGulf.Al_Bateen +-- * AIRBASE.PersianGulf.Al_Dhafra_AFB -- * AIRBASE.PersianGulf.Al_Maktoum_Intl --- * AIRBASE.PersianGulf.Al_Minhad_AB --- * AIRBASE.PersianGulf.Bandar_e_Jask_airfield +-- * AIRBASE.PersianGulf.Al_Minhad_AFB -- * AIRBASE.PersianGulf.Bandar_Abbas_Intl -- * AIRBASE.PersianGulf.Bandar_Lengeh +-- * AIRBASE.PersianGulf.Bandar_e_Jask -- * AIRBASE.PersianGulf.Dubai_Intl -- * AIRBASE.PersianGulf.Fujairah_Intl -- * AIRBASE.PersianGulf.Havadarya --- * AIRBASE.PersianGulf.Jiroft_Airport --- * AIRBASE.PersianGulf.Kerman_Airport +-- * AIRBASE.PersianGulf.Jiroft +-- * AIRBASE.PersianGulf.Kerman -- * AIRBASE.PersianGulf.Khasab --- * AIRBASE.PersianGulf.Kish_International_Airport --- * AIRBASE.PersianGulf.Lar_Airbase --- * AIRBASE.PersianGulf.Lavan_Island_Airport --- * AIRBASE.PersianGulf.Liwa_Airbase +-- * AIRBASE.PersianGulf.Kish_Intl +-- * AIRBASE.PersianGulf.Lar +-- * AIRBASE.PersianGulf.Lavan_Island +-- * AIRBASE.PersianGulf.Liwa_AFB -- * AIRBASE.PersianGulf.Qeshm_Island --- * AIRBASE.PersianGulf.Ras_Al_Khaimah --- * AIRBASE.PersianGulf.Sas_Al_Nakheel_Airport +-- * AIRBASE.PersianGulf.Quasoura_airport +-- * AIRBASE.PersianGulf.Ras_Al_Khaimah_Intl +-- * AIRBASE.PersianGulf.Sas_Al_Nakheel -- * AIRBASE.PersianGulf.Sharjah_Intl --- * AIRBASE.PersianGulf.Shiraz_International_Airport +-- * AIRBASE.PersianGulf.Shiraz_Intl -- * AIRBASE.PersianGulf.Sir_Abu_Nuayr -- * AIRBASE.PersianGulf.Sirri_Island -- * AIRBASE.PersianGulf.Tunb_Island_AFB @@ -366,31 +367,32 @@ AIRBASE.Normandy = { -- -- @field PersianGulf AIRBASE.PersianGulf = { - ["Abu_Dhabi_International_Airport"] = "Abu Dhabi Intl", - ["Abu_Musa_Island_Airport"] = "Abu Musa Island", - ["Al_Ain_International_Airport"] = "Al Ain Intl", - ["Al_Bateen_Airport"] = "Al-Bateen", - ["Al_Dhafra_AB"] = "Al Dhafra AFB", + ["Abu_Dhabi_Intl"] = "Abu Dhabi Intl", + ["Abu_Musa_Island"] = "Abu Musa Island", + ["Al_Ain_Intl"] = "Al Ain Intl", + ["Al_Bateen"] = "Al-Bateen", + ["Al_Dhafra_AFB"] = "Al Dhafra AFB", ["Al_Maktoum_Intl"] = "Al Maktoum Intl", - ["Al_Minhad_AB"] = "Al Minhad AFB", + ["Al_Minhad_AFB"] = "Al Minhad AFB", ["Bandar_Abbas_Intl"] = "Bandar Abbas Intl", ["Bandar_Lengeh"] = "Bandar Lengeh", - ["Bandar_e_Jask_airfield"] = "Bandar-e-Jask", + ["Bandar_e_Jask"] = "Bandar-e-Jask", ["Dubai_Intl"] = "Dubai Intl", ["Fujairah_Intl"] = "Fujairah Intl", ["Havadarya"] = "Havadarya", - ["Jiroft_Airport"] = "Jiroft", - ["Kerman_Airport"] = "Kerman", + ["Jiroft"] = "Jiroft", + ["Kerman"] = "Kerman", ["Khasab"] = "Khasab", - ["Kish_International_Airport"] = "Kish Intl", - ["Lar_Airbase"] = "Lar", - ["Lavan_Island_Airport"] = "Lavan Island", - ["Liwa_Airbase"] = "Liwa AFB", + ["Kish_Intl"] = "Kish Intl", + ["Lar"] = "Lar", + ["Lavan_Island"] = "Lavan Island", + ["Liwa_AFB"] = "Liwa AFB", ["Qeshm_Island"] = "Qeshm Island", - ["Ras_Al_Khaimah"] = "Ras Al Khaimah Intl", - ["Sas_Al_Nakheel_Airport"] = "Sas Al Nakheel", + ["Quasoura_airport"] = "Quasoura_airport", + ["Ras_Al_Khaimah_Intl"] = "Ras Al Khaimah Intl", + ["Sas_Al_Nakheel"] = "Sas Al Nakheel", ["Sharjah_Intl"] = "Sharjah Intl", - ["Shiraz_International_Airport"] = "Shiraz Intl", + ["Shiraz_Intl"] = "Shiraz Intl", ["Sir_Abu_Nuayr"] = "Sir Abu Nuayr", ["Sirri_Island"] = "Sirri Island", ["Tunb_Island_AFB"] = "Tunb Island AFB", @@ -400,317 +402,322 @@ AIRBASE.PersianGulf = { --- Airbases of The Channel Map: -- -- * AIRBASE.TheChannel.Abbeville_Drucat +-- * AIRBASE.TheChannel.Biggin_Hill +-- * AIRBASE.TheChannel.Detling +-- * AIRBASE.TheChannel.Dunkirk_Mardyck +-- * AIRBASE.TheChannel.Eastchurch +-- * AIRBASE.TheChannel.Hawkinge +-- * AIRBASE.TheChannel.Headcorn +-- * AIRBASE.TheChannel.High_Halden +-- * AIRBASE.TheChannel.Lympne +-- * AIRBASE.TheChannel.Manston -- * AIRBASE.TheChannel.Merville_Calonne -- * AIRBASE.TheChannel.Saint_Omer_Longuenesse --- * AIRBASE.TheChannel.Dunkirk_Mardyck --- * AIRBASE.TheChannel.Manston --- * AIRBASE.TheChannel.Hawkinge --- * AIRBASE.TheChannel.Lympne --- * AIRBASE.TheChannel.Detling --- * AIRBASE.TheChannel.High_Halden --- * AIRBASE.TheChannel.Biggin_Hill --- * AIRBASE.TheChannel.Eastchurch --- * AIRBASE.TheChannel.Headcorn -- -- @field TheChannel AIRBASE.TheChannel = { ["Abbeville_Drucat"] = "Abbeville Drucat", + ["Biggin_Hill"] = "Biggin Hill", + ["Detling"] = "Detling", + ["Dunkirk_Mardyck"] = "Dunkirk Mardyck", + ["Eastchurch"] = "Eastchurch", + ["Hawkinge"] = "Hawkinge", + ["Headcorn"] = "Headcorn", + ["High_Halden"] = "High Halden", + ["Lympne"] = "Lympne", + ["Manston"] = "Manston", ["Merville_Calonne"] = "Merville Calonne", ["Saint_Omer_Longuenesse"] = "Saint Omer Longuenesse", - ["Dunkirk_Mardyck"] = "Dunkirk Mardyck", - ["Manston"] = "Manston", - ["Hawkinge"] = "Hawkinge", - ["Lympne"] = "Lympne", - ["Detling"] = "Detling", - ["High_Halden"] = "High Halden", - ["Biggin_Hill"] = "Biggin Hill", - ["Eastchurch"] = "Eastchurch", - ["Headcorn"] = "Headcorn", } --- Airbases of the Syria map: -- --- * AIRBASE.Syria.Kuweires --- * AIRBASE.Syria.Incirlik --- * AIRBASE.Syria.King_Abdullah_II --- * AIRBASE.Syria.Akrotiri --- * AIRBASE.Syria.Aleppo -- * AIRBASE.Syria.Abu_al_Duhur --- * AIRBASE.Syria.Hatay --- * AIRBASE.Syria.Paphos +-- * AIRBASE.Syria.Adana_Sakirpasa +-- * AIRBASE.Syria.Akrotiri +-- * AIRBASE.Syria.Al_Dumayr +-- * AIRBASE.Syria.Al_Qusayr +-- * AIRBASE.Syria.Aleppo +-- * AIRBASE.Syria.Amman +-- * AIRBASE.Syria.An_Nasiriyah -- * AIRBASE.Syria.At_Tanf --- * AIRBASE.Syria.Tal_Siman --- * AIRBASE.Syria.Rayak +-- * AIRBASE.Syria.Bassel_Al_Assad +-- * AIRBASE.Syria.Beirut_Rafic_Hariri +-- * AIRBASE.Syria.Damascus +-- * AIRBASE.Syria.Deir_ez_Zor +-- * AIRBASE.Syria.Ercan +-- * AIRBASE.Syria.Eyn_Shemer +-- * AIRBASE.Syria.Gaziantep +-- * AIRBASE.Syria.Gazipasa +-- * AIRBASE.Syria.Gecitkale +-- * AIRBASE.Syria.H3 +-- * AIRBASE.Syria.H3_Northwest +-- * AIRBASE.Syria.H3_Southwest +-- * AIRBASE.Syria.H4 +-- * AIRBASE.Syria.Haifa +-- * AIRBASE.Syria.Hama +-- * AIRBASE.Syria.Hatay +-- * AIRBASE.Syria.Herzliya +-- * AIRBASE.Syria.Incirlik +-- * AIRBASE.Syria.Jirah +-- * AIRBASE.Syria.Khalkhalah +-- * AIRBASE.Syria.Kharab_Ishk +-- * AIRBASE.Syria.King_Abdullah_II +-- * AIRBASE.Syria.King_Hussein_Air_College +-- * AIRBASE.Syria.Kingsfield +-- * AIRBASE.Syria.Kiryat_Shmona +-- * AIRBASE.Syria.Kuweires +-- * AIRBASE.Syria.Lakatamia +-- * AIRBASE.Syria.Larnaca +-- * AIRBASE.Syria.Marj_Ruhayyil +-- * AIRBASE.Syria.Marj_as_Sultan_North +-- * AIRBASE.Syria.Marj_as_Sultan_South +-- * AIRBASE.Syria.Megiddo +-- * AIRBASE.Syria.Mezzeh +-- * AIRBASE.Syria.Minakh -- * AIRBASE.Syria.Muwaffaq_Salti -- * AIRBASE.Syria.Naqoura --- * AIRBASE.Syria.Gaziantep --- * AIRBASE.Syria.Al_Qusayr --- * AIRBASE.Syria.Al_Dumayr --- * AIRBASE.Syria.Kingsfield --- * AIRBASE.Syria.Marj_as_Sultan_North --- * AIRBASE.Syria.Beirut_Rafic_Hariri --- * AIRBASE.Syria.Palmyra --- * AIRBASE.Syria.Hama --- * AIRBASE.Syria.Eyn_Shemer --- * AIRBASE.Syria.Sanliurfa --- * AIRBASE.Syria.Amman --- * AIRBASE.Syria.Deir_ez_Zor --- * AIRBASE.Syria.Taftanaz --- * AIRBASE.Syria.Damascus --- * AIRBASE.Syria.Gazipasa --- * AIRBASE.Syria.Herzliya --- * AIRBASE.Syria.H4 --- * AIRBASE.Syria.Tiyas --- * AIRBASE.Syria.Lakatamia --- * AIRBASE.Syria.Kharab_Ishk --- * AIRBASE.Syria.Haifa --- * AIRBASE.Syria.Khalkhalah --- * AIRBASE.Syria.Megiddo --- * AIRBASE.Syria.An_Nasiriyah --- * AIRBASE.Syria.Bassel_Al_Assad --- * AIRBASE.Syria.Ruwayshid --- * AIRBASE.Syria.Mezzeh --- * AIRBASE.Syria.Gecitkale -- * AIRBASE.Syria.Nicosia --- * AIRBASE.Syria.Ramat_David --- * AIRBASE.Syria.Tha_lah --- * AIRBASE.Syria.H3_Northwest --- * AIRBASE.Syria.Sayqal --- * AIRBASE.Syria.Jirah --- * AIRBASE.Syria.Shayrat --- * AIRBASE.Syria.Adana_Sakirpasa --- * AIRBASE.Syria.Wujah_Al_Hajar +-- * AIRBASE.Syria.Palmyra +-- * AIRBASE.Syria.Paphos -- * AIRBASE.Syria.Pinarbashi --- * AIRBASE.Syria.H3_Southwest --- * AIRBASE.Syria.Rosh_Pina --- * AIRBASE.Syria.Kiryat_Shmona --- * AIRBASE.Syria.H3 --- * AIRBASE.Syria.Qabr_as_Sitt -- * AIRBASE.Syria.Prince_Hassan --- * AIRBASE.Syria.Larnaca --- * AIRBASE.Syria.King_Hussein_Air_College --- * AIRBASE.Syria.Ercan --- * AIRBASE.Syria.Marj_Ruhayyil --- * AIRBASE.Syria.Tabqa --- * AIRBASE.Syria.Marj_as_Sultan_South +-- * AIRBASE.Syria.Qabr_as_Sitt +-- * AIRBASE.Syria.Ramat_David +-- * AIRBASE.Syria.Rayak -- * AIRBASE.Syria.Rene_Mouawad --- * AIRBASE.Syria.Minakh +-- * AIRBASE.Syria.Rosh_Pina +-- * AIRBASE.Syria.Ruwayshid +-- * AIRBASE.Syria.Sanliurfa +-- * AIRBASE.Syria.Sayqal +-- * AIRBASE.Syria.Shayrat +-- * AIRBASE.Syria.Tabqa +-- * AIRBASE.Syria.Taftanaz +-- * AIRBASE.Syria.Tal_Siman +-- * AIRBASE.Syria.Tha_lah +-- * AIRBASE.Syria.Tiyas +-- * AIRBASE.Syria.Wujah_Al_Hajar -- --@field Syria AIRBASE.Syria={ - ["Kuweires"] = "Kuweires", - ["Incirlik"] = "Incirlik", - ["King_Abdullah_II"] = "King Abdullah II", - ["Akrotiri"] = "Akrotiri", - ["Aleppo"] = "Aleppo", ["Abu_al_Duhur"] = "Abu al-Duhur", - ["Hatay"] = "Hatay", - ["Paphos"] = "Paphos", + ["Adana_Sakirpasa"] = "Adana Sakirpasa", + ["Akrotiri"] = "Akrotiri", + ["Al_Dumayr"] = "Al-Dumayr", + ["Al_Qusayr"] = "Al Qusayr", + ["Aleppo"] = "Aleppo", + ["Amman"] = "Amman", + ["An_Nasiriyah"] = "An Nasiriyah", ["At_Tanf"] = "At Tanf", - ["Tal_Siman"] = "Tal Siman", - ["Rayak"] = "Rayak", + ["Bassel_Al_Assad"] = "Bassel Al-Assad", + ["Beirut_Rafic_Hariri"] = "Beirut-Rafic Hariri", + ["Damascus"] = "Damascus", + ["Deir_ez_Zor"] = "Deir ez-Zor", + ["Ercan"] = "Ercan", + ["Eyn_Shemer"] = "Eyn Shemer", + ["Gaziantep"] = "Gaziantep", + ["Gazipasa"] = "Gazipasa", + ["Gecitkale"] = "Gecitkale", + ["H3"] = "H3", + ["H3_Northwest"] = "H3 Northwest", + ["H3_Southwest"] = "H3 Southwest", + ["H4"] = "H4", + ["Haifa"] = "Haifa", + ["Hama"] = "Hama", + ["Hatay"] = "Hatay", + ["Herzliya"] = "Herzliya", + ["Incirlik"] = "Incirlik", + ["Jirah"] = "Jirah", + ["Khalkhalah"] = "Khalkhalah", + ["Kharab_Ishk"] = "Kharab Ishk", + ["King_Abdullah_II"] = "King Abdullah II", + ["King_Hussein_Air_College"] = "King Hussein Air College", + ["Kingsfield"] = "Kingsfield", + ["Kiryat_Shmona"] = "Kiryat Shmona", + ["Kuweires"] = "Kuweires", + ["Lakatamia"] = "Lakatamia", + ["Larnaca"] = "Larnaca", + ["Marj_Ruhayyil"] = "Marj Ruhayyil", + ["Marj_as_Sultan_North"] = "Marj as Sultan North", + ["Marj_as_Sultan_South"] = "Marj as Sultan South", + ["Megiddo"] = "Megiddo", + ["Mezzeh"] = "Mezzeh", + ["Minakh"] = "Minakh", ["Muwaffaq_Salti"] = "Muwaffaq Salti", ["Naqoura"] = "Naqoura", - ["Gaziantep"] = "Gaziantep", - ["Al_Qusayr"] = "Al Qusayr", - ["Al_Dumayr"] = "Al-Dumayr", - ["Kingsfield"] = "Kingsfield", - ["Marj_as_Sultan_North"] = "Marj as Sultan North", - ["Beirut_Rafic_Hariri"] = "Beirut-Rafic Hariri", - ["Palmyra"] = "Palmyra", - ["Hama"] = "Hama", - ["Eyn_Shemer"] = "Eyn Shemer", - ["Sanliurfa"] = "Sanliurfa", - ["Amman"] = "Amman", - ["Deir_ez_Zor"] = "Deir ez-Zor", - ["Taftanaz"] = "Taftanaz", - ["Damascus"] = "Damascus", - ["Gazipasa"] = "Gazipasa", - ["Herzliya"] = "Herzliya", - ["H4"] = "H4", - ["Tiyas"] = "Tiyas", - ["Lakatamia"] = "Lakatamia", - ["Kharab_Ishk"] = "Kharab Ishk", - ["Haifa"] = "Haifa", - ["Khalkhalah"] = "Khalkhalah", - ["Megiddo"] = "Megiddo", - ["An_Nasiriyah"] = "An Nasiriyah", - ["Bassel_Al_Assad"] = "Bassel Al-Assad", - ["Ruwayshid"] = "Ruwayshid", - ["Mezzeh"] = "Mezzeh", - ["Gecitkale"] = "Gecitkale", ["Nicosia"] = "Nicosia", - ["Ramat_David"] = "Ramat David", - ["Tha_lah"] = "Tha'lah", - ["H3_Northwest"] = "H3 Northwest", - ["Sayqal"] = "Sayqal", - ["Jirah"] = "Jirah", - ["Shayrat"] = "Shayrat", - ["Adana_Sakirpasa"] = "Adana Sakirpasa", - ["Wujah_Al_Hajar"] = "Wujah Al Hajar", + ["Palmyra"] = "Palmyra", + ["Paphos"] = "Paphos", ["Pinarbashi"] = "Pinarbashi", - ["H3_Southwest"] = "H3 Southwest", - ["Rosh_Pina"] = "Rosh Pina", - ["Kiryat_Shmona"] = "Kiryat Shmona", - ["H3"] = "H3", - ["Qabr_as_Sitt"] = "Qabr as Sitt", ["Prince_Hassan"] = "Prince Hassan", - ["Larnaca"] = "Larnaca", - ["King_Hussein_Air_College"] = "King Hussein Air College", - ["Ercan"] = "Ercan", - ["Marj_Ruhayyil"] = "Marj Ruhayyil", - ["Tabqa"] = "Tabqa", - ["Marj_as_Sultan_South"] = "Marj as Sultan South", + ["Qabr_as_Sitt"] = "Qabr as Sitt", + ["Ramat_David"] = "Ramat David", + ["Rayak"] = "Rayak", ["Rene_Mouawad"] = "Rene Mouawad", - ["Minakh"] = "Minakh", + ["Rosh_Pina"] = "Rosh Pina", + ["Ruwayshid"] = "Ruwayshid", + ["Sanliurfa"] = "Sanliurfa", + ["Sayqal"] = "Sayqal", + ["Shayrat"] = "Shayrat", + ["Tabqa"] = "Tabqa", + ["Taftanaz"] = "Taftanaz", + ["Tal_Siman"] = "Tal Siman", + ["Tha_lah"] = "Tha'lah", + ["Tiyas"] = "Tiyas", + ["Wujah_Al_Hajar"] = "Wujah Al Hajar", } --- Airbases of the Mariana Islands map: -- --- * AIRBASE.MarianaIslands.Rota_Intl -- * AIRBASE.MarianaIslands.Andersen_AFB -- * AIRBASE.MarianaIslands.Antonio_B_Won_Pat_Intl --- * AIRBASE.MarianaIslands.Saipan_Intl --- * AIRBASE.MarianaIslands.Tinian_Intl +-- * AIRBASE.MarianaIslands.North_West_Field -- * AIRBASE.MarianaIslands.Olf_Orote -- * AIRBASE.MarianaIslands.Pagan_Airstrip --- * AIRBASE.MarianaIslands.North_West_Field +-- * AIRBASE.MarianaIslands.Rota_Intl +-- * AIRBASE.MarianaIslands.Saipan_Intl +-- * AIRBASE.MarianaIslands.Tinian_Intl -- -- @field MarianaIslands AIRBASE.MarianaIslands = { - ["Rota_Intl"] = "Rota Intl", ["Andersen_AFB"] = "Andersen AFB", ["Antonio_B_Won_Pat_Intl"] = "Antonio B. Won Pat Intl", - ["Saipan_Intl"] = "Saipan Intl", - ["Tinian_Intl"] = "Tinian Intl", + ["North_West_Field"] = "North West Field", ["Olf_Orote"] = "Olf Orote", ["Pagan_Airstrip"] = "Pagan Airstrip", - ["North_West_Field"] = "North West Field", + ["Rota_Intl"] = "Rota Intl", + ["Saipan_Intl"] = "Saipan Intl", + ["Tinian_Intl"] = "Tinian Intl", } --- Airbases of the South Atlantic map: -- --- * AIRBASE.SouthAtlantic.Port_Stanley --- * AIRBASE.SouthAtlantic.Mount_Pleasant --- * AIRBASE.SouthAtlantic.San_Carlos_FOB --- * AIRBASE.SouthAtlantic.Rio_Grande --- * AIRBASE.SouthAtlantic.Rio_Gallegos --- * AIRBASE.SouthAtlantic.Ushuaia --- * AIRBASE.SouthAtlantic.Ushuaia_Helo_Port --- * AIRBASE.SouthAtlantic.Punta_Arenas --- * AIRBASE.SouthAtlantic.Pampa_Guanaco --- * AIRBASE.SouthAtlantic.San_Julian --- * AIRBASE.SouthAtlantic.Puerto_Williams --- * AIRBASE.SouthAtlantic.Puerto_Natales --- * AIRBASE.SouthAtlantic.El_Calafate --- * AIRBASE.SouthAtlantic.Puerto_Santa_Cruz --- * AIRBASE.SouthAtlantic.Comandante_Luis_Piedrabuena --- * AIRBASE.SouthAtlantic.Aerodromo_De_Tolhuin --- * AIRBASE.SouthAtlantic.Porvenir_Airfield --- * AIRBASE.SouthAtlantic.Almirante_Schroeders --- * AIRBASE.SouthAtlantic.Rio_Turbio --- * AIRBASE.SouthAtlantic.Rio_Chico --- * AIRBASE.SouthAtlantic.Franco_Bianco --- * AIRBASE.SouthAtlantic.Goose_Green --- * AIRBASE.SouthAtlantic.Hipico --- * AIRBASE.SouthAtlantic.CaletaTortel +-- * AIRBASE.Falklands.Almirante_Schroeders +-- * AIRBASE.Falklands.Caleta_Tortel +-- * AIRBASE.Falklands.Comandante_Luis_Piedrabuena +-- * AIRBASE.Falklands.Cullen +-- * AIRBASE.Falklands.El_Calafate +-- * AIRBASE.Falklands.Franco_Bianco +-- * AIRBASE.Falklands.Gobernador_Gregores +-- * AIRBASE.Falklands.Goose_Green +-- * AIRBASE.Falklands.Gull_Point +-- * AIRBASE.Falklands.Hipico_Flying_Club +-- * AIRBASE.Falklands.Mount_Pleasant +-- * AIRBASE.Falklands.O_Higgins +-- * AIRBASE.Falklands.Pampa_Guanaco +-- * AIRBASE.Falklands.Port_Stanley +-- * AIRBASE.Falklands.Porvenir +-- * AIRBASE.Falklands.Puerto_Natales +-- * AIRBASE.Falklands.Puerto_Santa_Cruz +-- * AIRBASE.Falklands.Puerto_Williams +-- * AIRBASE.Falklands.Punta_Arenas +-- * AIRBASE.Falklands.Rio_Chico +-- * AIRBASE.Falklands.Rio_Gallegos +-- * AIRBASE.Falklands.Rio_Grande +-- * AIRBASE.Falklands.Rio_Turbio +-- * AIRBASE.Falklands.San_Carlos_FOB +-- * AIRBASE.Falklands.San_Julian +-- * AIRBASE.Falklands.Tolhuin +-- * AIRBASE.Falklands.Ushuaia +-- * AIRBASE.Falklands.Ushuaia_Helo_Port -- --@field MarianaIslands AIRBASE.SouthAtlantic={ - ["Port_Stanley"]="Port Stanley", - ["Mount_Pleasant"]="Mount Pleasant", - ["San_Carlos_FOB"]="San Carlos FOB", - ["Rio_Grande"]="Rio Grande", - ["Rio_Gallegos"]="Rio Gallegos", - ["Ushuaia"]="Ushuaia", - ["Ushuaia_Helo_Port"]="Ushuaia Helo Port", - ["Punta_Arenas"]="Punta Arenas", - ["Pampa_Guanaco"]="Pampa Guanaco", - ["San_Julian"]="San Julian", - ["Puerto_Williams"]="Puerto Williams", - ["Puerto_Natales"]="Puerto Natales", - ["El_Calafate"]="El Calafate", - ["Puerto_Santa_Cruz"]="Puerto Santa Cruz", - ["Comandante_Luis_Piedrabuena"]="Comandante Luis Piedrabuena", - ["Aerodromo_De_Tolhuin"]="Aerodromo De Tolhuin", - ["Porvenir_Airfield"]="Porvenir Airfield", - ["Almirante_Schroeders"]="Almirante Schroeders", - ["Rio_Turbio"]="Rio Turbio", - ["Rio_Chico"] = "Rio Chico", + ["Almirante_Schroeders"] = "Almirante Schroeders", + ["Caleta_Tortel"] = "Caleta Tortel", + ["Comandante_Luis_Piedrabuena"] = "Comandante Luis Piedrabuena", + ["Cullen"] = "Cullen", + ["El_Calafate"] = "El Calafate", ["Franco_Bianco"] = "Franco Bianco", + ["Gobernador_Gregores"] = "Gobernador Gregores", ["Goose_Green"] = "Goose Green", - ["Hipico_Flying_Club"] = "Hipico Flying Club", - ["CaletaTortel"] = "CaletaTortel", - ["Aeropuerto_de_Gobernador_Gregores"] = "Aeropuerto de Gobernador Gregores", - ["Aerodromo_O_Higgins"] = "Aerodromo O'Higgins", - ["Cullen_Airport"] = "Cullen Airport", ["Gull_Point"] = "Gull Point", + ["Hipico_Flying_Club"] = "Hipico Flying Club", + ["Mount_Pleasant"] = "Mount Pleasant", + ["O_Higgins"] = "O'Higgins", + ["Pampa_Guanaco"] = "Pampa Guanaco", + ["Port_Stanley"] = "Port Stanley", + ["Porvenir"] = "Porvenir", + ["Puerto_Natales"] = "Puerto Natales", + ["Puerto_Santa_Cruz"] = "Puerto Santa Cruz", + ["Puerto_Williams"] = "Puerto Williams", + ["Punta_Arenas"] = "Punta Arenas", + ["Rio_Chico"] = "Rio Chico", + ["Rio_Gallegos"] = "Rio Gallegos", + ["Rio_Grande"] = "Rio Grande", + ["Rio_Turbio"] = "Rio Turbio", + ["San_Carlos_FOB"] = "San Carlos FOB", + ["San_Julian"] = "San Julian", + ["Tolhuin"] = "Tolhuin", + ["Ushuaia"] = "Ushuaia", + ["Ushuaia_Helo_Port"] = "Ushuaia Helo Port", } --- Airbases of the Sinai map: -- --- * AIRBASE.Sinai.Abu_Suwayr --- * AIRBASE.Sinai.Sde_Dov --- * AIRBASE.Sinai.AzZaqaziq --- * AIRBASE.Sinai.Hatzor --- * AIRBASE.Sinai.Kedem --- * AIRBASE.Sinai.Nevatim --- * AIRBASE.Sinai.Cairo_International_Airport --- * AIRBASE.Sinai.Al_Ismailiyah --- * AIRBASE.Sinai.As_Salihiyah --- * AIRBASE.Sinai.Fayed --- * AIRBASE.Sinai.Bilbeis_Air_Base --- * AIRBASE.Sinai.Ramon_Airbase --- * AIRBASE.Sinai.Kibrit_Air_Base --- * AIRBASE.Sinai.El_Arish --- * AIRBASE.Sinai.Ovda --- * AIRBASE.Sinai.Melez --- * AIRBASE.Sinai.Al_Mansurah --- * AIRBASE.Sinai.Palmahim --- * AIRBASE.Sinai.Baluza --- * AIRBASE.Sinai.El_Gora --- * AIRBASE.Sinai.Difarsuwar_Airfield --- * AIRBASE.Sinai.Wadi_al_Jandali --- * AIRBASE.Sinai.St_Catherine --- * AIRBASE.Sinai.Tel_Nof --- * AIRBASE.Sinai.Abu_Rudeis --- * AIRBASE.Sinai.Inshas_Airbase --- * AIRBASE.Sinai.Ben_Gurion --- * AIRBASE.Sinai.Bir_Hasanah --- * AIRBASE.Sinai.Cairo_West +-- * AIRBASE.SinaiMap.Abu_Rudeis +-- * AIRBASE.SinaiMap.Abu_Suwayr +-- * AIRBASE.SinaiMap.Al_Ismailiyah +-- * AIRBASE.SinaiMap.Al_Mansurah +-- * AIRBASE.SinaiMap.As_Salihiyah +-- * AIRBASE.SinaiMap.AzZaqaziq +-- * AIRBASE.SinaiMap.Baluza +-- * AIRBASE.SinaiMap.Ben_Gurion +-- * AIRBASE.SinaiMap.Bilbeis_Air_Base +-- * AIRBASE.SinaiMap.Bir_Hasanah +-- * AIRBASE.SinaiMap.Cairo_International_Airport +-- * AIRBASE.SinaiMap.Cairo_West +-- * AIRBASE.SinaiMap.Difarsuwar_Airfield +-- * AIRBASE.SinaiMap.El_Arish +-- * AIRBASE.SinaiMap.El_Gora +-- * AIRBASE.SinaiMap.Fayed +-- * AIRBASE.SinaiMap.Hatzerim +-- * AIRBASE.SinaiMap.Hatzor +-- * AIRBASE.SinaiMap.Inshas_Airbase +-- * AIRBASE.SinaiMap.Kedem +-- * AIRBASE.SinaiMap.Kibrit_Air_Base +-- * AIRBASE.SinaiMap.Melez +-- * AIRBASE.SinaiMap.Nevatim +-- * AIRBASE.SinaiMap.Ovda +-- * AIRBASE.SinaiMap.Palmahim +-- * AIRBASE.SinaiMap.Ramon_Airbase +-- * AIRBASE.SinaiMap.Sde_Dov +-- * AIRBASE.SinaiMap.St_Catherine +-- * AIRBASE.SinaiMap.Tel_Nof +-- * AIRBASE.SinaiMap.Wadi_al_Jandali -- -- @field Sinai AIRBASE.Sinai = { - ["Hatzerim"] = "Hatzerim", + ["Abu_Rudeis"] = "Abu Rudeis", ["Abu_Suwayr"] = "Abu Suwayr", - ["Sde_Dov"] = "Sde Dov", - ["AzZaqaziq"] = "AzZaqaziq", - ["Hatzor"] = "Hatzor", - ["Kedem"] = "Kedem", - ["Nevatim"] = "Nevatim", - ["Cairo_International_Airport"] = "Cairo International Airport", ["Al_Ismailiyah"] = "Al Ismailiyah", - ["As_Salihiyah"] = "As Salihiyah", - ["Fayed"] = "Fayed", - ["Bilbeis_Air_Base"] = "Bilbeis Air Base", - ["Ramon_Airbase"] = "Ramon Airbase", - ["Kibrit_Air_Base"] = "Kibrit Air Base", - ["El_Arish"] = "El Arish", - ["Ovda"] = "Ovda", - ["Melez"] = "Melez", ["Al_Mansurah"] = "Al Mansurah", - ["Palmahim"] = "Palmahim", + ["As_Salihiyah"] = "As Salihiyah", + ["AzZaqaziq"] = "AzZaqaziq", ["Baluza"] = "Baluza", - ["El_Gora"] = "El Gora", + ["Ben_Gurion"] = "Ben-Gurion", + ["Bilbeis_Air_Base"] = "Bilbeis Air Base", + ["Bir_Hasanah"] = "Bir Hasanah", + ["Cairo_International_Airport"] = "Cairo International Airport", + ["Cairo_West"] = "Cairo West", ["Difarsuwar_Airfield"] = "Difarsuwar Airfield", - ["Wadi_al_Jandali"] = "Wadi al Jandali", + ["El_Arish"] = "El Arish", + ["El_Gora"] = "El Gora", + ["Fayed"] = "Fayed", + ["Hatzerim"] = "Hatzerim", + ["Hatzor"] = "Hatzor", + ["Inshas_Airbase"] = "Inshas Airbase", + ["Kedem"] = "Kedem", + ["Kibrit_Air_Base"] = "Kibrit Air Base", + ["Melez"] = "Melez", + ["Nevatim"] = "Nevatim", + ["Ovda"] = "Ovda", + ["Palmahim"] = "Palmahim", + ["Ramon_Airbase"] = "Ramon Airbase", + ["Sde_Dov"] = "Sde Dov", ["St_Catherine"] = "St Catherine", ["Tel_Nof"] = "Tel Nof", - ["Abu_Rudeis"] = "Abu Rudeis", - ["Inshas_Airbase"] = "Inshas Airbase", - ["Ben_Gurion"] = "Ben-Gurion", - ["Bir_Hasanah"] = "Bir Hasanah", - ["Cairo_West"] = "Cairo West", + ["Wadi_al_Jandali"] = "Wadi al Jandali", } --- AIRBASE.ParkingSpot ".Coordinate, ".TerminalID", ".TerminalType", ".TOAC", ".Free", ".TerminalID0", ".DistToRwy". From 51911d3292b2f99204f6c075af8ee64bd9fabe52 Mon Sep 17 00:00:00 2001 From: kaltokri Date: Thu, 29 Feb 2024 19:00:33 +0100 Subject: [PATCH 2/2] Enhanced documentation of InitRandomizePositionZone InitRandomizePositionZone will not ensure, that every unit is placed within the zone! --- Moose Development/Moose/Wrapper/Group.lua | 743 +++++++++++----------- 1 file changed, 372 insertions(+), 371 deletions(-) diff --git a/Moose Development/Moose/Wrapper/Group.lua b/Moose Development/Moose/Wrapper/Group.lua index a37c32132..a8afc6fbe 100644 --- a/Moose Development/Moose/Wrapper/Group.lua +++ b/Moose Development/Moose/Wrapper/Group.lua @@ -1,9 +1,9 @@ --- **Wrapper** - GROUP wraps the DCS Class Group objects. --- +-- -- === --- +-- -- The @{#GROUP} class is a wrapper class to handle the DCS Group objects. --- +-- -- ## Features: -- -- * Support all DCS Group APIs. @@ -14,27 +14,27 @@ -- **IMPORTANT: ONE SHOULD NEVER SANITIZE these GROUP OBJECT REFERENCES! (make the GROUP object references nil).** -- -- === --- +-- -- For each DCS Group object alive within a running mission, a GROUP wrapper object (instance) will be created within the global _DATABASE object (an instance of @{Core.Database#DATABASE}). -- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Group objects are spawned (using the @{Core.Spawn} class). --- +-- -- The GROUP class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference -- using the DCS Group or the DCS GroupName. -- -- The GROUP methods will reference the DCS Group object by name when it is needed during API execution. -- If the DCS Group object does not exist or is nil, the GROUP methods will return nil and may log an exception in the DCS.log file. --- +-- -- === --- +-- -- ### Author: **FlightControl** --- --- ### Contributions: --- +-- +-- ### Contributions: +-- -- * **Entropy**, **Afinegan**: Came up with the requirement for AIOnOff(). -- * **Applevangelist**: various --- +-- -- === --- +-- -- @module Wrapper.Group -- @image Wrapper_Group.JPG @@ -45,9 +45,9 @@ --- Wrapper class of the DCS world Group object. --- +-- -- ## Finding groups --- +-- -- The GROUP class provides the following functions to retrieve quickly the relevant GROUP instance: -- -- * @{#GROUP.Find}(): Find a GROUP instance from the global _DATABASE object (an instance of @{Core.Database#DATABASE}) using a DCS Group object. @@ -57,28 +57,28 @@ -- -- ## Tasking of groups -- --- A GROUP is derived from the wrapper class CONTROLLABLE (@{Wrapper.Controllable#CONTROLLABLE}). +-- A GROUP is derived from the wrapper class CONTROLLABLE (@{Wrapper.Controllable#CONTROLLABLE}). -- See the @{Wrapper.Controllable} task methods section for a description of the task methods. -- -- But here is an example how a group can be assigned a task. --- +-- -- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class. --- +-- -- First we look up the objects. We create a GROUP object `HeliGroup`, using the @{#GROUP:FindByName}() method, looking up the `"Helicopter"` group object. -- Same for the `"AttackGroup"`. --- +-- -- local HeliGroup = GROUP:FindByName( "Helicopter" ) -- local AttackGroup = GROUP:FindByName( "AttackGroup" ) --- --- Now we retrieve the @{Wrapper.Unit#UNIT} objects of the `AttackGroup` object, using the method `:GetUnits()`. --- +-- +-- Now we retrieve the @{Wrapper.Unit#UNIT} objects of the `AttackGroup` object, using the method `:GetUnits()`. +-- -- local AttackUnits = AttackGroup:GetUnits() --- +-- -- Tasks are actually text strings that we build using methods of GROUP. --- So first, we declare an list of `Tasks`. --- +-- So first, we declare an list of `Tasks`. +-- -- local Tasks = {} --- +-- -- Now we loop over the `AttackUnits` using a for loop. -- We retrieve the `AttackUnit` using the `AttackGroup:GetUnit()` method. -- Each `AttackUnit` found, will be attacked by `HeliGroup`, using the method `HeliGroup:TaskAttackUnit()`. @@ -86,74 +86,74 @@ -- The code will assign the task string command to the next element in the `Task` list, using `Tasks[#Tasks+1]`. -- This little code will take the count of `Task` using `#` operator, and will add `1` to the count. -- This result will be the index of the `Task` element. --- +-- -- for i = 1, #AttackUnits do -- local AttackUnit = AttackGroup:GetUnit( i ) -- Tasks[#Tasks+1] = HeliGroup:TaskAttackUnit( AttackUnit ) -- end --- +-- -- Once these tasks have been executed, a function `_Resume` will be called ... --- +-- -- Tasks[#Tasks+1] = HeliGroup:TaskFunction( "_Resume", { "''" } ) --- +-- -- -- @param Wrapper.Group#GROUP HeliGroup -- function _Resume( HeliGroup ) -- env.info( '_Resume' ) --- +-- -- HeliGroup:MessageToAll( "Resuming",10,"Info") -- end --- +-- -- Now here is where the task gets assigned! -- Using `HeliGroup:PushTask`, the task is pushed onto the task queue of the group `HeliGroup`. -- Since `Tasks` is an array of tasks, we use the `HeliGroup:TaskCombo` method to execute the tasks. -- The `HeliGroup:PushTask` method can receive a delay parameter in seconds. -- In the example, `30` is given as a delay. --- --- --- HeliGroup:PushTask( +-- +-- +-- HeliGroup:PushTask( -- HeliGroup:TaskCombo( -- Tasks --- ), 30 --- ) --- +-- ), 30 +-- ) +-- -- That's it! -- But again, please refer to the @{Wrapper.Controllable} task methods section for a description of the different task methods that are available. --- --- +-- +-- -- -- ### Obtain the mission from group templates --- +-- -- Group templates contain complete mission descriptions. Sometimes you want to copy a complete mission from a group and assign it to another: --- +-- -- * @{Wrapper.Controllable#CONTROLLABLE.TaskMission}: (AIR + GROUND) Return a mission task from a mission template. -- -- ## GROUP Command methods -- -- A GROUP is a @{Wrapper.Controllable}. See the @{Wrapper.Controllable} command methods section for a description of the command methods. --- +-- -- ## GROUP option methods -- -- A GROUP is a @{Wrapper.Controllable}. See the @{Wrapper.Controllable} option methods section for a description of the option methods. --- +-- -- ## GROUP Zone validation methods --- +-- -- The group can be validated whether it is completely, partly or not within a @{Core.Zone}. -- Use the following Zone validation methods on the group: --- +-- -- * @{#GROUP.IsCompletelyInZone}: Returns true if all units of the group are within a @{Core.Zone}. -- * @{#GROUP.IsPartlyInZone}: Returns true if some units of the group are within a @{Core.Zone}. -- * @{#GROUP.IsNotInZone}: Returns true if none of the group units of the group are within a @{Core.Zone}. --- +-- -- The zone can be of any @{Core.Zone} class derived from @{Core.Zone#ZONE_BASE}. So, these methods are polymorphic to the zones tested on. --- +-- -- ## GROUP AI methods --- +-- -- A GROUP has AI methods to control the AI activation. --- +-- -- * @{#GROUP.SetAIOnOff}(): Turns the GROUP AI On or Off. -- * @{#GROUP.SetAIOn}(): Turns the GROUP AI On. -- * @{#GROUP.SetAIOff}(): Turns the GROUP AI Off. --- +-- -- @field #GROUP GROUP GROUP = { ClassName = "GROUP", @@ -255,7 +255,7 @@ function GROUP:NewTemplate( GroupTemplate, CoalitionSide, CategoryID, CountryID if not _DATABASE.GROUPS[GroupName] then _DATABASE.GROUPS[GroupName] = self - end + end self:SetEventPriority( 4 ) return self @@ -270,9 +270,9 @@ end function GROUP:Register( GroupName ) local self = BASE:Inherit( self, CONTROLLABLE:New( GroupName ) ) -- #GROUP - + self.GroupName = GroupName - + self:SetEventPriority( 4 ) return self end @@ -308,20 +308,20 @@ end -- -- Find a group with a partial group name -- local grp = GROUP:FindByMatching( "Apple" ) -- -- will return e.g. a group named "Apple-1-1" --- +-- -- -- using a pattern -- local grp = GROUP:FindByMatching( ".%d.%d$" ) -- -- will return the first group found ending in "-1-1" to "-9-9", but not e.g. "-10-1" function GROUP:FindByMatching( Pattern ) local GroupFound = nil - + for name,group in pairs(_DATABASE.GROUPS) do if string.match(name, Pattern ) then GroupFound = group break end end - + return GroupFound end @@ -333,19 +333,19 @@ end -- -- Find all group with a partial group name -- local grptable = GROUP:FindAllByMatching( "Apple" ) -- -- will return all groups with "Apple" in the name --- +-- -- -- using a pattern -- local grp = GROUP:FindAllByMatching( ".%d.%d$" ) -- -- will return the all groups found ending in "-1-1" to "-9-9", but not e.g. "-10-1" or "-1-10" function GROUP:FindAllByMatching( Pattern ) local GroupsFound = {} - + for name,group in pairs(_DATABASE.GROUPS) do if string.match(name, Pattern ) then GroupsFound[#GroupsFound+1] = group end end - + return GroupsFound end @@ -366,12 +366,12 @@ end --- Returns the @{DCS#Position3} position vectors indicating the point and direction vectors in 3D of the POSITIONABLE within the mission. -- @param Wrapper.Positionable#POSITIONABLE self --- @return DCS#Position The 3D position vectors of the POSITIONABLE or #nil if the groups not existing or alive. +-- @return DCS#Position The 3D position vectors of the POSITIONABLE or #nil if the groups not existing or alive. function GROUP:GetPositionVec3() -- Overridden from POSITIONABLE:GetPositionVec3() self:F2( self.PositionableName ) local DCSPositionable = self:GetDCSObject() - + if DCSPositionable then local unit = DCSPositionable:getUnits()[1] if unit then @@ -380,19 +380,19 @@ function GROUP:GetPositionVec3() -- Overridden from POSITIONABLE:GetPositionVec3 return PositionablePosition end end - + return nil end --- Returns if the group is alive. -- The Group must: --- +-- -- * Exist at run-time. -- * Has at least one unit. --- +-- -- When the first @{Wrapper.Unit} of the group is active, it will return true. -- If the first @{Wrapper.Unit} of the group is inactive, it will return false. --- +-- -- @param #GROUP self -- @return #boolean `true` if the group is alive *and* active, `false` if the group is alive but inactive or `#nil` if the group does not exist anymore. function GROUP:IsAlive() @@ -416,17 +416,17 @@ end --- Returns if the group is activated. -- @param #GROUP self --- @return #boolean `true` if group is activated or `#nil` The group is not existing or alive. +-- @return #boolean `true` if group is activated or `#nil` The group is not existing or alive. function GROUP:IsActive() self:F2( self.GroupName ) local DCSGroup = self:GetDCSObject() -- DCS#Group - + if DCSGroup then local unit = DCSGroup:getUnit(1) if unit then local GroupIsActive = unit:isActive() - return GroupIsActive + return GroupIsActive end end @@ -454,21 +454,21 @@ end -- -- Ship unit example: destroy the Ship silently. -- Ship = GROUP:FindByName( "Ship" ) -- Ship:Destroy() --- +-- -- @usage -- -- Destroy without event generation example. -- Ship = GROUP:FindByName( "Boat" ) -- Ship:Destroy( false ) -- Don't generate an event upon destruction. --- +-- function GROUP:Destroy( GenerateEvent, delay ) self:F2( self.GroupName ) - + if delay and delay>0 then self:ScheduleOnce(delay, GROUP.Destroy, self, GenerateEvent) else local DCSGroup = self:GetDCSObject() - + if DCSGroup then for Index, UnitData in pairs( DCSGroup:getUnits() ) do if GenerateEvent and GenerateEvent == true then @@ -488,19 +488,19 @@ function GROUP:Destroy( GenerateEvent, delay ) DCSGroup = nil end end - + return nil end --- Returns category of the DCS Group. Returns one of --- +-- -- * Group.Category.AIRPLANE -- * Group.Category.HELICOPTER -- * Group.Category.GROUND -- * Group.Category.SHIP -- * Group.Category.TRAIN --- +-- -- @param #GROUP self -- @return DCS#Group.Category The category ID. function GROUP:GetCategory() @@ -584,12 +584,12 @@ function GROUP:HasAttribute(attribute, all) -- Get all units of the group. local _units=self:GetUnits() - + if _units then - + local _allhave=true local _onehas=false - + for _,_unit in pairs(_units) do local _unit=_unit --Wrapper.Unit#UNIT if _unit then @@ -599,17 +599,17 @@ function GROUP:HasAttribute(attribute, all) else _allhave=false end - end + end end - + if all==true then return _allhave else return _onehas end - + end - + return nil end @@ -622,27 +622,27 @@ function GROUP:GetSpeedMax() local DCSGroup = self:GetDCSObject() if DCSGroup then - + local Units=self:GetUnits() - + local speedmax=nil - + for _,unit in pairs(Units) do local unit=unit --Wrapper.Unit#UNIT - + local speed=unit:GetSpeedMax() - + if speedmax==nil or speed threatlevelMax then threatlevelMax=threatlevel @@ -2371,12 +2372,12 @@ end --- Returns true if the first unit of the GROUP is in the air. -- @param Wrapper.Group#GROUP self --- @return #boolean true if in the first unit of the group is in the air or #nil if the GROUP is not existing or not alive. +-- @return #boolean true if in the first unit of the group is in the air or #nil if the GROUP is not existing or not alive. function GROUP:InAir() self:F2( self.GroupName ) local DCSGroup = self:GetDCSObject() - + if DCSGroup then local DCSUnit = DCSGroup:getUnit(1) if DCSUnit then @@ -2385,7 +2386,7 @@ function GROUP:InAir() return GroupInAir end end - + return nil end @@ -2398,58 +2399,58 @@ function GROUP:IsAirborne(AllUnits) -- Get all units of the group. local units=self:GetUnits() - + if units then - + if AllUnits then - + --- We want to know if ALL units are airborne. for _,_unit in pairs(units) do local unit=_unit --Wrapper.Unit#UNIT - + if unit then - + -- Unit in air or not. local inair=unit:InAir() - + -- At least one unit is not in air. if not inair then return false end end - + end - + -- All units are in air. return true - + else - + --- We want to know if ANY unit is airborne. for _,_unit in pairs(units) do local unit=_unit --Wrapper.Unit#UNIT - + if unit then - + -- Unit in air or not. local inair=unit:InAir() - + if inair then -- At least one unit is in air. return true end - + end - + -- No unit is in air. return false - + end end end - + return nil end @@ -2458,17 +2459,17 @@ end --- Returns the DCS descriptor table of the nth unit of the group. -- @param #GROUP self -- @param #number n (Optional) The number of the unit for which the dscriptor is returned. --- @return DCS#Object.Desc The descriptor of the first unit of the group or #nil if the group does not exist any more. +-- @return DCS#Object.Desc The descriptor of the first unit of the group or #nil if the group does not exist any more. function GROUP:GetDCSDesc(n) -- Default. n=n or 1 - + local unit=self:GetUnit(n) if unit and unit:IsAlive()~=nil then local desc=unit:GetDesc() return desc end - + return nil end @@ -2530,14 +2531,14 @@ function GROUP:GetAttribute() elseif bomber then attribute=GROUP.Attribute.AIR_BOMBER elseif awacs then - attribute=GROUP.Attribute.AIR_AWACS + attribute=GROUP.Attribute.AIR_AWACS elseif transportplane then attribute=GROUP.Attribute.AIR_TRANSPORTPLANE elseif tanker then attribute=GROUP.Attribute.AIR_TANKER -- helos elseif attackhelicopter then - attribute=GROUP.Attribute.AIR_ATTACKHELO + attribute=GROUP.Attribute.AIR_ATTACKHELO elseif transporthelo then attribute=GROUP.Attribute.AIR_TRANSPORTHELO elseif uav then @@ -2550,15 +2551,15 @@ function GROUP:GetAttribute() elseif aaa then attribute=GROUP.Attribute.GROUND_AAA elseif artillery then - attribute=GROUP.Attribute.GROUND_ARTILLERY + attribute=GROUP.Attribute.GROUND_ARTILLERY elseif tank then - attribute=GROUP.Attribute.GROUND_TANK + attribute=GROUP.Attribute.GROUND_TANK elseif ifv then - attribute=GROUP.Attribute.GROUND_IFV + attribute=GROUP.Attribute.GROUND_IFV elseif apc then attribute=GROUP.Attribute.GROUND_APC elseif infantry then - attribute=GROUP.Attribute.GROUND_INFANTRY + attribute=GROUP.Attribute.GROUND_INFANTRY elseif truck then attribute=GROUP.Attribute.GROUND_TRUCK elseif train then @@ -2591,67 +2592,67 @@ end do -- Route methods - --- (AIR) Return the Group to an @{Wrapper.Airbase#AIRBASE}. + --- (AIR) Return the Group to an @{Wrapper.Airbase#AIRBASE}. -- The following things are to be taken into account: - -- + -- -- * The group is respawned to achieve the RTB, there may be side artefacts as a result of this. (Like weapons suddenly come back). -- * A group consisting out of more than one unit, may rejoin formation when respawned. -- * A speed can be given in km/h. If no speed is specified, the maximum speed of the first unit will be taken to return to base. -- * When there is no @{Wrapper.Airbase} object specified, the group will return to the home base if the route of the group is pinned at take-off or at landing to a base. -- * When there is no @{Wrapper.Airbase} object specified and the group route is not pinned to any airbase, it will return to the nearest airbase. - -- + -- -- @param #GROUP self -- @param Wrapper.Airbase#AIRBASE RTBAirbase (optional) The @{Wrapper.Airbase} to return to. If blank, the controllable will return to the nearest friendly airbase. - -- @param #number Speed (optional) The Speed, if no Speed is given, 80% of maximum Speed of the group is selected. + -- @param #number Speed (optional) The Speed, if no Speed is given, 80% of maximum Speed of the group is selected. -- @return #GROUP self function GROUP:RouteRTB( RTBAirbase, Speed ) self:F( { RTBAirbase:GetName(), Speed } ) - + local DCSGroup = self:GetDCSObject() - + if DCSGroup then - + if RTBAirbase then - + -- If speed is not given take 80% of max speed. local Speed=Speed or self:GetSpeedMax()*0.8 - + -- Curent (from) waypoint. local coord=self:GetCoordinate() local PointFrom=coord:WaypointAirTurningPoint(nil, Speed) - + -- Airbase coordinate. --local PointAirbase=RTBAirbase:GetCoordinate():SetAltitude(coord.y):WaypointAirTurningPoint(nil ,Speed) - + -- Landing waypoint. More general than prev version since it should also work with FAPRS and ships. - local PointLanding=RTBAirbase:GetCoordinate():WaypointAirLanding(Speed, RTBAirbase) - + local PointLanding=RTBAirbase:GetCoordinate():WaypointAirLanding(Speed, RTBAirbase) + -- Waypoint table. local Points={PointFrom, PointLanding} --local Points={PointFrom, PointAirbase, PointLanding} - + -- Debug info. self:T3(Points) -- Get group template. local Template=self:GetTemplate() - + -- Set route points. Template.route.points=Points - + -- Respawn the group. self:Respawn(Template, true) - + -- Route the group or this will not work. self:Route(Points) else - + -- Clear all tasks. self:ClearTasks() - + end end - + return self end @@ -2670,20 +2671,20 @@ do -- Event Handling -- @param #function EventFunction (optional) The function to be called when the event occurs for the GROUP. -- @return #GROUP function GROUP:HandleEvent( Event, EventFunction, ... ) - + self:EventDispatcher():OnEventForGroup( self:GetName(), EventFunction, self, Event, ... ) - + return self end - + --- UnSubscribe to a DCS event. -- @param #GROUP self -- @param Core.Event#EVENTS Event -- @return #GROUP function GROUP:UnHandleEvent( Event ) - + self:EventDispatcher():RemoveEvent( self, Event ) - + return self end @@ -2691,13 +2692,13 @@ do -- Event Handling -- @param #GROUP self -- @return #GROUP function GROUP:ResetEvents() - + self:EventDispatcher():Reset( self ) - + for UnitID, UnitData in pairs( self:GetUnits() ) do UnitData:ResetEvents() end - + return self end @@ -2710,11 +2711,11 @@ do -- Players -- @return #table The group has players, an array of player names is returned. -- @return #nil The group has no players function GROUP:GetPlayerNames() - + local HasPlayers = false - + local PlayerNames = {} - + local Units = self:GetUnits() for UnitID, UnitData in pairs( Units ) do local Unit = UnitData -- Wrapper.Unit#UNIT @@ -2723,14 +2724,14 @@ do -- Players PlayerNames = PlayerNames or {} table.insert( PlayerNames, PlayerName ) HasPlayers = true - end + end end - if HasPlayers == true then + if HasPlayers == true then self:F2( PlayerNames ) return PlayerNames end - + return nil end @@ -2739,35 +2740,35 @@ do -- Players -- @param #GROUP self -- @return #number The amount of players. function GROUP:GetPlayerCount() - + local PlayerCount = 0 - + local Units = self:GetUnits() for UnitID, UnitData in pairs( Units or {} ) do local Unit = UnitData -- Wrapper.Unit#UNIT local PlayerName = Unit:GetPlayerName() if PlayerName and PlayerName ~= "" then PlayerCount = PlayerCount + 1 - end + end end return PlayerCount end - + end --- GROUND - Switch on/off radar emissions for the group. -- @param #GROUP self -- @param #boolean switch If true, emission is enabled. If false, emission is disabled. --- @return #GROUP self +-- @return #GROUP self function GROUP:EnableEmission(switch) self:F2( self.GroupName ) local switch = switch or false - + local DCSUnit = self:GetDCSObject() - + if DCSUnit then - + DCSUnit:enableEmission(switch) end @@ -2778,7 +2779,7 @@ end --- Switch on/off invisible flag for the group. -- @param #GROUP self -- @param #boolean switch If true, Invisible is enabled. If false, Invisible is disabled. --- @return #GROUP self +-- @return #GROUP self function GROUP:SetCommandInvisible(switch) return self:CommandSetInvisible(switch) end @@ -2786,7 +2787,7 @@ end --- Switch on/off invisible flag for the group. -- @param #GROUP self -- @param #boolean switch If true, Invisible is enabled. If false, Invisible is disabled. --- @return #GROUP self +-- @return #GROUP self function GROUP:CommandSetInvisible(switch) self:F2( self.GroupName ) if switch==nil then @@ -2800,7 +2801,7 @@ end --- Switch on/off immortal flag for the group. -- @param #GROUP self -- @param #boolean switch If true, Immortal is enabled. If false, Immortal is disabled. --- @return #GROUP self +-- @return #GROUP self function GROUP:SetCommandImmortal(switch) return self:CommandSetImmortal(switch) end @@ -2808,7 +2809,7 @@ end --- Switch on/off immortal flag for the group. -- @param #GROUP self -- @param #boolean switch If true, Immortal is enabled. If false, Immortal is disabled. --- @return #GROUP self +-- @return #GROUP self function GROUP:CommandSetImmortal(switch) self:F2( self.GroupName ) if switch==nil then @@ -2855,17 +2856,17 @@ function GROUP:GetHighestThreat() if tl>maxtl then maxtl=tl threat=unit - end + end end end - return threat, maxtl + return threat, maxtl end return nil, nil end ---- Get TTS friendly, optionally customized callsign mainly for **player groups**. A customized callsign is taken from the #GROUP name, after an optional '#' sign, e.g. "Aerial 1-1#Ghostrider" resulting in "Ghostrider 9", or, +--- Get TTS friendly, optionally customized callsign mainly for **player groups**. A customized callsign is taken from the #GROUP name, after an optional '#' sign, e.g. "Aerial 1-1#Ghostrider" resulting in "Ghostrider 9", or, -- if that isn't available, from the playername, as set in the mission editor main screen under Logbook, after an optional '|' sign (actually, more of a personal call sign), e.g. "Apple|Moose" results in "Moose 9 1". Options see below. -- @param #GROUP self -- @param #boolean ShortCallsign Return a shortened customized callsign, i.e. "Ghostrider 9" and not "Ghostrider 9 1" @@ -2877,7 +2878,7 @@ end -- -- suppose there are three groups with one (client) unit each: -- -- Slot 1 -- with mission editor callsign Enfield-1 -- -- Slot 2 # Apollo 403 -- with mission editor callsign Enfield-2 --- -- Slot 3 | Apollo -- with mission editor callsign Enfield-3 +-- -- Slot 3 | Apollo -- with mission editor callsign Enfield-3 -- -- Slot 4 | Apollo -- with mission editor callsign Devil-4 -- -- and suppose these Custom CAP Flight Callsigns for use with TTS are set -- mygroup:GetCustomCallSign(true,false,{ @@ -2939,7 +2940,7 @@ function GROUP:GetCustomCallSign(ShortCallsign,Keepnumber,CallsignTranslations) end return callsign end - + -- AI or not personalized if ShortCallsign then callsign = callsignroot.." "..callnumbermajor -- Uzi/Victory 9 @@ -2949,7 +2950,7 @@ function GROUP:GetCustomCallSign(ShortCallsign,Keepnumber,CallsignTranslations) --self:I("Generated Callsign = " .. callsign) end - + return callsign end @@ -2963,21 +2964,21 @@ end -- @param #number LastWaypoint (optional) Waypoint number of carrier group that when reached, ends the recovery tanker task. -- @return #GROUP self function GROUP:SetAsRecoveryTanker(CarrierGroup,Speed,ToKIAS,Altitude,Delay,LastWaypoint) - + local speed = ToKIAS == true and UTILS.KnotsToAltKIAS(Speed,Altitude) or Speed speed = UTILS.KnotsToMps(speed) - + local alt = UTILS.FeetToMeters(Altitude) local delay = Delay or 1 - + local task = self:TaskRecoveryTanker(CarrierGroup,speed,alt,LastWaypoint) self:SetTask(task,delay) - + local tankertask = self:EnRouteTaskTanker() self:PushTask(tankertask,delay+2) - - return self + + return self end --- Get a list of Link16 S/TN data from a GROUP. Can (as of Nov 2023) be obtained from F-18, F-16, F-15E (not the user flyable one) and A-10C-II groups. @@ -3040,8 +3041,8 @@ function GROUP:IsAAA() local desc = unit:GetDesc() or {} local attr = desc.attributes or {} if unit:HasSEAD() then return false end - if attr["AAA"] or attr["SAM related"] then - issam = true + if attr["AAA"] or attr["SAM related"] then + issam = true end end return issam