29 KiB
Universal TADC System - Mission Maker's Guide
Tactical Air Defense Controller with Automated Logistics
📋 Table of Contents
- What is TADC?
- System Overview
- Quick Start Guide
- Detailed Configuration
- Zone-Based Defense Setup
- Cargo Replenishment System
- Testing & Troubleshooting
- Advanced Features
- Common Scenarios
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:
- Detects enemy aircraft automatically
- Launches fighters to intercept threats
- Manages squadron resources (aircraft availability, cooldowns)
- Replenishes squadrons through cargo aircraft deliveries
- Operates independently for both RED and BLUE coalitions
Why Use TADC?
✅ Realistic Air Defense - Squadrons respond intelligently to threats
✅ Dynamic Gameplay - Air battles happen organically without manual triggers
✅ Balanced Competition - Both sides operate with equal capabilities
✅ Sustainable Operations - Cargo system allows long missions with resupply
✅ Easy Configuration - Simple tables instead of complex scripting
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:
- ✅ MOOSE Framework loaded in your mission (download from MOOSE GitHub)
- ✅ Fighter aircraft templates created in DCS mission editor (as GROUPS, not units)
- ✅ Airbases under correct coalition control
- ✅ (Optional) Cargo aircraft templates for resupply missions
5-Minute Setup
Step 1: Create Fighter Templates
- Open your mission in DCS Mission Editor
- Place fighter aircraft as LATE ACTIVATION GROUPS (not individual units)
- Name them clearly (example:
RED_CAP_Kilpyavr_MiG29) - Position them at or near the airbases they'll operate from
- Set them to the correct coalition (RED or BLUE)
Important: Use GROUP templates, not UNIT templates!
Step 2: Load MOOSE Framework
- In mission editor, go to Triggers
- Create a new trigger: MISSION START
- Add action: DO SCRIPT FILE
- Select your MOOSE.lua file
- This must be the FIRST script loaded
Step 3: Load Squadron Configuration
- Create another DO SCRIPT FILE action (after MOOSE)
- Select
Moose_TADC_SquadronConfigs_Load1st.lua - Edit the file to configure your squadrons (see below)
Step 4: Load Main TADC System
- Create another DO SCRIPT FILE action
- Select
Moose_TADC_Load2nd.lua - (Optional) Adjust settings in the file if needed
Step 5: (Optional) Load Cargo Dispatcher
- If using resupply system, create another DO SCRIPT FILE action
- Select
Moose_TADC_CargoDispatcher.lua
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
| Parameter | Description | Example Values |
|---|---|---|
| templateName | Group name from mission editor (EXACT match) | "RED_CAP_Base_F15" |
| displayName | Friendly name shown in messages | "Kilpyavr CAP Squadron" |
| airbaseName | DCS airbase name (case sensitive) | "Kilpyavr", "Nellis AFB" |
| aircraft | Max squadron size | 8, 12, 16 |
| skill | AI difficulty | AI.Skill.AVERAGE, GOOD, HIGH, EXCELLENT, ACE |
| altitude | CAP patrol altitude | 15000 (feet) |
| speed | CAP patrol speed | 300 (knots) |
| patrolTime | Minutes on station before RTB | 20, 30, 40 |
| type | Aircraft role | "FIGHTER" |
Finding Airbase Names
Method 1: Mission Editor
- Open mission editor
- Click on any airbase
- The exact name appears in the properties panel
- Copy this name EXACTLY (case sensitive!)
Method 2: Common Airbases
Kola Peninsula (Example Map):
- RED:
"Kilpyavr","Severomorsk-1","Severomorsk-3","Murmansk International" - BLUE:
"Luostari Pechenga","Ivalo","Alakurtti"
Nevada:
"Nellis AFB","McCarran International","Creech AFB","Tonopah Test Range"
Caucasus:
"Batumi","Gudauta","Senaki-Kolkhi","Kobuleti","Kutaisi"
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?
- Border Defense: Squadrons patrol specific sectors
- Layered Defense: Multiple squadrons cover overlapping areas
- Priority Response: Squadrons respond differently based on threat location
- Realistic Behavior: Fighters don't fly across the entire map for minor threats
Zone Types
Each squadron can have up to 3 zone types:
- Primary Zone - Main area of responsibility (full response)
- Secondary Zone - Support area (reduced response, 60% by default)
- Tertiary Zone - Emergency fallback (enhanced response when squadron weakened)
Creating Zones in Mission Editor
Method: Helicopter Waypoint Method
- Place a helicopter group (late activation, any type)
- Name it clearly (example:
"RED BORDER") - Add waypoints that outline your zone boundary
- The script will automatically create a polygon zone from these waypoints
- Repeat for each zone you want to create
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
- Monitoring: Script checks squadron aircraft counts every minute
- Detection: When squadron drops below threshold (90% by default), cargo is dispatched
- Spawning: Transport aircraft spawns at a supply airfield
- Delivery: Flies to destination airbase and lands
- Replenishment: Squadron aircraft count increases upon delivery
- Cooldown: 5-minute cooldown before next delivery to same base
Cargo Aircraft Detection
The system detects cargo by aircraft name patterns:
CARGOTRANSPORTC130orC-130AN26orAN-26
Delivery Methods:
- Landing: Aircraft lands at destination airbase
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
-
In Mission Editor:
- Place transport aircraft group (C-130, An-26, etc.)
- Name it:
CARGO_RED_AN26_TEMPLATEorCARGO_BLUE_C130_TEMPLATE - Set LATE ACTIVATION
- Position at any friendly airbase (starting position doesn't matter)
-
In Configuration:
- Use the EXACT template name in
cargoTemplatefield - List supply airbases in
supplyAirfieldsarray - Set how many aircraft each delivery adds (
replenishAmount)
- Use the EXACT template name in
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:
- Use 3-5 supply airbases for redundancy
- Choose bases far from combat zones
- Ensure supply bases are well-defended
- Balance geographic coverage
Disabling Cargo System
If you don't want automated resupply:
- Don't load
Moose_TADC_CargoDispatcher.lua - Squadrons will operate with their initial aircraft count only
- System still works perfectly for shorter missions
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:
- Show Squadron Resource Summary - Current aircraft counts
- Show Airbase Status Report - Operational status of all bases
- Show Active Interceptors - Currently airborne fighters
- Show Threat Summary - Detected enemy aircraft
- Broadcast Squadron Summary Now - Force immediate status update
- Show Cargo Delivery Log - Recent supply missions
- Show Zone Coverage Map - Squadron zone assignments
Available to All (Mission Commands):
- Emergency Cleanup Interceptors - Remove stuck/dead groups
- Show TADC System Status - Uptime and system health
- Check for Stuck Aircraft - Manual stuck aircraft check
- Show Airbase Health Status - Parking/spawn issues
Common Issues & Solutions
Issue: "Template not found in mission"
Cause: Template name in config doesn't match mission editor
Solution:
- Check exact spelling and case
- Ensure template is in mission editor
- Verify template is a GROUP (not a unit)
- Check template name in mission editor properties
Issue: "Airbase not found or wrong coalition"
Cause: Airbase name wrong or captured by enemy
Solution:
- Check exact airbase spelling (case sensitive)
- Verify airbase is owned by correct coalition in mission editor
- Use
_G.TDAC_CheckAirbase("AirbaseName")in DCS console
Issue: "No interceptors launching"
Check:
- Are enemy aircraft detected? (F10 → Show Threat Summary)
- Are squadrons operational? (F10 → Show Squadron Resource Summary)
- Is airbase captured/destroyed? (F10 → Show Airbase Status Report)
- Are squadrons on cooldown? (F10 → Show Squadron Resource Summary)
- Check intercept ratio settings (might be too low)
Issue: "Cargo not delivering"
Check:
- Is cargo template name correct?
- Are supply airbases valid and friendly?
- Is destination airbase captured/operational?
- Check parking availability (F10 → Show Airbase Health Status)
- Look for "Cargo delivery detected" messages in log
Issue: "Aircraft spawning stuck at parking"
Cause: Parking spots occupied or insufficient space
Solution:
- Use F10 → Check for Stuck Aircraft
- Use F10 → Emergency Cleanup Interceptors
- Check airbase parking capacity (larger aircraft need more space)
- Reduce squadron sizes if parking is limited
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:
| Ratio | 1 Enemy | 4 Enemies | 8 Enemies | Effect |
|---|---|---|---|---|
| 0.5 | 1 fighter | 2 fighters | 4 fighters | Conservative response |
| 0.8 | 1 fighter | 4 fighters | 7 fighters | Balanced (default) |
| 1.0 | 1 fighter | 4 fighters | 8 fighters | 1:1 parity |
| 1.4 | 2 fighters | 6 fighters | 12 fighters | Strong response |
| 2.0 | 2 fighters | 8 fighters | 16 fighters | Overwhelming force |
Tactical Effects:
- Low (0.5-0.8): Sustainable defense, squadrons last longer
- Medium (0.8-1.2): Balanced dogfights, realistic attrition
- High (1.4-2.0): Strong defense, rapid squadron depletion
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:
- Create zone "RED BORDER" (helicopter waypoints on northern border)
- Create zone "BLUE BORDER" (helicopter waypoints on southern border)
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:
- Frontline squadron intercepts threats
- Squadron drops to 9 aircraft (75%)
- Cargo automatically dispatched from rear base
- Transport flies to frontline base
- Cargo delivers, squadron back to 12 aircraft
- Cycle repeats throughout mission
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
- First Mission: Use 1-2 squadrons per side with no zones
- Second Mission: Add zone-based defense
- Third Mission: Add cargo resupply system
- Advanced: Multi-squadron layered defense with fallback
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
- Limit active groups: Use
maxActiveCAPto prevent FPS drops - Zone sizes matter: Smaller zones = less scanning overhead
- Cargo cooldowns: Prevent cargo spam with reasonable cooldowns
- Squadron counts: 3-5 squadrons per side is a good starting point
Testing Workflow
- Create minimal setup (1 squadron each side)
- Test in mission editor using "Fly Now"
- Check F10 menus for squadron status
- Spawn enemy aircraft to test intercepts
- Review DCS.log for validation messages
- Expand gradually once basic system works
Common Mistakes to Avoid
❌ Using UNIT templates instead of GROUP templates
✅ Use GROUP templates (late activation groups)
❌ Misspelling airbase names
✅ Copy exact names from mission editor
❌ Loading scripts in wrong order
✅ Squadron Config → Main TADC → Cargo Dispatcher
❌ Setting intercept ratio too high
✅ Start with 0.8-1.0, adjust after testing
❌ Forgetting to load MOOSE first
✅ MOOSE must be first script loaded
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
✅ Three scripts work together: Squadron Config → Main TADC → Cargo Dispatcher
✅ Configuration is simple: Edit tables, not complex code
✅ Both coalitions operate independently: Balanced or asymmetric scenarios
✅ Zones enable tactical behavior: Realistic area-of-responsibility system
✅ Cargo enables sustained operations: Long missions with automatic resupply
✅ Built-in validation: Checks configuration before mission starts
✅ F10 menus provide visibility: Monitor system status in real-time
Getting Help
If you encounter issues:
- Check DCS.log for validation errors
- Use F10 menu diagnostics
- Run console commands for detailed info
- Review this guide's troubleshooting section
- Start simple and expand gradually
Next Steps
- Set up your first squadron (1 RED, 1 BLUE)
- Test basic intercept behavior
- Add zones for tactical depth
- Implement cargo resupply for long missions
- Experiment with advanced features
Happy mission making! 🚁✈️
*Author: F99th-TracerFacer
Document Version: 1.0
Last Updated: October 2025
Compatible with: MOOSE Framework & DCS World