diff --git a/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.0.0.miz b/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.0.0.miz index 7398d33..7d907ce 100644 Binary files a/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.0.0.miz and b/DCS_Kola/Operation_Polar_Shield/F99th-Operation_Polar_Shield_1.0.0.miz differ diff --git a/DCS_Kola/Operation_Polar_Shield/Moose_CaptureZones.lua b/DCS_Kola/Operation_Polar_Shield/Moose_CaptureZones.lua index 877de92..32260c2 100644 --- a/DCS_Kola/Operation_Polar_Shield/Moose_CaptureZones.lua +++ b/DCS_Kola/Operation_Polar_Shield/Moose_CaptureZones.lua @@ -13,9 +13,9 @@ do -- Missions "Note that heavy resistance can be expected at the airbases!\n" , coalition.side.BLUE) - US_Score = SCORING:New( "Capture Airfields" ) + --US_Score = SCORING:New( "Capture Airfields" ) - US_Mission_Capture_Airfields:AddScoring( US_Score ) + --US_Mission_Capture_Airfields:AddScoring( US_Score ) US_Mission_Capture_Airfields:Start() diff --git a/DCS_Kola/Operation_Polar_Shield/Moose_Intel.lua b/DCS_Kola/Operation_Polar_Shield/Moose_Intel.lua new file mode 100644 index 0000000..ef69b2e --- /dev/null +++ b/DCS_Kola/Operation_Polar_Shield/Moose_Intel.lua @@ -0,0 +1,135 @@ +--Ops - Office of Military Intelligence. +-- +--Main Features: +---Detect and track contacts consistently +---Detect and track clusters of contacts consistently +---Once detected and still alive, planes will be tracked 10 minutes, helicopters 20 minutes, ships and trains 1 hour, ground units 2 hours +-- Docs: https://flightcontrol-master.github.io/MOOSE_DOCS_DEVELOP/Documentation/Ops.Intel.html + +-- Setup Detection Group +local msgTime = 15 +Blue_Intel_Message_Setting = false + +Blue_Intel_DetectionGroup = SET_GROUP:New() +--Blue_Intel_DetectionGroup:FilterPrefixes( { "BLUE-EWR", "BLUE-RECON" } ) +Blue_Intel_DetectionGroup:FilterCoalitions("blue"):FilterActive(true):FilterStart() + + +-- Setup the INTEL +Blue_Intel = INTEL:New(Blue_Intel_DetectionGroup, "blue", "CIA") +Blue_Intel:SetClusterAnalysis(true, true) +Blue_Intel:SetClusterRadius(5) +Blue_Intel:SetVerbosity(2) +Blue_Intel:__Start(10) + +-- On After New Contact +function Blue_Intel:OnAfterNewContact(From, Event, To, Contact) + local text = string.format("NEW contact %s detected by %s", Contact.groupname, Contact.recce or "unknown") + + if (Blue_Intel_Message_Setting == true) then + MESSAGE:New(text, msgTime, "CIA"):ToBlue() + USERSOUND:New("morsecode.ogg"):ToCoalition(coalition.side.BLUE) + end +end +-- On After New Cluster +function Blue_Intel:OnAfterNewCluster(From, Event, To, Cluster) + local text = string.format("NEW cluster #%d of size %d", Cluster.index, Cluster.size) + + if (Blue_Intel_Message_Setting == true) then + MESSAGE:New(text, msgTime,"CIA"):ToBlue() + USERSOUND:New("morsecode.ogg"):ToCoalition(coalition.side.BLUE) + end +end + +function Blue_IntelMessageSettingOn() + if (Blue_Intel_Message_Setting == true) then + MESSAGE:New("Setting INTEL messages to ON", msgTime,"CIA"):ToBlue() + Blue_Intel_Message_Setting = true + end +end + +function Blue_IntelMessageSettingOff() + if (Blue_Intel_Message_Setting == true) then + MESSAGE:New("Setting INTEL messages to OFF", msgTime,"CIA"):ToBlue() + Blue_Intel_Message_Setting = false + end +end + + +local INTELMenu = MENU_COALITION:New(coalition.side.BLUE,"INTEL HQ") +MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Dispaly Messages (ON)",INTELMenu,Blue_IntelMessageSettingOn) +MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Dispaly Messages (OFF)",INTELMenu,Blue_IntelMessageSettingOff) + + + +--Ops - Office of Military Intelligence. +-- +--Main Features: +---Detect and track contacts consistently +---Detect and track clusters of contacts consistently +---Once detected and still alive, planes will be tracked 10 minutes, helicopters 20 minutes, ships and trains 1 hour, ground units 2 hours +-- Docs: https://flightcontrol-master.github.io/MOOSE_DOCS_DEVELOP/Documentation/Ops.Intel.html + +-- Setup Detection Group + +Red_Intel_Message_Setting = false + +Red_Intel_DetectionGroup = SET_GROUP:New() +--Red_Intel_DetectionGroup:FilterPrefixes( { "RED-EWR", "RED-RECON" } ) +Red_Intel_DetectionGroup:FilterCoalitions("red"):FilterActive(true):FilterStart() + + +-- Setup the INTEL +Red_Intel = INTEL:New(Red_Intel_DetectionGroup, "red", "KGB") +Red_Intel:SetClusterAnalysis(true, true) +Red_Intel:SetClusterRadius(5) +Red_Intel:SetVerbosity(2) +Red_Intel:__Start(10) + +-- On After New Contact +function Red_Intel:OnAfterNewContact(From, Event, To, Contact) + local text = string.format("NEW contact %s detected by %s", Contact.groupname, Contact.recce or "unknown") + + if (Red_Intel_Message_Setting == true) then + MESSAGE:New(text, msgTime, "KGB"):ToRed() + USERSOUND:New("morsecode.ogg"):ToCoalition(coalition.side.RED) + end +end +-- On After New Cluster +function Red_Intel:OnAfterNewCluster(From, Event, To, Cluster) + local text = string.format("NEW cluster #%d of size %d", Cluster.index, Cluster.size) + + if (Red_Intel_Message_Setting == true) then + MESSAGE:New(text, msgTime,"KGB"):ToRed() + USERSOUND:New("morsecode.ogg"):ToCoalition(coalition.side.RED) + end +end + +function Red_IntelMessageSettingOn() + if (Red_Intel_Message_Setting == true) then + MESSAGE:New("Setting INTEL messages to ON", msgTime,"KGB"):ToRed() + USERSOUND:New("morsecode.ogg"):ToCoalition(coalition.side.RED) + Red_Intel_Message_Setting = true + end +end + +function Red_IntelMessageSettingOff() + if (Red_Intel_Message_Setting == true) then + MESSAGE:New("Setting INTEL messages to OFF", msgTime,"KGB"):ToRed() + Red_Intel_Message_Setting = false + end +end + + +local RedINTELMenu = MENU_COALITION:New(coalition.side.RED,"INTEL HQ") +MENU_COALITION_COMMAND:New(coalition.side.RED, "Dispaly Messages (ON)",RedINTELMenu,Red_IntelMessageSettingOn) +MENU_COALITION_COMMAND:New(coalition.side.RED, "Dispaly Messages (OFF)",RedINTELMenu,Red_IntelMessageSettingOff) + + + + + + + + + diff --git a/DCS_Kola/Operation_Polar_Shield/Moose_OperationPolarShield_TADC.lua b/DCS_Kola/Operation_Polar_Shield/Moose_OperationPolarShield_TADC.lua index aca812a..312d982 100644 --- a/DCS_Kola/Operation_Polar_Shield/Moose_OperationPolarShield_TADC.lua +++ b/DCS_Kola/Operation_Polar_Shield/Moose_OperationPolarShield_TADC.lua @@ -83,8 +83,8 @@ local GCI_Config = { -- Persistent CAP Configuration enablePersistentCAP = true, -- Enable continuous standing patrols - persistentCAPCount = 2, -- Number of persistent CAP flights to maintain - persistentCAPInterval = 900, -- Check/maintain persistent CAP every 15 minutes + persistentCAPCount = 4, -- Number of persistent CAP flights to maintain + persistentCAPInterval = 120, -- Check/maintain persistent CAP every 2 minutes persistentCAPReserve = 0.3, -- Reserve 30% of maxSimultaneousCAP slots for threat response persistentCAPPriority = { -- Priority order for persistent CAP squadrons "FIGHTER_SWEEP_RED_Severomorsk-1", -- Primary intercept base @@ -1411,6 +1411,13 @@ SCHEDULER:New(nil, function() env.info("=== LAUNCHING INITIAL PERSISTENT CAP ===") TADC.lastPersistentCheck = 0 -- Force immediate check maintainPersistentCAP() + + -- Schedule another check in 30 seconds to ensure CAP gets airborne + SCHEDULER:New(nil, function() + env.info("=== PERSISTENT CAP FOLLOW-UP CHECK ===") + TADC.lastPersistentCheck = 0 -- Force another immediate check + maintainPersistentCAP() + end, {}, 30) end -- Legacy: Optional initial standing patrols (if configured)