diff --git a/DCS_Kola/Operation_Polar_Shield/TADC_SYSTEM_GUIDE.html b/DCS_Kola/Operation_Polar_Shield/TADC_SYSTEM_GUIDE.html new file mode 100644 index 0000000..0fa7556 --- /dev/null +++ b/DCS_Kola/Operation_Polar_Shield/TADC_SYSTEM_GUIDE.html @@ -0,0 +1,1353 @@ + + + + + + Universal TADC System - Mission Maker's Guide + + + +
+

Universal TADC System - Mission Maker's Guide

+

Tactical Air Defense Controller with Automated Logistics

+ +
+

📋 Table of Contents

+ +
+ +

What is TADC?

+ +

TADC (Tactical Air Defense Controller) is an automated air defense system for DCS missions that creates realistic, dynamic fighter aircraft responses to airborne threats. Think of it as an AI commander that:

+ + + +

Why Use TADC?

+ + + +

System Overview

+ +

The TADC system consists of three main scripts that work together:

+ +

1. Squadron Configuration (Moose_TADC_SquadronConfigs_Load1st.lua)

+

Purpose: Define all fighter squadrons for RED and BLUE coalitions
+ Contains: Aircraft templates, airbases, patrol parameters, zone assignments
+ Load Order: FIRST (must load before main TADC script)

+ +

2. Main TADC System (Moose_TADC_Load2nd.lua)

+

Purpose: Core threat detection and interceptor management
+ Contains: Threat scanning, squadron selection, intercept logic, F10 menus
+ Load Order: SECOND (after squadron config)

+ +

3. Cargo Dispatcher (Moose_TADC_CargoDispatcher.lua)

+

Purpose: Automated squadron resupply through cargo aircraft
+ Contains: Squadron monitoring, cargo spawning, delivery tracking
+ Load Order: THIRD (optional, only if using resupply system)

+ +

Quick Start Guide

+ +

Prerequisites

+ +

Before setting up TADC, you need:

+ + + +

5-Minute Setup

+ +

1 Create Fighter Templates

+ +
    +
  1. Open your mission in DCS Mission Editor
  2. +
  3. Place fighter aircraft as LATE ACTIVATION GROUPS (not individual units)
  4. +
  5. Name them clearly (example: RED_CAP_Kilpyavr_MiG29)
  6. +
  7. Position them at or near the airbases they'll operate from
  8. +
  9. Set them to the correct coalition (RED or BLUE)
  10. +
+ +
+ Important: Use GROUP templates, not UNIT templates! +
+ +

2 Load MOOSE Framework

+ +
    +
  1. In mission editor, go to Triggers
  2. +
  3. Create a new trigger: MISSION START
  4. +
  5. Add action: DO SCRIPT FILE
  6. +
  7. Select your MOOSE.lua file
  8. +
  9. This must be the FIRST script loaded
  10. +
+ +

3 Load Squadron Configuration

+ +
    +
  1. Create another DO SCRIPT FILE action (after MOOSE)
  2. +
  3. Select Moose_TADC_SquadronConfigs_Load1st.lua
  4. +
  5. Edit the file to configure your squadrons (see below)
  6. +
+ +

4 Load Main TADC System

+ +
    +
  1. Create another DO SCRIPT FILE action
  2. +
  3. Select Moose_TADC_Load2nd.lua
  4. +
  5. (Optional) Adjust settings in the file if needed
  6. +
+ +

5 (Optional) Load Cargo Dispatcher

+ +
    +
  1. If using resupply system, create another DO SCRIPT FILE action
  2. +
  3. Select Moose_TADC_CargoDispatcher.lua
  4. +
+ +
+ Load Order in Mission Editor: +
1. MOOSE.lua
+2. Moose_TADC_SquadronConfigs_Load1st.lua
+3. Moose_TADC_Load2nd.lua
+4. Moose_TADC_CargoDispatcher.lua (optional)
+
+ +

Detailed Configuration

+ +

Squadron Configuration Explained

+ +

Open Moose_TADC_SquadronConfigs_Load1st.lua and find the squadron configuration sections.

+ +

Basic Squadron Example

+ +
{
+    templateName = "RED_CAP_Kilpyavr_MiG29",     -- Must match mission editor template name
+    displayName = "Kilpyavr CAP MiG-29A",        -- Human-readable name for logs/messages
+    airbaseName = "Kilpyavr",                    -- Exact airbase name from DCS
+    aircraft = 12,                                -- Maximum aircraft in squadron
+    skill = AI.Skill.EXCELLENT,                   -- AI pilot skill level
+    altitude = 20000,                             -- Patrol altitude (feet)
+    speed = 350,                                  -- Patrol speed (knots)
+    patrolTime = 30,                              -- Time on station (minutes)
+    type = "FIGHTER"                              -- Aircraft role
+}
+ +

Parameter Guide

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescriptionExample Values
templateNameGroup name from mission editor (EXACT match)"RED_CAP_Base_F15"
displayNameFriendly name shown in messages"Kilpyavr CAP Squadron"
airbaseNameDCS airbase name (case sensitive)"Kilpyavr", "Nellis AFB"
aircraftMax squadron size8, 12, 16
skillAI difficultyAI.Skill.AVERAGE, GOOD, HIGH, EXCELLENT, ACE
altitudeCAP patrol altitude15000 (feet)
speedCAP patrol speed300 (knots)
patrolTimeMinutes on station before RTB20, 30, 40
typeAircraft role"FIGHTER"
+ +

Finding Airbase Names

+ +

Method 1: Mission Editor

+
    +
  1. Open mission editor
  2. +
  3. Click on any airbase
  4. +
  5. The exact name appears in the properties panel
  6. +
  7. Copy this name EXACTLY (case sensitive!)
  8. +
+ +

Method 2: Common Airbases

+ +

Kola Peninsula (Example Map):

+ + +

Nevada:

+ + +

Caucasus:

+ + +

Adding Multiple Squadrons

+ +

You can add as many squadrons as you want. Just copy the squadron block and modify the values:

+ +
RED_SQUADRON_CONFIG = {
+    -- First Squadron
+    {
+        templateName = "RED_CAP_Base1_MiG29",
+        displayName = "Base 1 CAP",
+        airbaseName = "Kilpyavr",
+        aircraft = 12,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 20000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER"
+    },
+    
+    -- Second Squadron (different base)
+    {
+        templateName = "RED_CAP_Base2_SU27",
+        displayName = "Base 2 CAP",
+        airbaseName = "Severomorsk-1",
+        aircraft = 16,
+        skill = AI.Skill.ACE,
+        altitude = 25000,
+        speed = 380,
+        patrolTime = 25,
+        type = "FIGHTER"
+    },
+    
+    -- Add more squadrons here...
+}
+ +
+ Repeat the same process for BLUE squadrons in the BLUE_SQUADRON_CONFIG section. +
+ +

Zone-Based Defense Setup

+ +

Zones allow squadrons to have specific areas of responsibility, creating realistic layered defense.

+ +

Why Use Zones?

+ + + +

Zone Types

+ +

Each squadron can have up to 3 zone types:

