mirror of
https://github.com/iTracerFacer/DCS_MissionDev.git
synced 2025-12-03 04:14:46 +00:00
Updated intercept ratios and added chart of the same.
This commit is contained in:
parent
fff98e1670
commit
850061cc87
Binary file not shown.
Binary file not shown.
@ -286,7 +286,7 @@ RandomSpawns_RU_SA15 = SPAWN:New( "RU_SA-15" )
|
|||||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||||
:SpawnScheduled( .1, .5 )
|
:SpawnScheduled( .1, .5 )
|
||||||
|
|
||||||
|
--[[
|
||||||
RU_INTERCEPTOR_SPAWN = SPAWN:New("RU_INTERCEPT-1")
|
RU_INTERCEPTOR_SPAWN = SPAWN:New("RU_INTERCEPT-1")
|
||||||
:InitLimit( MIN_RU_INTERCEPTORS, MAX_RU_INTERCEPTORS )
|
:InitLimit( MIN_RU_INTERCEPTORS, MAX_RU_INTERCEPTORS )
|
||||||
:SpawnScheduled( 3600, 2600 ) -- Spawns every 2600 seconds which is 43 minutes and 20 seconds
|
:SpawnScheduled( 3600, 2600 ) -- Spawns every 2600 seconds which is 43 minutes and 20 seconds
|
||||||
@ -294,7 +294,7 @@ RU_INTERCEPTOR_SPAWN = SPAWN:New("RU_INTERCEPT-1")
|
|||||||
RU_INTERCEPTOR_SPAWN = SPAWN:New("RU_INTERCEPT-2")
|
RU_INTERCEPTOR_SPAWN = SPAWN:New("RU_INTERCEPT-2")
|
||||||
:InitLimit( MAX_RU_INTERCEPTORS, MAX_RU_INTERCEPTORS )
|
:InitLimit( MAX_RU_INTERCEPTORS, MAX_RU_INTERCEPTORS )
|
||||||
:SpawnScheduled( 15000, 2200 ) -- Spawns every 2200 seconds which is 36 minutes and 40 seconds
|
:SpawnScheduled( 15000, 2200 ) -- Spawns every 2200 seconds which is 36 minutes and 40 seconds
|
||||||
|
--]]
|
||||||
|
|
||||||
-- Artillery Systems
|
-- Artillery Systems
|
||||||
--[[
|
--[[
|
||||||
|
|||||||
@ -41,8 +41,24 @@ end
|
|||||||
|
|
||||||
-- SIMPLE GCI Configuration
|
-- SIMPLE GCI Configuration
|
||||||
local GCI_Config = {
|
local GCI_Config = {
|
||||||
|
|
||||||
-- Basic Response Parameters
|
-- Basic Response Parameters
|
||||||
threatRatio = 1.5, -- Send 1.5x defenders per attacker
|
threatRatio = 0.5, -- Send 0.5x defenders per attacker
|
||||||
|
-- THREAT RATIO REFERENCE TABLE:
|
||||||
|
-- Formula: defendersNeeded = math.ceil(threat.size * threatRatio)
|
||||||
|
--
|
||||||
|
-- Threat Size → 1 2 3 4 5 6 7 8 10
|
||||||
|
-- Ratio 0.5 1 1 2 2 3 3 4 4 5
|
||||||
|
-- Ratio 0.75 1 2 3 3 4 5 6 6 8
|
||||||
|
-- Ratio 1.0 1 2 3 4 5 6 7 8 10
|
||||||
|
-- Ratio 1.25 2 3 4 5 7 8 9 10 13
|
||||||
|
-- Ratio 1.5 2 3 5 6 8 9 11 12 15
|
||||||
|
-- Ratio 2.0 2 4 6 8 10 12 14 16 20
|
||||||
|
--
|
||||||
|
-- Current (0.5) = Conservative Response (good for limited resources)
|
||||||
|
-- Recommended 1.0 = Proportional Response (balanced)
|
||||||
|
-- Aggressive 1.5+ = Overwhelming Response (resource intensive)
|
||||||
|
|
||||||
maxSimultaneousCAP = 12, -- Maximum total airborne aircraft at once
|
maxSimultaneousCAP = 12, -- Maximum total airborne aircraft at once
|
||||||
|
|
||||||
-- EWR Detection
|
-- EWR Detection
|
||||||
|
|||||||
@ -3,11 +3,38 @@
|
|||||||
|
|
||||||
-- Configuration
|
-- Configuration
|
||||||
local TADC_CONFIG = {
|
local TADC_CONFIG = {
|
||||||
checkInterval = 30, -- Check for threats every 10 seconds
|
checkInterval = 30, -- Check for threats every 30 seconds
|
||||||
interceptRatio = 1.4, -- Launch 1 fighter per threat (minimum)
|
|
||||||
maxActiveCAP = 24, -- Max fighters airborne at once
|
maxActiveCAP = 24, -- Max fighters airborne at once
|
||||||
squadronCooldown = 900, -- Squadron cooldown after destruction (15 minutes)
|
squadronCooldown = 1800, -- Squadron cooldown after launch (30 minutes)
|
||||||
|
interceptRatio = 0.5, -- Launch interceptors per threat (see chart below)
|
||||||
}
|
}
|
||||||
|
--[[
|
||||||
|
INTERCEPT RATIO CHART - How many interceptors launch per threat aircraft:
|
||||||
|
|
||||||
|
Threat Size: 1 2 4 8 12 16 (aircraft)
|
||||||
|
====================================================================
|
||||||
|
interceptRatio 0.2: 1 1 1 2 3 4 (conservative)
|
||||||
|
interceptRatio 0.5: 1 1 2 4 6 8 (light response)
|
||||||
|
interceptRatio 0.8: 1 2 4 7 10 13 (balanced)
|
||||||
|
interceptRatio 1.0: 1 2 4 8 12 16 (1:1 parity)
|
||||||
|
interceptRatio 1.2: 2 3 5 10 15 20 (slight advantage)
|
||||||
|
interceptRatio 1.4: 2 3 6 12 17 23 (good advantage) <- DEFAULT
|
||||||
|
interceptRatio 1.6: 2 4 7 13 20 26 (strong response)
|
||||||
|
interceptRatio 1.8: 2 4 8 15 22 29 (overwhelming)
|
||||||
|
interceptRatio 2.0: 2 4 8 16 24 32 (overkill)
|
||||||
|
|
||||||
|
TACTICAL EFFECTS:
|
||||||
|
• 0.2-0.5: Minimal response, may be overwhelmed by large formations
|
||||||
|
• 0.8-1.0: Realistic parity, balanced dogfights
|
||||||
|
• 1.2-1.4: Red advantage, good for challenging blue players
|
||||||
|
• 1.6-1.8: Strong defense, difficult penetration
|
||||||
|
• 1.9-2.0: Nearly impenetrable, may exhaust squadron pool quickly
|
||||||
|
|
||||||
|
SQUADRON IMPACT:
|
||||||
|
• Low ratios (0.2-0.8): Squadrons available longer, sustained defense
|
||||||
|
• High ratios (1.6-2.0): Rapid squadron depletion, gaps in coverage
|
||||||
|
• Sweet spot (1.0-1.4): Balanced response with good coverage duration
|
||||||
|
--]]
|
||||||
|
|
||||||
-- Define squadron configurations with their designated airbases and patrol zones
|
-- Define squadron configurations with their designated airbases and patrol zones
|
||||||
local squadronConfigs = {
|
local squadronConfigs = {
|
||||||
@ -350,6 +377,12 @@ local function launchInterceptor(threatGroup)
|
|||||||
threatSize .. " x " .. threatName)
|
threatSize .. " x " .. threatName)
|
||||||
assignedThreats[threatName] = interceptors -- Track which interceptors are assigned to this threat
|
assignedThreats[threatName] = interceptors -- Track which interceptors are assigned to this threat
|
||||||
lastLaunchTime[threatName] = timer.getTime()
|
lastLaunchTime[threatName] = timer.getTime()
|
||||||
|
|
||||||
|
-- Apply cooldown immediately when squadron launches
|
||||||
|
local currentTime = timer.getTime()
|
||||||
|
squadronCooldowns[squadron.templateName] = currentTime + TADC_CONFIG.squadronCooldown
|
||||||
|
local cooldownMinutes = TADC_CONFIG.squadronCooldown / 60
|
||||||
|
log("Squadron " .. squadron.displayName .. " LAUNCHED! Applying " .. cooldownMinutes .. " minute cooldown")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -406,28 +439,15 @@ local function detectThreats()
|
|||||||
assignedCount .. " assigned")
|
assignedCount .. " assigned")
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Monitor interceptor groups and apply cooldowns when destroyed
|
-- Monitor interceptor groups for cleanup when destroyed
|
||||||
local function monitorInterceptors()
|
local function monitorInterceptors()
|
||||||
local currentTime = timer.getTime()
|
-- Check all active interceptors for cleanup
|
||||||
local destroyedSquadrons = {}
|
|
||||||
|
|
||||||
-- Check all active interceptors
|
|
||||||
for interceptorName, interceptorData in pairs(activeInterceptors) do
|
for interceptorName, interceptorData in pairs(activeInterceptors) do
|
||||||
if interceptorData and interceptorData.group then
|
if interceptorData and interceptorData.group then
|
||||||
if not interceptorData.group:IsAlive() then
|
if not interceptorData.group:IsAlive() then
|
||||||
-- Interceptor group is destroyed
|
-- Interceptor group is destroyed - just clean up tracking
|
||||||
local squadronName = interceptorData.squadron
|
|
||||||
local displayName = interceptorData.displayName
|
local displayName = interceptorData.displayName
|
||||||
|
log("Interceptor from " .. displayName .. " destroyed: " .. interceptorName)
|
||||||
-- Track destroyed squadrons (avoid duplicate cooldowns)
|
|
||||||
if not destroyedSquadrons[squadronName] then
|
|
||||||
destroyedSquadrons[squadronName] = displayName
|
|
||||||
|
|
||||||
-- Apply cooldown
|
|
||||||
squadronCooldowns[squadronName] = currentTime + TADC_CONFIG.squadronCooldown
|
|
||||||
local cooldownMinutes = TADC_CONFIG.squadronCooldown / 60
|
|
||||||
log("Squadron " .. displayName .. " DESTROYED! Applying " .. cooldownMinutes .. " minute cooldown")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Remove from active tracking
|
-- Remove from active tracking
|
||||||
activeInterceptors[interceptorName] = nil
|
activeInterceptors[interceptorName] = nil
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user