AEGIS IADS¶
Event-Driven Integrated Air Defense for DCS World | v0.8.3
Brought to you by VMFA(AW)-224 Skunkworks
v0.8.4-beta2 Available
- Mobile SAM position tracking —
MOBsuffix enables periodic position refresh for shoot-and-scoot and convoy escort SAMs - EW sub-polling — spreads
getDetectedTargets()across 200ms sub-ticks (one EW per frame) - Redundant API elimination — state transitions with identical DCS commands skip all API calls
- Event-driven PD slaving — PDs update when parent transitions, not every poll tick
- Static object discovery — PWR/CMD placed as statics (generators, buildings) now auto-discovered
- Physics-based burn-through rewrite — single β constant replaces 6-knob formula
- Per-system tracking bias — SME-corrected TR/Eff ratios per SAM type (1.05–3.19)
- Sector jam behavior fixes — observable jam flag, nearest-EW bearing gate
- HERC jammer platform — EC-130H Compass Call support
- SA-12/SA-23 Gladiator/Giant split — separate WEZ modeling for medium-range vs ABM missiles
- SA-6, SA-11, PATRIOT WEZ corrections — aligned to real missile envelopes
- SA-22 Pantsir-S1 + SAMP/T — new SAM types (CurrentHill + HDS mods)
- IADS companion visualizer — real-time status via UDP export + web UI
Download v0.8.4-beta2{ .md-button }
What Is AEGIS¶
AEGIS models how integrated air defense networks actually behave — SAMs that start dark, activate on early warning radar feeds, react to anti-radiation missiles, degrade gracefully when infrastructure is destroyed, and cycle emissions unpredictably when operating autonomously.
- EW-driven activation. SAMs start dark. Only EW radars poll for contacts. SAMs activate when a contact enters their activation range.
- Graceful degradation. Kill the EW and SAMs go autonomous. Destroy a power source and the linked node goes permanently dark. Every infrastructure kill makes the IADS worse, never broken.
- EMCON cycling with crew behavior. Degraded SAMs cycle radars on/off with randomized timing, threat memory, quick peeks, and double-sweeps. No two cycles are the same.
- HARM reaction policies. SAMs detect anti-radiation missiles and react based on system capability — self-protect systems engage, SAMs with PD escorts lean on point defense, others go dark. Crews have reaction delays, panic chances, and the occasional brave stand.
- PB HARM network warning. Pre-briefed HARMs are tracked via trajectory projection. The network warns SAMs in the path — but only if a live EW is providing coverage.
- Electronic Attack (EA). EA aircraft suppress SAMs with physics-based burn-through jamming. Two-layer model: EW contact filtering with angular masking and SAM jammed EMCON cycling. Four jammer modes (OMNI, WIDE, 2xDIR, OFF), WIDE cone presets, directional pod targeting, passive ESM with NATO threat identification. Home-on-Jam on modern SAMs. Player-controlled via F10 menu or optional GUI overlay.
- Decoy susceptibility. TALDs activate SAMs and waste missiles. Bombs and other ordnance are filtered out.
- Zero dependencies. Single Lua file, pure DCS scripting engine. No MOOSE, no MIST, no desanitization. Name your groups, load the script, done.
Use the Setup Configurator to generate a customized setup script, or grab the defaults from Downloads.
Quick Example¶
Name your groups, load the script, done:
EW-NORTH EW radar
SAM-SA10-NORTH-1 SA-10 in sector NORTH
SAM-SA2-NORTH-2 SA-2 in sector NORTH
PD-SA15-NORTH-2 Point defense for the SA-2
PWR-EW-NORTH Power source for the EW
local iads = AEGIS:New("red", { debug = true })
iads:Activate()
iads:AddF10Menu()
iads:StartMapDebug(15)
Feature Overview¶
| Feature | Version |
|---|---|
| EW-driven WEZ gating | v0.1+ |
| Infrastructure dependencies (EW, PWR) | v0.2+ |
| EMCON cycling with jitter behaviors | v0.2+ |
| HARM detection (TOO/SP mode) | v0.3+ |
| HARM reaction policies (STAY_HOT, LAST_DITCH, GO_DARK) | v0.3.2+ |
| Crew hysteresis (panic, multi-HARM saturation) | v0.3.2+ |
| Contact filtering (aircraft + TALDs only) | v0.3.1+ |
| PB HARM network warning (trajectory projection) | v0.6+ |
| PD stays hot during parent HARM reaction | v0.6.2 |
| HARM targeting PD redirects to parent | v0.6.2 |
| ECM jammer framework (jammed EMCON cycling) | v0.7.0+ |
| PB HARM EW detection delay (score-per-sweep) | v0.7.1 |
| Alert frustration (ALERT timeout without WEZ contact) | v0.7.2 |
| Orphan PD promotion (PD → autonomous SAM) | v0.7.2 |
| EW detection range override (DET suffix) | v0.8.0 |
| Critical unit tracking (tracking radar mission kill) | v0.8.0 |
| High Digit SAMs + CurrentHill mod support | v0.8.0 |
| Round-robin EW polling (performance) | v0.8.0 |
| EA v2: physics-based burn-through + antenna gain | v0.8.1 |
| EW contact filtering (angular masking, pie geometry) | v0.8.1 |
| Home-on-Jam (HOJ-capable SAMs break through jamming) | v0.8.1 |
| Passive ESM with NATO radar identification | v0.8.1 |
| EA GUI overlay (optional clickable panel) | v0.8.1 |
| Copilot/WSO EA support (slot-based lookup) | v0.8.1 |
| HARM detection range gate (40 NM default) | v0.8.2 |
| Per-SAM saturation threshold (crew personality) | v0.8.2 |
| NEZ frustration gating (ambush reset with full WEZ) | v0.8.3 |
| DIR burn-through normalization fix | v0.8.3 |
| SET_BRG ABS/REL mode (magnetic bearing input) | v0.8.3 |
| Mobile SAM position tracking (MOB suffix) | v0.8.4-beta2 |
| DIR pod bearing display | v0.8.4-beta2 |
| Range-dependent EW pie narrowing | v0.8.4-beta2 |
| ESM range reveal (confidence over time) | v0.8.4-beta2 |
System Database¶
Use the TYPE key (second column) in your group name: SAM-SA10-NORTH-1, PD-SA15-NORTH-1, etc.
Base DCS¶
| System | TYPE Key | WEZ (NM) | NEZ (NM) | ACT (NM) | Alt Min (ft) | Alt Max (ft) | Self-Protect |
|---|---|---|---|---|---|---|---|
| SA2 Guideline | SA2 | 24 | 10 | 30 | 150 | 80,000 | |
| SA3 Goa | SA3 | 10 | 5 | 14 | 600 | 80,000 | |
| SA5 Gammon | SA5 | 125 | 60 | 150 | 1,000 | 100,000 | |
| SA6 Gainful | SA6 | 14 | 5 | 18 | 60 | 26,000 | |
| SA8 Gecko | SA8 | 7 | 3.5 | 9 | 30 | 16,500 | |
| SA10 Grumble | SA10 | 39 | 20 | 50 | 50 | 100,000 | Yes |
| SA11 Gadfly | SA11 | 25 | 12 | 30 | 10 | 75,000 | Yes |
| SA13 Gopher | SA13 | 2.8 | 1.4 | 4 | 33 | 11,500 | |
| SA15 Gauntlet | SA15 | 8 | 3 | 10 | 10 | 20,000 | Yes |
| SA19 Grison | SA19 | 4.4 | 2 | 6 | 15 | 11,500 | |
| HAWK | HAWK | 25 | 12 | 30 | 150 | 45,000 | |
| Patriot | PATRIOT | 80 | 35 | 95 | 200 | 80,000 | Yes |
| NASAMS | NASAMS | 10 | 5 | 12 | 100 | 50,000 | |
| Gepard | GEPARD | 2 | 1 | 3 | 15 | 10,000 | |
| ZSU-23 Shilka | SHILKA | 1.5 | 0.5 | 2 | 0 | 10,000 | |
| Roland | ROLAND | 4 | 2 | 5 | 50 | 16,000 | |
| Rapier | RAPIER | 3 | 1.5 | 4 | 50 | 10,000 |
CurrentHill Mod¶
| System | TYPE Key | WEZ (NM) | NEZ (NM) | ACT (NM) | Alt Min (ft) | Alt Max (ft) | Self-Protect |
|---|---|---|---|---|---|---|---|
| TOR-M2 | SA15CH | 9 | 3 | 11 | 10 | 33,000 | Yes |
| Pantsir-S1 | SA22 | 11 | 5 | 14 | 15 | 49,000 | Yes |
High Digit SAMs Mod¶
HDS values are real-world estimates, not yet verified in-game. Expect these to change as testing continues.
| System | TYPE Key | WEZ (NM) | NEZ (NM) | ACT (NM) | Alt Min (ft) | Alt Max (ft) | Self-Protect |
|---|---|---|---|---|---|---|---|
| SA10B (S-300PS 90km) | SA10B | 40 | 25 | 50 | 50 | 100,000 | Yes |
| SA10C (S-300PS ext) | SA10C | 49 | 25 | 63 | 33 | 100,000 | Yes |
| SA12 Gladiator (v0.8.4-beta) | SA12 | 41 | 20 | 50 | 82 | 100,000 | Yes |
| SA12 Giant (v0.8.4-beta) | SA12G | 54 | 25 | 64 | 82 | 100,000 | Yes |
| SA17 Grizzly | SA17 | 27 | 12 | 30 | 30 | 75,000 | Yes |
| SA20A (S-300PMU1) | SA20A | 81 | 40 | 95 | 50 | 100,000 | Yes |
| SA20B (S-300PMU2) | SA20B | 109 | 50 | 120 | 33 | 100,000 | Yes |
| SA21 Growler (S-400) | SA21 | 105 | 50 | 130 | 50 | 100,000 | Yes |
| SA23 Gladiator (VM) (v0.8.4-beta) | SA23 | 54 | 25 | 64 | 50 | 100,000 | Yes |
| SA23 Giant (VM) (v0.8.4-beta) | SA23G | 108 | 65 | 130 | 50 | 100,000 | Yes |
| SA23 Gladiator (V4) (v0.8.4-beta) | SA23V4 | 81 | 40 | 95 | 50 | 100,000 | Yes |
| SA23 Giant (V4) (v0.8.4-beta) | SA23V4G | 205 | 100 | 220 | 50 | 100,000 | Yes |
| SAMP/T Mamba | SAMPT | 65 | 30 | 75 | 100 | 80,000 | Yes |
All values are user-editable in SYSTEM_DB. Override any value per-site with name suffixes (NEZ, WEZ, ACT).
Credits¶
- Concept and Requirements: VMFA(AW)-224 Skunkworks
- Architecture and Implementation: VMFA(AW)-224 Skunkworks + Claude
- Inspired by: Skynet IADS (walder), IADScript (Grimes)
- Built for: VMFA(AW)-224 Skunkworks and the DCS community
License¶
- Code (
aegis-iads.lua): GNU General Public License v3.0 — free to use, modify, and distribute. Modifications must remain open source under the same license. - Documentation: Creative Commons Attribution-ShareAlike 4.0 — free to share and adapt with attribution.