+ +
    +
  1. Primary Zone - Main area of responsibility (full response)
  2. +
  3. Secondary Zone - Support area (reduced response, 60% by default)
  4. +
  5. Tertiary Zone - Emergency fallback (enhanced response when squadron weakened)
  6. +
+ +

Creating Zones in Mission Editor

+ +

Method: Helicopter Waypoint Method

+ +
    +
  1. Place a helicopter group (late activation, any type)
  2. +
  3. Name it clearly (example: "RED BORDER")
  4. +
  5. Add waypoints that outline your zone boundary
  6. +
  7. The script will automatically create a polygon zone from these waypoints
  8. +
  9. Repeat for each zone you want to create
  10. +
+ +
+ Example Zone Setup: +
Mission Editor:
+- Helicopter Group: "RED BORDER" with waypoints forming a polygon
+- Helicopter Group: "BLUE BORDER" with waypoints forming a polygon
+- Helicopter Group: "CONTESTED ZONE" with waypoints forming a polygon
+
+ +

Configuring Zone Response

+ +

Add zone configuration to your squadron:

+ +
{
+    templateName = "RED_CAP_Kilpyavr_MiG29",
+    displayName = "Kilpyavr CAP",
+    airbaseName = "Kilpyavr",
+    aircraft = 12,
+    skill = AI.Skill.EXCELLENT,
+    altitude = 20000,
+    speed = 350,
+    patrolTime = 30,
+    type = "FIGHTER",
+    
+    -- Zone Configuration
+    primaryZone = "RED BORDER",                    -- Main responsibility area
+    secondaryZone = "CONTESTED ZONE",              -- Backup coverage
+    tertiaryZone = nil,                            -- No tertiary zone
+    
+    -- Optional: Customize zone behavior
+    zoneConfig = {
+        primaryResponse = 1.0,                     -- Full response in primary zone
+        secondaryResponse = 0.6,                   -- 60% response in secondary
+        tertiaryResponse = 1.4,                    -- 140% response in tertiary
+        enableFallback = false,                    -- Don't auto-switch to tertiary
+        fallbackThreshold = 0.3,                   -- Switch when <30% aircraft remain
+        secondaryLowPriorityFilter = true,         -- Ignore small threats in secondary
+        secondaryLowPriorityThreshold = 2          -- "Small threat" = 2 or fewer aircraft
+    }
+}
+ +

Zone Behavior Examples

+ +

Example 1: Border Defense Squadron

+
primaryZone = "RED BORDER",          -- Patrols the border
+secondaryZone = "INTERIOR",          -- Helps with interior threats if needed
+tertiaryZone = nil                   -- No fallback
+ +

Example 2: Base Defense with Fallback

+
primaryZone = "NORTHERN SECTOR",     -- Main patrol area
+secondaryZone = nil,                 -- No secondary
+tertiaryZone = "BASE PERIMETER",     -- Falls back to defend base when weakened
+enableFallback = true,               -- Auto-switch to tertiary when low
+fallbackThreshold = 0.4              -- Switch at 40% strength
+ +

Example 3: Layered Defense

+
-- Squadron A: Outer layer
+primaryZone = "OUTER PERIMETER"
+
+-- Squadron B: Middle layer
+primaryZone = "MIDDLE PERIMETER"
+
+-- Squadron C: Inner/base defense
+primaryZone = "BASE DEFENSE"
+ +

Global Response (No Zones)

+ +

If you DON'T want zone restrictions, simply leave all zones as nil:

+ +
{
+    templateName = "RED_CAP_Base_MiG29",
+    displayName = "Global Response CAP",
+    airbaseName = "Kilpyavr",
+    aircraft = 12,
+    skill = AI.Skill.EXCELLENT,
+    altitude = 20000,
+    speed = 350,
+    patrolTime = 30,
+    type = "FIGHTER",
+    
+    -- No zones = responds to threats anywhere on the map
+    primaryZone = nil,
+    secondaryZone = nil,
+    tertiaryZone = nil
+}
+ +

Cargo Replenishment System

+ +

The cargo system automatically replenishes squadrons by spawning transport aircraft that fly supplies to airbases.

+ +

How Cargo Works

+ +
    +
  1. Monitoring: Script checks squadron aircraft counts every minute
  2. +
  3. Detection: When squadron drops below threshold (90% by default), cargo is dispatched
  4. +
  5. Spawning: Transport aircraft spawns at a supply airfield
  6. +
  7. Delivery: Flies to destination airbase and lands
  8. +
  9. Replenishment: Squadron aircraft count increases upon delivery
  10. +
  11. Cooldown: 5-minute cooldown before next delivery to same base
  12. +
+ +

Cargo Aircraft Detection

+ +

The system detects cargo by aircraft name patterns:

+ + +

Delivery Methods:

+ + +

Configuring Cargo Templates

+ +

Edit Moose_TADC_CargoDispatcher.lua and find CARGO_SUPPLY_CONFIG:

+ +
local CARGO_SUPPLY_CONFIG = {
+    red = {
+        cargoTemplate = "CARGO_RED_AN26_TEMPLATE",         -- Template name from mission editor
+        supplyAirfields = {"Airbase1", "Airbase2"},        -- List of supply bases
+        replenishAmount = 4,                               -- Aircraft added per delivery
+        threshold = 0.90                                   -- Trigger at 90% capacity
+    },
+    blue = {
+        cargoTemplate = "CARGO_BLUE_C130_TEMPLATE",
+        supplyAirfields = {"Airbase3", "Airbase4"},
+        replenishAmount = 4,
+        threshold = 0.90
+    }
+}
+ +

Creating Cargo Templates

+ +

1. In Mission Editor:

+ + +

2. In Configuration:

+ + +

Supply Airfield Strategy

+ +

Choose rear/safe airbases for supplies:

+ +
red = {
+    cargoTemplate = "CARGO_RED_AN26_TEMPLATE",
+    supplyAirfields = {
+        "Rear_Base_1",              -- Far from frontline, safe
+        "Rear_Base_2",              -- Alternate supply source
+        "Central_Logistics_Hub"     -- Main supply depot
+    },
+    replenishAmount = 4,
+    threshold = 0.90
+}
+ +

Tips:

+ + +

Disabling Cargo System

+ +

If you don't want automated resupply:

+
    +
  1. Don't load Moose_TADC_CargoDispatcher.lua
  2. +
  3. Squadrons will operate with their initial aircraft count only
  4. +
  5. System still works perfectly for shorter missions
  6. +
+ +

Testing & Troubleshooting

+ +

Validation Tools

+ +

The system includes built-in validation. Check the DCS log file after mission start for:

+ +
+
[Universal TADC] ═══════════════════════════════════════
+[Universal TADC] Configuration Validation Results:
+[Universal TADC] ✓ All templates exist
+[Universal TADC] ✓ All airbases valid
+[Universal TADC] ✓ All zones found
+[Universal TADC] Configuration is VALID
+[Universal TADC] ═══════════════════════════════════════
+
+ +

In-Game F10 Menu Commands

+ +

Press F10 in-game to access TADC utilities:

