diff --git a/resources/plugins/skynetiads/plugin.json b/resources/plugins/skynetiads/plugin.json index f158570a..177e5b5a 100644 --- a/resources/plugins/skynetiads/plugin.json +++ b/resources/plugins/skynetiads/plugin.json @@ -33,24 +33,79 @@ "defaultValue": false }, { - "nameInUI": "Enable Mobile SAMs", + "nameInUI": "Enable Mobile SAMs SHORAD (SA-8/9/13/15/19)", "mnemonic": "actMobile", "defaultValue": false }, { - "nameInUI": "Maximum emission time (s) for Mobile SAMs", + "nameInUI": "Maximum emission time (s) for Mobile SHORAD", "mnemonic": "actMobileMaxEmissionTime", - "defaultValue": 120 + "defaultValue": 30 }, { - "nameInUI": "Minimum scoot distance (m) for Mobile SAMs", + "nameInUI": "Minimum scoot distance (m) for Mobile SHORAD", "mnemonic": "actMobileMinimumScootDistance", + "defaultValue": 300 + }, + { + "nameInUI": "Maximum scoot distance (m) for Mobile SHORAD", + "mnemonic": "actMobileMaximumScootDistance", "defaultValue": 500 }, { - "nameInUI": "Maximum scoot distance (m) for Mobile SAMs", - "mnemonic": "actMobileMaximumScootDistance", + "nameInUI": "Exclude SA-15", + "mnemonic": "actMobile_exclude_SA15", + "defaultValue": false + }, + { + "nameInUI": "Enable Mobile SAMs MERAD (SA-6/11/17)", + "mnemonic": "actMobile_merad", + "defaultValue": false + }, + { + "nameInUI": "Maximum emission time (s) for Mobile MERAD", + "mnemonic": "actMobileMaxEmissionTime_merad", + "defaultValue": 120 + }, + { + "nameInUI": "Minimum scoot distance (m) for Mobile MERAD", + "mnemonic": "actMobileMinimumScootDistance_merad", + "defaultValue": 500 + }, + { + "nameInUI": "Maximum scoot distance (m) for Mobile MERAD", + "mnemonic": "actMobileMaximumScootDistance_merad", "defaultValue": 3000 + }, + { + "nameInUI": "Adjust default SAMs GoLiveRange", + "mnemonic": "adjustGoLiveRange", + "defaultValue": false + }, + { + "nameInUI": "SA-5 GoLiveRange (% max interceptor range)", + "mnemonic": "adjustGoLiveRange_SA5", + "defaultValue": 100 + }, + { + "nameInUI": "SA-10 GoLiveRange (% max interceptor range)", + "mnemonic": "adjustGoLiveRange_SA10", + "defaultValue": 100 + }, + { + "nameInUI": "SA-17 GoLiveRange (% max interceptor range)", + "mnemonic": "adjustGoLiveRange_SA17", + "defaultValue": 100 + }, + { + "nameInUI": "SA-20 GoLiveRange (% max interceptor range)", + "mnemonic": "adjustGoLiveRange_SA20", + "defaultValue": 100 + }, + { + "nameInUI": "SA-23 GoLiveRange (% max interceptor range)", + "mnemonic": "adjustGoLiveRange_SA23", + "defaultValue": 100 } ], "scriptsWorkOrders": [ diff --git a/resources/plugins/skynetiads/skynetiads-config.lua b/resources/plugins/skynetiads/skynetiads-config.lua index e1be068c..fd95883e 100644 --- a/resources/plugins/skynetiads/skynetiads-config.lua +++ b/resources/plugins/skynetiads/skynetiads-config.lua @@ -18,10 +18,21 @@ if dcsRetribution and SkynetIADS then local includeBlueInRadio = false local debugRED = false local debugBLUE = false - local actMobile = false - local actMobileMaxEmissionTime = 120 - local actMobileMinimumScootDistance = 500 - local actMobileMaximumScootDistance = 3000 + local actMobile = false -- did not change to actMobile_shorad for backwards compatibility + local actMobileMaxEmissionTime = 30 + local actMobileMinimumScootDistance = 300 + local actMobileMaximumScootDistance = 500 + local actMobile_exclude_SA15 = false + local actMobile_merad = false + local actMobileMaxEmissionTime_merad = 120 + local actMobileMinimumScootDistance_merad = 500 + local actMobileMaximumScootDistance_merad = 3000 + local adjustGoLiveRange = false + local adjustGoLiveRange_SA5 = 100 + local adjustGoLiveRange_SA10 = 100 + local adjustGoLiveRange_SA17 = 100 + local adjustGoLiveRange_SA20 = 100 + local adjustGoLiveRange_SA23 = 100 -- retrieve specific options values if dcsRetribution.plugins then @@ -36,6 +47,17 @@ if dcsRetribution and SkynetIADS then actMobileMaxEmissionTime = dcsRetribution.plugins.skynetiads.actMobileMaxEmissionTime actMobileMinimumScootDistance = dcsRetribution.plugins.skynetiads.actMobileMinimumScootDistance actMobileMaximumScootDistance = dcsRetribution.plugins.skynetiads.actMobileMaximumScootDistance + actMobile_exclude_SA15 = dcsRetribution.plugins.skynetiads.actMobile_exclude_SA15 + actMobile_merad = dcsRetribution.plugins.skynetiads.actMobile_merad + actMobileMaxEmissionTime_merad = dcsRetribution.plugins.skynetiads.actMobileMaxEmissionTime_merad + actMobileMinimumScootDistance_merad = dcsRetribution.plugins.skynetiads.actMobileMinimumScootDistance_merad + actMobileMaximumScootDistance_merad = dcsRetribution.plugins.skynetiads.actMobileMaximumScootDistance_merad + adjustGoLiveRange = dcsRetribution.plugins.skynetiads.adjustGoLiveRange + adjustGoLiveRange_SA5 = dcsRetribution.plugins.skynetiads.adjustGoLiveRange_SA5 + adjustGoLiveRange_SA10 = dcsRetribution.plugins.skynetiads.adjustGoLiveRange_SA10 + adjustGoLiveRange_SA17 = dcsRetribution.plugins.skynetiads.adjustGoLiveRange_SA17 + adjustGoLiveRange_SA20 = dcsRetribution.plugins.skynetiads.adjustGoLiveRange_SA20 + adjustGoLiveRange_SA23 = dcsRetribution.plugins.skynetiads.adjustGoLiveRange_SA23 end end @@ -194,11 +216,29 @@ if dcsRetribution and SkynetIADS then iads:activate() end - local function initializeMobileSams(iads) - local sams = {"SA-6", "SA-8", "SA-9", "SA-11", "SA-13", "SA-15", "SA-17", "SA-19"} - for _, sam in ipairs(sams) do - iads:getSAMSitesByNatoName(sam):setActMobile(true,actMobileMaxEmissionTime,actMobileMinimumScootDistance,actMobileMaximumScootDistance,nil) --ActMobile + local function initializeMobileSams_shorad(iads) + local sams = {"SA-8", "SA-9", "SA-13", "SA-15", "SA-19"} + if actMobile_exclude_SA15 then + local sams = {"SA-8", "SA-9", "SA-13", "SA-19"} end + for _, sam in ipairs(sams) do + iads:getSAMSitesByNatoName(sam):setActMobile(true,actMobileMaxEmissionTime,actMobileMinimumScootDistance,actMobileMaximumScootDistance,nil) --ActMobile SHORAD + end + end + + local function initializeMobileSams_merad(iads) + local sams = {"SA-6", "SA-11", "SA-17"} + for _, sam in ipairs(sams) do + iads:getSAMSitesByNatoName(sam):setActMobile(true,actMobileMaxEmissionTime_merad,actMobileMinimumScootDistance_merad,actMobileMaximumScootDistance_merad,nil) --ActMobile MERAD + end + end + + local function setGoLiveRange(iads) + iads:getSAMSitesByNatoName('SA-5'):setGoLiveRangeInPercent(adjustGoLiveRange_SA5) + iads:getSAMSitesByNatoName('SA-10'):setGoLiveRangeInPercent(adjustGoLiveRange_SA10) + iads:getSAMSitesByNatoName('SA-17'):setGoLiveRangeInPercent(adjustGoLiveRange_SA17) + iads:getSAMSitesByNatoName('SA-20'):setGoLiveRangeInPercent(adjustGoLiveRange_SA20) + iads:getSAMSitesByNatoName('SA-23'):setGoLiveRangeInPercent(adjustGoLiveRange_SA23) end @@ -210,7 +250,13 @@ if dcsRetribution and SkynetIADS then local redIADS = SkynetIADS:create("IADS") initializeIADS(redIADS, 1, includeRedInRadio, debugRED) -- RED if actMobile then - initializeMobileSams(redIADS) + initializeMobileSams_shorad(redIADS) + end + if actMobile_merad then + initializeMobileSams_merad(redIADS) + end + if adjustGoLiveRange then + setGoLiveRange(redIADS) end end @@ -219,7 +265,13 @@ if dcsRetribution and SkynetIADS then local blueIADS = SkynetIADS:create("IADS") initializeIADS(blueIADS, 2, includeBlueInRadio, debugBLUE) -- BLUE if actMobile then - initializeMobileSams(blueIADS) + initializeMobileSams_shorad(blueIADS) + end + if actMobile_merad then + initializeMobileSams_merad(blueIADS) + end + if adjustGoLiveRange then + setGoLiveRange(blueIADS) end end