+ +

Available to Each Coalition:

+ + +

Available to All (Mission Commands):

+ + +

Common Issues & Solutions

+ +

Issue: "Template not found in mission"

+
+

Cause: Template name in config doesn't match mission editor

+

Solution:

+
    +
  1. Check exact spelling and case
  2. +
  3. Ensure template is in mission editor
  4. +
  5. Verify template is a GROUP (not a unit)
  6. +
  7. Check template name in mission editor properties
  8. +
+
+ +

Issue: "Airbase not found or wrong coalition"

+
+

Cause: Airbase name wrong or captured by enemy

+

Solution:

+
    +
  1. Check exact airbase spelling (case sensitive)
  2. +
  3. Verify airbase is owned by correct coalition in mission editor
  4. +
  5. Use _G.TDAC_CheckAirbase("AirbaseName") in DCS console
  6. +
+
+ +

Issue: "No interceptors launching"

+
+

Check:

+
    +
  1. Are enemy aircraft detected? (F10 → Show Threat Summary)
  2. +
  3. Are squadrons operational? (F10 → Show Squadron Resource Summary)
  4. +
  5. Is airbase captured/destroyed? (F10 → Show Airbase Status Report)
  6. +
  7. Are squadrons on cooldown? (F10 → Show Squadron Resource Summary)
  8. +
  9. Check intercept ratio settings (might be too low)
  10. +
+
+ +

Issue: "Cargo not delivering"

+
+

Check:

+
    +
  1. Is cargo template name correct?
  2. +
  3. Are supply airbases valid and friendly?
  4. +
  5. Is destination airbase captured/operational?
  6. +
  7. Check parking availability (F10 → Show Airbase Health Status)
  8. +
  9. Look for "Cargo delivery detected" messages in log
  10. +
+
+ +

Issue: "Aircraft spawning stuck at parking"

+
+

Cause: Parking spots occupied or insufficient space

+

Solution:

+
    +
  1. Use F10 → Check for Stuck Aircraft
  2. +
  3. Use F10 → Emergency Cleanup Interceptors
  4. +
  5. Check airbase parking capacity (larger aircraft need more space)
  6. +
  7. Reduce squadron sizes if parking is limited
  8. +
+
+ +

DCS Console Diagnostics

+ +

Open DCS Lua console (F12 or scripting console) and run:

+ +
-- Check all supply airbase ownership
+_G.TDAC_CheckAirbaseOwnership()
+
+-- Check specific airbase
+_G.TDAC_CheckAirbase("Kilpyavr")
+
+-- Validate dispatcher configuration
+_G.TDAC_RunConfigCheck()
+
+-- Check airbase parking availability
+_G.TDAC_LogAirbaseParking("Kilpyavr")
+
+-- Test cargo spawn (debugging)
+_G.TDAC_CargoDispatcher_TestSpawn("CARGO_RED_AN26_TEMPLATE", "SupplyBase", "DestinationBase")
+ +

Advanced Features

+ +

Intercept Ratio System

+ +

The interceptRatio setting controls how many fighters launch per enemy aircraft.

+ +

In Moose_TADC_Load2nd.lua:

+ +
local TADC_SETTINGS = {
+    red = {
+        interceptRatio = 0.8,          -- RED launches 0.8 fighters per threat
+        maxActiveCAP = 8,              -- Max 8 groups in air simultaneously
+        defaultCooldown = 300,         -- 5-minute cooldown after engagement
+    },
+    blue = {
+        interceptRatio = 1.2,          -- BLUE launches 1.2 fighters per threat
+        maxActiveCAP = 10,             -- Max 10 groups in air simultaneously
+        defaultCooldown = 300,
+    }
+}
+ +

Intercept Ratio Chart

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ratio1 Enemy4 Enemies8 EnemiesEffect
0.51 fighter2 fighters4 fightersConservative response
0.81 fighter4 fighters7 fightersBalanced (default)
1.01 fighter4 fighters8 fighters1:1 parity
1.42 fighters6 fighters12 fightersStrong response
2.02 fighters8 fighters16 fightersOverwhelming force
+ +

Tactical Effects:

+ + +

Asymmetric Scenarios:

+
-- RED advantage
+red = { interceptRatio = 1.4 },
+blue = { interceptRatio = 0.8 }
+
+-- BLUE advantage
+red = { interceptRatio = 0.8 },
+blue = { interceptRatio = 1.4 }
+ +

Distance-Based Engagement

+ +

Control how far squadrons will chase threats:

+ +
{
+    templateName = "RED_CAP_Base_MiG29",
+    displayName = "Base Defense",
+    airbaseName = "Kilpyavr",
+    aircraft = 12,
+    -- ... other settings ...
+    
+    zoneConfig = {
+        maxEngagementRange = 50000,      -- Won't engage threats >50km from base
+        primaryResponse = 1.0,
+        secondaryResponse = 0.6
+    }
+}
+ +

Cooldown System

+ +

After launching interceptors, squadrons go on cooldown to prevent spam:

+ +
local TADC_SETTINGS = {
+    red = {
+        defaultCooldown = 300,           -- 5 minutes between launches
+        -- ... other settings ...
+    }
+}
+ +

Per-Squadron Cooldown (optional):

+
{
+    templateName = "RED_CAP_Base_MiG29",
+    cooldownOverride = 600,              -- This squadron: 10-minute cooldown
+    -- ... other settings ...
+}
+ +

Aircraft Skill Levels

+ +

Adjust AI difficulty per squadron:

+ +
skill = AI.Skill.AVERAGE      -- Easiest, good for training
+skill = AI.Skill.GOOD         -- Below average
+skill = AI.Skill.HIGH         -- Average pilots
+skill = AI.Skill.EXCELLENT    -- Above average (recommended)
+skill = AI.Skill.ACE          -- Hardest, expert pilots
+ +

Mixed Difficulty Example:

+
RED_SQUADRON_CONFIG = {
+    {
+        displayName = "Elite Squadron",
+        skill = AI.Skill.ACE,             -- Best pilots
+        aircraft = 8,
+        -- ...
+    },
+    {
+        displayName = "Regular Squadron",
+        skill = AI.Skill.GOOD,            -- Average pilots
+        aircraft = 12,
+        -- ...
+    }
+}
+ +

Common Scenarios

+ +

Scenario 1: Simple Border Defense

+ +

Goal: RED defends northern border, BLUE defends southern border

+ +
-- RED Configuration
+RED_SQUADRON_CONFIG = {
+    {
+        templateName = "RED_CAP_North_MiG29",
+        displayName = "Northern Border CAP",
+        airbaseName = "Northern_Base",
+        aircraft = 12,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 20000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER",
+        primaryZone = "RED BORDER"
+    }
+}
+
+-- BLUE Configuration
+BLUE_SQUADRON_CONFIG = {
+    {
+        templateName = "BLUE_CAP_South_F16",
+        displayName = "Southern Border CAP",
+        airbaseName = "Southern_Base",
+        aircraft = 12,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 20000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER",
+        primaryZone = "BLUE BORDER"
+    }
+}
+ +
+ In Mission Editor: + +
+ +

Scenario 2: Layered Defense Network

+ +

Goal: Multiple squadrons covering overlapping zones with different priorities

+ +
RED_SQUADRON_CONFIG = {
+    -- Outer Layer: Long-range interceptors
+    {
+        templateName = "RED_LONG_RANGE_MiG31",
+        displayName = "Long Range Interceptors",
+        airbaseName = "Forward_Base",
+        aircraft = 8,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 35000,
+        speed = 450,
+        patrolTime = 20,
+        type = "FIGHTER",
+        primaryZone = "OUTER PERIMETER"
+    },
+    
+    -- Middle Layer: General defense
+    {
+        templateName = "RED_CAP_MiG29",
+        displayName = "Middle Defense CAP",
+        airbaseName = "Central_Base",
+        aircraft = 12,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 25000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER",
+        primaryZone = "MIDDLE PERIMETER",
+        secondaryZone = "OUTER PERIMETER"
+    },
+    
+    -- Inner Layer: Point defense
+    {
+        templateName = "RED_BASE_DEFENSE_SU27",
+        displayName = "Base Defense",
+        airbaseName = "Main_Base",
+        aircraft = 16,
+        skill = AI.Skill.ACE,
+        altitude = 20000,
+        speed = 320,
+        patrolTime = 40,
+        type = "FIGHTER",
+        primaryZone = "BASE PERIMETER",
+        tertiaryZone = "BASE PERIMETER",
+        zoneConfig = {
+            enableFallback = true,
+            fallbackThreshold = 0.3
+        }
+    }
+}
+ +

Scenario 3: Sustained Operations with Resupply

+ +

Goal: Long mission with automated squadron replenishment

+ +

Squadron Config:

+
RED_SQUADRON_CONFIG = {
+    {
+        templateName = "RED_CAP_Frontline_MiG29",
+        displayName = "Frontline CAP",
+        airbaseName = "Frontline_Base",
+        aircraft = 12,                    -- Will be resupplied
+        skill = AI.Skill.EXCELLENT,
+        altitude = 20000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER",
+        primaryZone = "COMBAT ZONE"
+    }
+}
+ +

Cargo Config (in Moose_TADC_CargoDispatcher.lua):

+
local CARGO_SUPPLY_CONFIG = {
+    red = {
+        cargoTemplate = "CARGO_RED_AN26",
+        supplyAirfields = {
+            "Rear_Base_1",                -- Safe logistics hub
+            "Rear_Base_2",                -- Backup supply source
+            "Central_Depot"               -- Main supply depot
+        },
+        replenishAmount = 4,              -- +4 aircraft per delivery
+        threshold = 0.75                  -- Trigger at 75% (9/12 aircraft)
+    }
+}
+ +

Mission Flow:

+
    +
  1. Frontline squadron intercepts threats
  2. +
  3. Squadron drops to 9 aircraft (75%)
  4. +
  5. Cargo automatically dispatched from rear base
  6. +
  7. Transport flies to frontline base
  8. +
  9. Cargo delivers, squadron back to 12 aircraft
  10. +
  11. Cycle repeats throughout mission
  12. +
+ +

Scenario 4: Asymmetric Warfare

+ +

Goal: RED has numerical superiority, BLUE has quality advantage

+ +
-- RED: More squadrons, lower skill
+local TADC_SETTINGS = {
+    red = {
+        interceptRatio = 0.8,            -- Conservative response
+        maxActiveCAP = 12,               -- More groups allowed
+    }
+}
+
+RED_SQUADRON_CONFIG = {
+    {
+        templateName = "RED_CAP_1",
+        airbaseName = "Base_1",
+        aircraft = 16,                    -- Large squadron
+        skill = AI.Skill.GOOD,            -- Average skill
+        -- ...
+    },
+    {
+        templateName = "RED_CAP_2",
+        airbaseName = "Base_2",
+        aircraft = 16,
+        skill = AI.Skill.GOOD,
+        -- ...
+    },
+    {
+        templateName = "RED_CAP_3",
+        airbaseName = "Base_3",
+        aircraft = 16,
+        skill = AI.Skill.GOOD,
+        -- ...
+    }
+}
+
+-- BLUE: Fewer squadrons, higher skill
+local TADC_SETTINGS = {
+    blue = {
+        interceptRatio = 1.2,            -- Aggressive response
+        maxActiveCAP = 8,                -- Fewer groups
+    }
+}
+
+BLUE_SQUADRON_CONFIG = {
+    {
+        templateName = "BLUE_CAP_1",
+        airbaseName = "Base_1",
+        aircraft = 10,                    -- Smaller squadron
+        skill = AI.Skill.ACE,             -- Elite pilots
+        -- ...
+    },
+    {
+        templateName = "BLUE_CAP_2",
+        airbaseName = "Base_2",
+        aircraft = 10,
+        skill = AI.Skill.ACE,
+        -- ...
+    }
+}
+ +

Tips for New Mission Makers

+ +

Start Simple

+ +
    +
  1. First Mission: Use 1-2 squadrons per side with no zones
  2. +
  3. Second Mission: Add zone-based defense
  4. +
  5. Third Mission: Add cargo resupply system
  6. +
  7. Advanced: Multi-squadron layered defense with fallback
  8. +
+ +

Realistic Aircraft Numbers

+ +

Small Airbase: 6-8 aircraft per squadron
+ Medium Airbase: 10-12 aircraft per squadron
+ Large Airbase: 14-18 aircraft per squadron

+ +

Balance across map: If RED has 40 total aircraft, BLUE should have similar unless asymmetric

+ +

Performance Considerations

+ + + +

Testing Workflow

+ +
    +
  1. Create minimal setup (1 squadron each side)
  2. +
  3. Test in mission editor using "Fly Now"
  4. +
  5. Check F10 menus for squadron status
  6. +
  7. Spawn enemy aircraft to test intercepts
  8. +
  9. Review DCS.log for validation messages
  10. +
  11. Expand gradually once basic system works
  12. +
+ +

Common Mistakes to Avoid

+ + + + + +

Conclusion

+ +

The Universal TADC system provides mission makers with powerful, automated air defense capabilities that create dynamic, realistic air combat scenarios. By following this guide, even new mission makers can create sophisticated missions with minimal scripting knowledge.

+ +

Key Takeaways

+ + + +

Getting Help

+ +

If you encounter issues:

+ +
    +
  1. Check DCS.log for validation errors
  2. +
  3. Use F10 menu diagnostics
  4. +
  5. Run console commands for detailed info
  6. +
  7. Review this guide's troubleshooting section
  8. +
  9. Start simple and expand gradually
  10. +
+ +

Next Steps

+ +
    +
  1. Set up your first squadron (1 RED, 1 BLUE)
  2. +
  3. Test basic intercept behavior
  4. +
  5. Add zones for tactical depth
  6. +
  7. Implement cargo resupply for long missions
  8. +
  9. Experiment with advanced features
  10. +
+ +

Happy mission making! 🚁✈️

+ + +
+ + \ No newline at end of file diff --git a/Moose_TADC/TADC_SYSTEM_GUIDE.html b/Moose_TADC/TADC_SYSTEM_GUIDE.html new file mode 100644 index 0000000..0fa7556 --- /dev/null +++ b/Moose_TADC/TADC_SYSTEM_GUIDE.html @@ -0,0 +1,1353 @@ + + + + + + Universal TADC System - Mission Maker's Guide + + + +
+

Universal TADC System - Mission Maker's Guide

+

Tactical Air Defense Controller with Automated Logistics

+ +
+

📋 Table of Contents

+ +
+ +

What is TADC?

+ +

TADC (Tactical Air Defense Controller) is an automated air defense system for DCS missions that creates realistic, dynamic fighter aircraft responses to airborne threats. Think of it as an AI commander that:

+ + + +

Why Use TADC?

+ + + +

System Overview

+ +

The TADC system consists of three main scripts that work together:

+ +

1. Squadron Configuration (Moose_TADC_SquadronConfigs_Load1st.lua)

+

Purpose: Define all fighter squadrons for RED and BLUE coalitions
+ Contains: Aircraft templates, airbases, patrol parameters, zone assignments
+ Load Order: FIRST (must load before main TADC script)

+ +

2. Main TADC System (Moose_TADC_Load2nd.lua)

+

Purpose: Core threat detection and interceptor management
+ Contains: Threat scanning, squadron selection, intercept logic, F10 menus
+ Load Order: SECOND (after squadron config)

+ +

3. Cargo Dispatcher (Moose_TADC_CargoDispatcher.lua)

+

Purpose: Automated squadron resupply through cargo aircraft
+ Contains: Squadron monitoring, cargo spawning, delivery tracking
+ Load Order: THIRD (optional, only if using resupply system)

+ +

Quick Start Guide

+ +

Prerequisites

+ +

Before setting up TADC, you need:

+ + + +

5-Minute Setup

+ +

1 Create Fighter Templates

+ +
    +
  1. Open your mission in DCS Mission Editor
  2. +
  3. Place fighter aircraft as LATE ACTIVATION GROUPS (not individual units)
  4. +
  5. Name them clearly (example: RED_CAP_Kilpyavr_MiG29)
  6. +
  7. Position them at or near the airbases they'll operate from
  8. +
  9. Set them to the correct coalition (RED or BLUE)
  10. +
+ +
+ Important: Use GROUP templates, not UNIT templates! +
+ +

2 Load MOOSE Framework

+ +
    +
  1. In mission editor, go to Triggers
  2. +
  3. Create a new trigger: MISSION START
  4. +
  5. Add action: DO SCRIPT FILE
  6. +
  7. Select your MOOSE.lua file
  8. +
  9. This must be the FIRST script loaded
  10. +
+ +

3 Load Squadron Configuration

+ +
    +
  1. Create another DO SCRIPT FILE action (after MOOSE)
  2. +
  3. Select Moose_TADC_SquadronConfigs_Load1st.lua
  4. +
  5. Edit the file to configure your squadrons (see below)
  6. +
+ +

4 Load Main TADC System

+ +
    +
  1. Create another DO SCRIPT FILE action
  2. +
  3. Select Moose_TADC_Load2nd.lua
  4. +
  5. (Optional) Adjust settings in the file if needed
  6. +
+ +

5 (Optional) Load Cargo Dispatcher

+ +
    +
  1. If using resupply system, create another DO SCRIPT FILE action
  2. +
  3. Select Moose_TADC_CargoDispatcher.lua
  4. +
+ +
+ Load Order in Mission Editor: +
1. MOOSE.lua
+2. Moose_TADC_SquadronConfigs_Load1st.lua
+3. Moose_TADC_Load2nd.lua
+4. Moose_TADC_CargoDispatcher.lua (optional)
+
+ +

Detailed Configuration

+ +

Squadron Configuration Explained

+ +

Open Moose_TADC_SquadronConfigs_Load1st.lua and find the squadron configuration sections.

+ +

Basic Squadron Example

+ +
{
+    templateName = "RED_CAP_Kilpyavr_MiG29",     -- Must match mission editor template name
+    displayName = "Kilpyavr CAP MiG-29A",        -- Human-readable name for logs/messages
+    airbaseName = "Kilpyavr",                    -- Exact airbase name from DCS
+    aircraft = 12,                                -- Maximum aircraft in squadron
+    skill = AI.Skill.EXCELLENT,                   -- AI pilot skill level
+    altitude = 20000,                             -- Patrol altitude (feet)
+    speed = 350,                                  -- Patrol speed (knots)
+    patrolTime = 30,                              -- Time on station (minutes)
+    type = "FIGHTER"                              -- Aircraft role
+}
+ +

Parameter Guide

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescriptionExample Values
templateNameGroup name from mission editor (EXACT match)"RED_CAP_Base_F15"
displayNameFriendly name shown in messages"Kilpyavr CAP Squadron"
airbaseNameDCS airbase name (case sensitive)"Kilpyavr", "Nellis AFB"
aircraftMax squadron size8, 12, 16
skillAI difficultyAI.Skill.AVERAGE, GOOD, HIGH, EXCELLENT, ACE
altitudeCAP patrol altitude15000 (feet)
speedCAP patrol speed300 (knots)
patrolTimeMinutes on station before RTB20, 30, 40
typeAircraft role"FIGHTER"
+ +

Finding Airbase Names

+ +

Method 1: Mission Editor

+
    +
  1. Open mission editor
  2. +
  3. Click on any airbase
  4. +
  5. The exact name appears in the properties panel
  6. +
  7. Copy this name EXACTLY (case sensitive!)
  8. +
+ +

Method 2: Common Airbases

+ +

Kola Peninsula (Example Map):

+ + +

Nevada:

+ + +

Caucasus:

+ + +

Adding Multiple Squadrons

+ +

You can add as many squadrons as you want. Just copy the squadron block and modify the values:

+ +
RED_SQUADRON_CONFIG = {
+    -- First Squadron
+    {
+        templateName = "RED_CAP_Base1_MiG29",
+        displayName = "Base 1 CAP",
+        airbaseName = "Kilpyavr",
+        aircraft = 12,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 20000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER"
+    },
+    
+    -- Second Squadron (different base)
+    {
+        templateName = "RED_CAP_Base2_SU27",
+        displayName = "Base 2 CAP",
+        airbaseName = "Severomorsk-1",
+        aircraft = 16,
+        skill = AI.Skill.ACE,
+        altitude = 25000,
+        speed = 380,
+        patrolTime = 25,
+        type = "FIGHTER"
+    },
+    
+    -- Add more squadrons here...
+}
+ +
+ Repeat the same process for BLUE squadrons in the BLUE_SQUADRON_CONFIG section. +
+ +

Zone-Based Defense Setup

+ +

Zones allow squadrons to have specific areas of responsibility, creating realistic layered defense.

+ +

Why Use Zones?

+ + + +

Zone Types

+ +

Each squadron can have up to 3 zone types:

+ +
    +
  1. Primary Zone - Main area of responsibility (full response)
  2. +
  3. Secondary Zone - Support area (reduced response, 60% by default)
  4. +
  5. Tertiary Zone - Emergency fallback (enhanced response when squadron weakened)
  6. +
+ +

Creating Zones in Mission Editor

+ +

Method: Helicopter Waypoint Method

+ +
    +
  1. Place a helicopter group (late activation, any type)
  2. +
  3. Name it clearly (example: "RED BORDER")
  4. +
  5. Add waypoints that outline your zone boundary
  6. +
  7. The script will automatically create a polygon zone from these waypoints
  8. +
  9. Repeat for each zone you want to create
  10. +
+ +
+ Example Zone Setup: +
Mission Editor:
+- Helicopter Group: "RED BORDER" with waypoints forming a polygon
+- Helicopter Group: "BLUE BORDER" with waypoints forming a polygon
+- Helicopter Group: "CONTESTED ZONE" with waypoints forming a polygon
+
+ +

Configuring Zone Response

+ +

Add zone configuration to your squadron:

+ +
{
+    templateName = "RED_CAP_Kilpyavr_MiG29",
+    displayName = "Kilpyavr CAP",
+    airbaseName = "Kilpyavr",
+    aircraft = 12,
+    skill = AI.Skill.EXCELLENT,
+    altitude = 20000,
+    speed = 350,
+    patrolTime = 30,
+    type = "FIGHTER",
+    
+    -- Zone Configuration
+    primaryZone = "RED BORDER",                    -- Main responsibility area
+    secondaryZone = "CONTESTED ZONE",              -- Backup coverage
+    tertiaryZone = nil,                            -- No tertiary zone
+    
+    -- Optional: Customize zone behavior
+    zoneConfig = {
+        primaryResponse = 1.0,                     -- Full response in primary zone
+        secondaryResponse = 0.6,                   -- 60% response in secondary
+        tertiaryResponse = 1.4,                    -- 140% response in tertiary
+        enableFallback = false,                    -- Don't auto-switch to tertiary
+        fallbackThreshold = 0.3,                   -- Switch when <30% aircraft remain
+        secondaryLowPriorityFilter = true,         -- Ignore small threats in secondary
+        secondaryLowPriorityThreshold = 2          -- "Small threat" = 2 or fewer aircraft
+    }
+}
+ +

Zone Behavior Examples

+ +

Example 1: Border Defense Squadron

+
primaryZone = "RED BORDER",          -- Patrols the border
+secondaryZone = "INTERIOR",          -- Helps with interior threats if needed
+tertiaryZone = nil                   -- No fallback
+ +

Example 2: Base Defense with Fallback

+
primaryZone = "NORTHERN SECTOR",     -- Main patrol area
+secondaryZone = nil,                 -- No secondary
+tertiaryZone = "BASE PERIMETER",     -- Falls back to defend base when weakened
+enableFallback = true,               -- Auto-switch to tertiary when low
+fallbackThreshold = 0.4              -- Switch at 40% strength
+ +

Example 3: Layered Defense

+
-- Squadron A: Outer layer
+primaryZone = "OUTER PERIMETER"
+
+-- Squadron B: Middle layer
+primaryZone = "MIDDLE PERIMETER"
+
+-- Squadron C: Inner/base defense
+primaryZone = "BASE DEFENSE"
+ +

Global Response (No Zones)

+ +

If you DON'T want zone restrictions, simply leave all zones as nil:

+ +
{
+    templateName = "RED_CAP_Base_MiG29",
+    displayName = "Global Response CAP",
+    airbaseName = "Kilpyavr",
+    aircraft = 12,
+    skill = AI.Skill.EXCELLENT,
+    altitude = 20000,
+    speed = 350,
+    patrolTime = 30,
+    type = "FIGHTER",
+    
+    -- No zones = responds to threats anywhere on the map
+    primaryZone = nil,
+    secondaryZone = nil,
+    tertiaryZone = nil
+}
+ +

Cargo Replenishment System

+ +

The cargo system automatically replenishes squadrons by spawning transport aircraft that fly supplies to airbases.

+ +

How Cargo Works

+ +
    +
  1. Monitoring: Script checks squadron aircraft counts every minute
  2. +
  3. Detection: When squadron drops below threshold (90% by default), cargo is dispatched
  4. +
  5. Spawning: Transport aircraft spawns at a supply airfield
  6. +
  7. Delivery: Flies to destination airbase and lands
  8. +
  9. Replenishment: Squadron aircraft count increases upon delivery
  10. +
  11. Cooldown: 5-minute cooldown before next delivery to same base
  12. +
+ +

Cargo Aircraft Detection

+ +

The system detects cargo by aircraft name patterns:

+ + +

Delivery Methods:

+ + +

Configuring Cargo Templates

+ +

Edit Moose_TADC_CargoDispatcher.lua and find CARGO_SUPPLY_CONFIG:

+ +
local CARGO_SUPPLY_CONFIG = {
+    red = {
+        cargoTemplate = "CARGO_RED_AN26_TEMPLATE",         -- Template name from mission editor
+        supplyAirfields = {"Airbase1", "Airbase2"},        -- List of supply bases
+        replenishAmount = 4,                               -- Aircraft added per delivery
+        threshold = 0.90                                   -- Trigger at 90% capacity
+    },
+    blue = {
+        cargoTemplate = "CARGO_BLUE_C130_TEMPLATE",
+        supplyAirfields = {"Airbase3", "Airbase4"},
+        replenishAmount = 4,
+        threshold = 0.90
+    }
+}
+ +

Creating Cargo Templates

+ +

1. In Mission Editor:

+ + +

2. In Configuration:

+ + +

Supply Airfield Strategy

+ +

Choose rear/safe airbases for supplies:

+ +
red = {
+    cargoTemplate = "CARGO_RED_AN26_TEMPLATE",
+    supplyAirfields = {
+        "Rear_Base_1",              -- Far from frontline, safe
+        "Rear_Base_2",              -- Alternate supply source
+        "Central_Logistics_Hub"     -- Main supply depot
+    },
+    replenishAmount = 4,
+    threshold = 0.90
+}
+ +

Tips:

+ + +

Disabling Cargo System

+ +

If you don't want automated resupply:

+
    +
  1. Don't load Moose_TADC_CargoDispatcher.lua
  2. +
  3. Squadrons will operate with their initial aircraft count only
  4. +
  5. System still works perfectly for shorter missions
  6. +
+ +

Testing & Troubleshooting

+ +

Validation Tools

+ +

The system includes built-in validation. Check the DCS log file after mission start for:

+ +
+
[Universal TADC] ═══════════════════════════════════════
+[Universal TADC] Configuration Validation Results:
+[Universal TADC] ✓ All templates exist
+[Universal TADC] ✓ All airbases valid
+[Universal TADC] ✓ All zones found
+[Universal TADC] Configuration is VALID
+[Universal TADC] ═══════════════════════════════════════
+
+ +

In-Game F10 Menu Commands

+ +

Press F10 in-game to access TADC utilities:

+ +

Available to Each Coalition:

+ + +

Available to All (Mission Commands):

+ + +

Common Issues & Solutions

+ +

Issue: "Template not found in mission"

+
+

Cause: Template name in config doesn't match mission editor

+

Solution:

+
    +
  1. Check exact spelling and case
  2. +
  3. Ensure template is in mission editor
  4. +
  5. Verify template is a GROUP (not a unit)
  6. +
  7. Check template name in mission editor properties
  8. +
+
+ +

Issue: "Airbase not found or wrong coalition"

+
+

Cause: Airbase name wrong or captured by enemy

+

Solution:

+
    +
  1. Check exact airbase spelling (case sensitive)
  2. +
  3. Verify airbase is owned by correct coalition in mission editor
  4. +
  5. Use _G.TDAC_CheckAirbase("AirbaseName") in DCS console
  6. +
+
+ +

Issue: "No interceptors launching"

+
+

Check:

+
    +
  1. Are enemy aircraft detected? (F10 → Show Threat Summary)
  2. +
  3. Are squadrons operational? (F10 → Show Squadron Resource Summary)
  4. +
  5. Is airbase captured/destroyed? (F10 → Show Airbase Status Report)
  6. +
  7. Are squadrons on cooldown? (F10 → Show Squadron Resource Summary)
  8. +
  9. Check intercept ratio settings (might be too low)
  10. +
+
+ +

Issue: "Cargo not delivering"

+
+

Check:

+
    +
  1. Is cargo template name correct?
  2. +
  3. Are supply airbases valid and friendly?
  4. +
  5. Is destination airbase captured/operational?
  6. +
  7. Check parking availability (F10 → Show Airbase Health Status)
  8. +
  9. Look for "Cargo delivery detected" messages in log
  10. +
+
+ +

Issue: "Aircraft spawning stuck at parking"

+
+

Cause: Parking spots occupied or insufficient space

+

Solution:

+
    +
  1. Use F10 → Check for Stuck Aircraft
  2. +
  3. Use F10 → Emergency Cleanup Interceptors
  4. +
  5. Check airbase parking capacity (larger aircraft need more space)
  6. +
  7. Reduce squadron sizes if parking is limited
  8. +
+
+ +

DCS Console Diagnostics

+ +

Open DCS Lua console (F12 or scripting console) and run:

+ +
-- Check all supply airbase ownership
+_G.TDAC_CheckAirbaseOwnership()
+
+-- Check specific airbase
+_G.TDAC_CheckAirbase("Kilpyavr")
+
+-- Validate dispatcher configuration
+_G.TDAC_RunConfigCheck()
+
+-- Check airbase parking availability
+_G.TDAC_LogAirbaseParking("Kilpyavr")
+
+-- Test cargo spawn (debugging)
+_G.TDAC_CargoDispatcher_TestSpawn("CARGO_RED_AN26_TEMPLATE", "SupplyBase", "DestinationBase")
+ +

Advanced Features

+ +

Intercept Ratio System

+ +

The interceptRatio setting controls how many fighters launch per enemy aircraft.

+ +

In Moose_TADC_Load2nd.lua:

+ +
local TADC_SETTINGS = {
+    red = {
+        interceptRatio = 0.8,          -- RED launches 0.8 fighters per threat
+        maxActiveCAP = 8,              -- Max 8 groups in air simultaneously
+        defaultCooldown = 300,         -- 5-minute cooldown after engagement
+    },
+    blue = {
+        interceptRatio = 1.2,          -- BLUE launches 1.2 fighters per threat
+        maxActiveCAP = 10,             -- Max 10 groups in air simultaneously
+        defaultCooldown = 300,
+    }
+}
+ +

Intercept Ratio Chart

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ratio1 Enemy4 Enemies8 EnemiesEffect
0.51 fighter2 fighters4 fightersConservative response
0.81 fighter4 fighters7 fightersBalanced (default)
1.01 fighter4 fighters8 fighters1:1 parity
1.42 fighters6 fighters12 fightersStrong response
2.02 fighters8 fighters16 fightersOverwhelming force
+ +

Tactical Effects:

+ + +

Asymmetric Scenarios:

+
-- RED advantage
+red = { interceptRatio = 1.4 },
+blue = { interceptRatio = 0.8 }
+
+-- BLUE advantage
+red = { interceptRatio = 0.8 },
+blue = { interceptRatio = 1.4 }
+ +

Distance-Based Engagement

+ +

Control how far squadrons will chase threats:

+ +
{
+    templateName = "RED_CAP_Base_MiG29",
+    displayName = "Base Defense",
+    airbaseName = "Kilpyavr",
+    aircraft = 12,
+    -- ... other settings ...
+    
+    zoneConfig = {
+        maxEngagementRange = 50000,      -- Won't engage threats >50km from base
+        primaryResponse = 1.0,
+        secondaryResponse = 0.6
+    }
+}
+ +

Cooldown System

+ +

After launching interceptors, squadrons go on cooldown to prevent spam:

+ +
local TADC_SETTINGS = {
+    red = {
+        defaultCooldown = 300,           -- 5 minutes between launches
+        -- ... other settings ...
+    }
+}
+ +

Per-Squadron Cooldown (optional):

+
{
+    templateName = "RED_CAP_Base_MiG29",
+    cooldownOverride = 600,              -- This squadron: 10-minute cooldown
+    -- ... other settings ...
+}
+ +

Aircraft Skill Levels

+ +

Adjust AI difficulty per squadron:

+ +
skill = AI.Skill.AVERAGE      -- Easiest, good for training
+skill = AI.Skill.GOOD         -- Below average
+skill = AI.Skill.HIGH         -- Average pilots
+skill = AI.Skill.EXCELLENT    -- Above average (recommended)
+skill = AI.Skill.ACE          -- Hardest, expert pilots
+ +

Mixed Difficulty Example:

+
RED_SQUADRON_CONFIG = {
+    {
+        displayName = "Elite Squadron",
+        skill = AI.Skill.ACE,             -- Best pilots
+        aircraft = 8,
+        -- ...
+    },
+    {
+        displayName = "Regular Squadron",
+        skill = AI.Skill.GOOD,            -- Average pilots
+        aircraft = 12,
+        -- ...
+    }
+}
+ +

Common Scenarios

+ +

Scenario 1: Simple Border Defense

+ +

Goal: RED defends northern border, BLUE defends southern border

+ +
-- RED Configuration
+RED_SQUADRON_CONFIG = {
+    {
+        templateName = "RED_CAP_North_MiG29",
+        displayName = "Northern Border CAP",
+        airbaseName = "Northern_Base",
+        aircraft = 12,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 20000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER",
+        primaryZone = "RED BORDER"
+    }
+}
+
+-- BLUE Configuration
+BLUE_SQUADRON_CONFIG = {
+    {
+        templateName = "BLUE_CAP_South_F16",
+        displayName = "Southern Border CAP",
+        airbaseName = "Southern_Base",
+        aircraft = 12,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 20000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER",
+        primaryZone = "BLUE BORDER"
+    }
+}
+ +
+ In Mission Editor: + +
+ +

Scenario 2: Layered Defense Network

+ +

Goal: Multiple squadrons covering overlapping zones with different priorities

+ +
RED_SQUADRON_CONFIG = {
+    -- Outer Layer: Long-range interceptors
+    {
+        templateName = "RED_LONG_RANGE_MiG31",
+        displayName = "Long Range Interceptors",
+        airbaseName = "Forward_Base",
+        aircraft = 8,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 35000,
+        speed = 450,
+        patrolTime = 20,
+        type = "FIGHTER",
+        primaryZone = "OUTER PERIMETER"
+    },
+    
+    -- Middle Layer: General defense
+    {
+        templateName = "RED_CAP_MiG29",
+        displayName = "Middle Defense CAP",
+        airbaseName = "Central_Base",
+        aircraft = 12,
+        skill = AI.Skill.EXCELLENT,
+        altitude = 25000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER",
+        primaryZone = "MIDDLE PERIMETER",
+        secondaryZone = "OUTER PERIMETER"
+    },
+    
+    -- Inner Layer: Point defense
+    {
+        templateName = "RED_BASE_DEFENSE_SU27",
+        displayName = "Base Defense",
+        airbaseName = "Main_Base",
+        aircraft = 16,
+        skill = AI.Skill.ACE,
+        altitude = 20000,
+        speed = 320,
+        patrolTime = 40,
+        type = "FIGHTER",
+        primaryZone = "BASE PERIMETER",
+        tertiaryZone = "BASE PERIMETER",
+        zoneConfig = {
+            enableFallback = true,
+            fallbackThreshold = 0.3
+        }
+    }
+}
+ +

Scenario 3: Sustained Operations with Resupply

+ +

Goal: Long mission with automated squadron replenishment

+ +

Squadron Config:

+
RED_SQUADRON_CONFIG = {
+    {
+        templateName = "RED_CAP_Frontline_MiG29",
+        displayName = "Frontline CAP",
+        airbaseName = "Frontline_Base",
+        aircraft = 12,                    -- Will be resupplied
+        skill = AI.Skill.EXCELLENT,
+        altitude = 20000,
+        speed = 350,
+        patrolTime = 30,
+        type = "FIGHTER",
+        primaryZone = "COMBAT ZONE"
+    }
+}
+ +

Cargo Config (in Moose_TADC_CargoDispatcher.lua):

+
local CARGO_SUPPLY_CONFIG = {
+    red = {
+        cargoTemplate = "CARGO_RED_AN26",
+        supplyAirfields = {
+            "Rear_Base_1",                -- Safe logistics hub
+            "Rear_Base_2",                -- Backup supply source
+            "Central_Depot"               -- Main supply depot
+        },
+        replenishAmount = 4,              -- +4 aircraft per delivery
+        threshold = 0.75                  -- Trigger at 75% (9/12 aircraft)
+    }
+}
+ +

Mission Flow:

+
    +
  1. Frontline squadron intercepts threats
  2. +
  3. Squadron drops to 9 aircraft (75%)
  4. +
  5. Cargo automatically dispatched from rear base
  6. +
  7. Transport flies to frontline base
  8. +
  9. Cargo delivers, squadron back to 12 aircraft
  10. +
  11. Cycle repeats throughout mission
  12. +
+ +

Scenario 4: Asymmetric Warfare

+ +

Goal: RED has numerical superiority, BLUE has quality advantage

+ +
-- RED: More squadrons, lower skill
+local TADC_SETTINGS = {
+    red = {
+        interceptRatio = 0.8,            -- Conservative response
+        maxActiveCAP = 12,               -- More groups allowed
+    }
+}
+
+RED_SQUADRON_CONFIG = {
+    {
+        templateName = "RED_CAP_1",
+        airbaseName = "Base_1",
+        aircraft = 16,                    -- Large squadron
+        skill = AI.Skill.GOOD,            -- Average skill
+        -- ...
+    },
+    {
+        templateName = "RED_CAP_2",
+        airbaseName = "Base_2",
+        aircraft = 16,
+        skill = AI.Skill.GOOD,
+        -- ...
+    },
+    {
+        templateName = "RED_CAP_3",
+        airbaseName = "Base_3",
+        aircraft = 16,
+        skill = AI.Skill.GOOD,
+        -- ...
+    }
+}
+
+-- BLUE: Fewer squadrons, higher skill
+local TADC_SETTINGS = {
+    blue = {
+        interceptRatio = 1.2,            -- Aggressive response
+        maxActiveCAP = 8,                -- Fewer groups
+    }
+}
+
+BLUE_SQUADRON_CONFIG = {
+    {
+        templateName = "BLUE_CAP_1",
+        airbaseName = "Base_1",
+        aircraft = 10,                    -- Smaller squadron
+        skill = AI.Skill.ACE,             -- Elite pilots
+        -- ...
+    },
+    {
+        templateName = "BLUE_CAP_2",
+        airbaseName = "Base_2",
+        aircraft = 10,
+        skill = AI.Skill.ACE,
+        -- ...
+    }
+}
+ +

Tips for New Mission Makers

+ +

Start Simple

+ +
    +
  1. First Mission: Use 1-2 squadrons per side with no zones
  2. +
  3. Second Mission: Add zone-based defense
  4. +
  5. Third Mission: Add cargo resupply system
  6. +
  7. Advanced: Multi-squadron layered defense with fallback
  8. +
+ +

Realistic Aircraft Numbers

+ +

Small Airbase: 6-8 aircraft per squadron
+ Medium Airbase: 10-12 aircraft per squadron
+ Large Airbase: 14-18 aircraft per squadron

+ +

Balance across map: If RED has 40 total aircraft, BLUE should have similar unless asymmetric

+ +

Performance Considerations

+ + + +

Testing Workflow

+ +
    +
  1. Create minimal setup (1 squadron each side)
  2. +
  3. Test in mission editor using "Fly Now"
  4. +
  5. Check F10 menus for squadron status
  6. +
  7. Spawn enemy aircraft to test intercepts
  8. +
  9. Review DCS.log for validation messages
  10. +
  11. Expand gradually once basic system works
  12. +
+ +

Common Mistakes to Avoid

+ + + + + +

Conclusion

+ +

The Universal TADC system provides mission makers with powerful, automated air defense capabilities that create dynamic, realistic air combat scenarios. By following this guide, even new mission makers can create sophisticated missions with minimal scripting knowledge.

+ +

Key Takeaways

+ + + +

Getting Help

+ +

If you encounter issues:

+ +
    +
  1. Check DCS.log for validation errors
  2. +
  3. Use F10 menu diagnostics
  4. +
  5. Run console commands for detailed info
  6. +
  7. Review this guide's troubleshooting section
  8. +
  9. Start simple and expand gradually
  10. +
+ +

Next Steps

+ +
    +
  1. Set up your first squadron (1 RED, 1 BLUE)
  2. +
  3. Test basic intercept behavior
  4. +
  5. Add zones for tactical depth
  6. +
  7. Implement cargo resupply for long missions
  8. +
  9. Experiment with advanced features
  10. +
+ +

Happy mission making! 🚁✈️

+ + +
+ + \ No newline at end of file