Skip to content

AEGIS IADS — Tuning Guide

This guide explains every configuration parameter in terms of what it does to IADS behavior — not just what the code variable is, but what changes in the cockpit when you adjust it.

All parameters are passed to AEGIS:New() in the config table. Every value has a sane default; you only need to set what you want to change.


Network Timing

These control how fast the IADS detects and reacts to aircraft entering the battlespace.

ewPollInterval

Default: 10s — How often each Early Warning radar checks for contacts.

This is the IADS heartbeat. Every ewPollInterval seconds, each EW calls getDetectedTargets() and feeds new contacts to its sector's SAMs.

Value Effect
5s Snappy — SAMs go ALERT within seconds of EW detection. Harder SEAD.
10s Default — realistic processing delay. SAMs react within one poll cycle.
20-30s Sluggish — noticeable gap between aircraft entering EW coverage and SAMs waking up. Simulates degraded C2 or overloaded operators.

Cockpit feel: Lower values make the IADS feel "alive" — you barely cross the detection boundary and SAMs are already tracking. Higher values give you more time between the RWR chirp from the EW and the SAM spike.

Round-Robin Polling (v0.8.0+)

The poll interval is divided across sectors. A 10s interval with 7 sectors fires one sector every ~1.4s. Each sector is still polled once per ewPollInterval, but the work is spread across time. This reduces tick rate impact with 70+ aircraft. No config changes needed — the sub-interval is computed automatically.

alertTimeout

Default: 60s — How long a SAM stays in ALERT after the last contact disappears from its engagement zone.

This is not "how long the SAM stays alert after activation." It's a contact staleness timer. The EW poll keeps refreshing the SAM's last-seen timestamp as long as contacts are in range. Once the sky is clear (target left, shot down, or went cold), this timer starts counting. When it expires, the SAM goes DARK.

Value Effect
30s Short memory — SAMs go dark quickly after you egress or notch. Rewards hit-and-run tactics.
60s Default — SAM holds for a minute. Enough time that a brief notch won't save you.
120-180s Paranoid crews — SAMs stay hot for minutes after last contact. Punishes players who expect a quick return to dark.

Cockpit feel: High values mean the RWR spike lingers long after you've turned cold. Low values reward aggressive maneuvering — duck behind terrain, wait 30 seconds, and the SAM goes back to sleep.

alertFrustrationMin / alertFrustrationMax

Default: 30-60s — How long a SAM stays ALERT with contacts in the activation range but nothing inside the WEZ before the crew gets antsy and powers down.

A recce aircraft orbiting at the edge of a SAM's activation range will trigger ALERT, but if it never enters the WEZ, the crew eventually decides it's not worth staying lit up.

Values Effect
15-30s Impatient crews — power down quickly if nothing's in the WEZ.
30-60s Default — realistic patience window.
60-120s Patient crews — willing to stay ALERT longer for edge-of-range contacts.

Cockpit feel: You orbit just outside a SAM's WEZ. The spike appears, then after 30-60 seconds it vanishes — the crew powered down. Push closer to the WEZ and it comes right back. Pull away and it stays dark.

alertFrustrationStayPct

Default: 10% — Chance the crew stays hot despite no WEZ contacts, re-rolling the timeout.

Not every crew gives up on schedule. Some decide to hold a little longer, gambling that the target will push closer.

Value Effect
0% Crews always power down at timeout. Predictable.
10% Default — one in ten crews stays hot and re-rolls.
25-30% Stubborn crews — frequently stay lit despite no WEZ threat.

ewDetectionRange

Default: 0 (no limit) — Maximum detection range in NM for EW radars. 0 means DCS handles detection range natively (no cap).

Limits how far each EW can "see." Contacts beyond this range are dropped before feeding to the sector's SAMs. Models degraded radars, terrain masking, or doctrinal placement without touching DCS unit properties.

Can be overridden per-EW via the DET{range} name suffix (e.g., EW-NORTH-DET120). The suffix always takes priority over the global config value.

Value Effect
0 Default — no limit. DCS radar model determines detection range.
60-80 NM Short-range EW — models a mobile P-19 or terrain-masked radar. Only sees close contacts.
100-120 NM Medium-range EW — typical 1L13 Nebo or 55G6 in good terrain.
150+ NM Long-range EW — hilltop radar with full horizon. Barely different from no limit in most missions.

Cockpit feel: A capped EW creates a detection bubble. Fly outside it and the sector's SAMs stay dark — the EW can't see you even though DCS's radar model technically would. Useful for creating realistic detection coverage that varies by site placement.

Per-EW override examples:

EW-NORTH              → uses global default (0 = no limit)
EW-NORTH-DET120       → 120 NM detection range
EW-NORTH-2-DET80      → EW #2 in NORTH, 80 NM cap


Engagement Zones

These determine how close an aircraft must be before a SAM activates.

defaultZone

Default: "WEZ" — Which engagement envelope SAMs use when no name-based override is present.

Value Meaning
"WEZ" SAM activates at its maximum kinematic engagement range — the outer edge of what it can physically shoot at. Aggressive posture.
"NEZ" SAM activates at roughly half WEZ — only engages targets well within its envelope. Ambush posture: stays dark longer, fires at higher Pk.

Individual SAMs override this via name suffixes: SAM-SA10-NORTH-1-NEZ or SAM-SA6-SOUTH-1-WEZ10 (custom 10 NM WEZ).

Cockpit feel: WEZ means SAMs light up at max range — you get spiked early but the shots are at the edge of the envelope. NEZ means silence until you're deep inside, then the SAM has a high-Pk shot. NEZ is scarier for SEAD players.

autoAssociateRange

Default: 40 NM — Maximum distance for automatic EW-to-SAM sector association.

Only matters for SAMs added via API without a sector name in their group name. If your groups follow the naming convention (SAM-SA10-NORTH-1), this is never used — the sector comes from the name.

pdAssociateRange

Default: 5 NM — Maximum distance for automatic Point Defense to parent SAM pairing.

A PD unit (like PD-SA15-NORTH-1) automatically parents to the nearest SAM in the same sector within this radius. If your SA-15 is 3 NM from the SA-10, it pairs. If it's 8 NM away, it doesn't.

Mission design: Place PDs close to what they're defending. Real SA-15s sit inside the SA-10 battery footprint (~2-3 NM). If you want wider coverage, increase this value.


EMCON Cycling

When SAMs lose their EW network (radar destroyed, C2 killed), they enter EMCON — cycling their own radar on and off to search for targets while minimizing exposure to HARMs. These parameters control that cycle.

EMCON has two phases: 1. Silent phase (EMCON_ON) — radar off, SAM invisible. Duration set by emconOnMin/Max. 2. Sweep phase (EMCON_OFF) — radar on, SAM searching. Duration set by emconOffMin/Max.

emconOnMin / emconOnMax

Default: 30-120s — Duration range for the silent phase (radar OFF).

A random value between min and max is chosen each cycle, then modified by threat memory and relaxation scaling. This is how long the SAM hides between radar sweeps.

Values Effect
10-30s Nervous crews — short gaps, frequent sweeps. Easier to detect via RWR pattern analysis.
30-120s Default — unpredictable silence, hard to time a HARM shot.
120-300s Patient ambushers — very long silence, rare sweeps. Hard to find but also slow to detect threats.

Cockpit feel: Short silent phases mean your RWR flickers constantly as SAMs sweep. Long silent phases mean eerie silence punctuated by sudden spikes — you never know when the next one comes.

emconOffMin / emconOffMax

Default: 15-45s — Duration range for the sweep phase (radar ON).

How long the radar stays on during each sweep. Longer sweeps = more time to build a track and fire. Shorter sweeps = less exposure to HARMs.

Values Effect
5-15s Quick peeks — barely enough time for DCS AI to get a firing solution. Limits SAM effectiveness but minimizes HARM vulnerability.
15-45s Default — enough time to acquire, track, and engage.
45-90s Aggressive — SAM stays on long enough to fire multiple missiles. Very exposed to HARMs.

Cockpit feel: Short sweeps mean brief RWR spikes that vanish before you can react. Long sweeps give you time to lock a HARM and fire back.

emconDetectDelay

Default: 5s — Seconds after radar turns on before the SAM checks for targets.

Models the time for the radar to stabilize and the scope to populate. The radar is emitting during this delay (visible on RWR), but the SAM hasn't processed what it sees yet.

Usually leave this alone. Too low and you get false detections from radar startup artifacts. Too high and the SAM wastes sweep time not looking.

emconReengageMin / emconReengageMax

Default: 10-30s — How long an EMCON-engaged SAM (tracking a contact from its own sweep) waits with no contacts before cycling back to silent.

If a SAM sweeps, finds a target, and goes ALERT — but the target then leaves the WEZ — this timer determines how quickly the SAM gives up and goes back to EMCON silence.

Values Effect
5-10s Quick to give up — target moves out of WEZ, SAM goes silent fast. Good for hit-and-run attackers.
10-30s Default — holds for a bit hoping the target comes back.
30-60s Persistent — stays on for a while after losing track. Burns more HARM exposure time.

emconStartupJitter

Default: 60s — Maximum random delay before a SAM's first EMCON cycle.

When multiple SAMs enter EMCON simultaneously (typically because their EW was just destroyed), this prevents them all from sweeping at the same time. Each SAM waits 0 to emconStartupJitter seconds before beginning its first cycle.

Value Effect
0s All SAMs in the sector sweep simultaneously after EW loss. Unrealistic synchronized pulse.
60s Default — sweeps spread across a 1-minute window.
120-180s Wide spread — some SAMs take 2-3 minutes to start their first sweep after losing the network.

Cockpit feel: With low jitter, you'll see multiple RWR spikes appear together — obvious EMCON pattern. With high jitter, spikes feel random and independent.


EMCON Unpredictability

These add non-deterministic behavior to the EMCON cycle, making it harder for SEAD players to time their attacks.

emconDoubleSweepPct

Default: 15% — Chance the SAM immediately re-sweeps after detecting something outside its WEZ.

The SAM sees a contact on sweep, but it's outside engagement range. The crew thinks "wait, what was that?" and does a quick second look 5-10 seconds later. If the target moved closer, the second sweep might catch it in the WEZ.

Value Effect
0% Never double-sweeps. Predictable: one sweep, one silence.
15% Default — occasional double-take.
30-50% Paranoid crews — frequent double-sweeps when they see anything. More radar-on time.

Cockpit feel: You see a brief RWR spike, it disappears, then 5-10 seconds later it comes back unexpectedly. Catches players who dash in right after a sweep ends.

emconEarlyTermPct

Default: 20% — Chance a sweep terminates early (3-6 second "quick peek" instead of full duration).

Sometimes the crew just does a fast check — radar on for a few seconds, glance at the scope, radar off. Not enough time for a quality track, but enough to see if anything's out there.

Value Effect
0% All sweeps run full duration. Predictable timing.
20% Default — one in five sweeps is a quick peek.
40-50% Highly erratic — half the sweeps are just quick flashes. Hard to get a HARM lock in time.

Cockpit feel: Intermittent very short RWR spikes mixed with normal-length ones. Makes HARM timing frustrating — you start to lock, the spike vanishes.

emconThreatScale

Default: 0.5 — Multiplier on silent phase duration when the last sweep saw a contact.

After a sweep detects something, the crew is anxious and comes back sooner. The silent phase min/max are both multiplied by this value.

Value Effect
0.25 Very anxious — silent phase drops to 1/4 normal. Rapid cycling when threats are present.
0.5 Default — silent phase halved. 30-120s becomes 15-60s.
1.0 No threat memory. Silent phase is always the same regardless of what was seen.

Cockpit feel: If you fly through a SAM's sweep, subsequent sweeps come faster — the crew is looking for you. If you leave the area, sweeps eventually slow back to normal (after emconRelaxedScale kicks in).

emconRelaxedScale

Default: 1.5 — Multiplier on silent phase duration after 3+ consecutive empty sweeps.

The crew hasn't seen anything in a while. They relax, take longer breaks. Silent phase min/max are both multiplied by this value.

Value Effect
1.0 No relaxation. Constant vigilance regardless of contact history.
1.5 Default — 50% longer silent phases after 3 empty sweeps. 30-120s becomes 45-180s.
2.0-3.0 Lazy crews — double or triple the silence after no contacts. Very long gaps between sweeps.

Cockpit feel: If you've been avoiding a sector, those SAMs gradually sweep less often. But the moment one sweep catches you, emconThreatScale kicks in and the pace ramps back up.

emconSpookEnabled / emconSpookDuration

Default: false / 120s — When a nearby SAM (within 30 NM) is destroyed, surviving EMCON SAMs extend their silent phase.

The crew hears the explosion or gets the radio call — their neighbor just got hit. They stay dark longer out of self-preservation.

Config Effect
Disabled (default) SAM deaths don't affect neighboring EMCON timing.
Enabled, 120s After a nearby kill, silent phase extends to 120s for one cycle.
Enabled, 300s Five minutes of radio silence after a neighbor dies. Very cautious crews.

Cockpit feel: You kill an SA-6, and the SA-10 next door goes quiet for an unusually long time. Rewards systematic SEAD — each kill makes the survivors more scared.


HARM Reaction: Crew Behavior

These control what happens when an anti-radiation missile is detected targeting a SAM (TOO/SP mode — the HARM has a specific target lock).

harmReactionDelayMin / harmReactionDelayMax

Default: 6-9s — Full crew pipeline from HARM detection through classification to executing a response.

Models the complete timeline: tracking radar detects the fast-closing contact (2-4s), operators classify it as an ARM (2-3s), then the crew decides and executes (2-3s). During this entire delay the SAM continues emitting normally. The HARM is getting closer.

The crew reacts to the first HARM they detect. Subsequent HARMs arriving during the reaction delay increment the multi-HARM saturation counter but do not restart the timer — the crew is already processing.

Values Effect
4-6s Veteran crews — fast classification, drilled procedures.
6-9s Default — realistic detection + classification + action pipeline.
10-15s Green crews — slow to classify, hesitant to act. HARM gets extended guidance time.

Cockpit feel: You fire a HARM and the RWR spike persists for 6-9 seconds before the SAM reacts. A well-timed shot from close range can arrive before the crew goes dark. From standoff ranges, the crew has more time to react.

harmCooldownMin / harmCooldownMax

Default: 45-90s — How long a SAM stays dark after executing GO_DARK.

After dodging a HARM, the SAM hides for this duration. During cooldown, the EW poll cannot push the SAM back to ALERT — even if aircraft are overhead.

Values Effect
20-40s Short cooldown — SAM pops back up quickly. HARM forces a brief gap, not a window.
45-90s Default — realistic. Enough time for a strike package to exploit the gap.
90-180s Extended hiding — SAM is offline for minutes. One HARM creates a long window.

Cockpit feel: This is the exploitation window for your strike. Fire HARM, SAM goes dark, you have harmCooldownMin to harmCooldownMax seconds to ingress, drop ordnance, and egress before the SAM comes back online.

harmStayHotDuration

Default: 30s — How long a self-protect SAM (SA-10, SA-11, PATRIOT) stays emitting to engage the HARM.

Self-protect SAMs don't run — they try to shoot the HARM down. This is how long the engagement window lasts. DCS AI decides whether to actually fire at the HARM.

Value Effect
15s Short window — SA-10 gets one or two shots at the HARM before resuming normal ops.
30s Default — covers realistic ARM flight time from standoff ranges.
60s Extended engagement — SA-10 has a long window to attempt intercept. Realistic for a Patriot battery.

Cockpit feel: You fire a HARM at an SA-10 and the spike doesn't go away. Instead, you might see a SAM launch against your HARM. After the window expires, normal behavior resumes.

harmLastDitchMin / harmLastDitchMax

Default: 8-12s — How long the parent SAM stays hot while its Point Defense tries to engage the HARM.

For SAMs without self-protect but with a PD escort (e.g., SA-2 guarded by an SA-15): the PD is forced to ALERT immediately, and the parent stays emitting for this window. After it expires, the parent goes dark.

Values Effect
4-6s Quick handoff — PD gets a brief shot, parent goes dark fast.
8-12s Default — enough time for SA-15/TOR to detect and engage the HARM.
12-20s Extended defense — PD has a long window. Parent is exposed longer.

Cockpit feel: You fire at the SA-2 and a second system lights up on RWR (the SA-15). The original spike persists for 8-12 seconds before vanishing, but the PD stays active.

harmPanicPct

Default: 15% — Chance a self-protect SAM crew panics and goes dark despite being capable of engaging the HARM.

Not every SA-10 crew is brave. Even if the system can theoretically shoot a HARM, sometimes the operator flinches and hits the kill switch.

Value Effect
0% Self-protect crews never panic. SA-10 always engages.
15% Default — roughly 1 in 7 SA-10 engagements, the crew bails.
30-50% Nervous crews — SA-10s go dark about half the time despite capability.

Cockpit feel: Most times you shoot at an SA-10, it stays hot. But occasionally the spike vanishes — the crew panicked. Unpredictable, which makes SEAD planning harder.

harmMultiThresholdMin / harmMultiThresholdMax

Default: 4-8 HARMs — HARM saturation attack threshold, randomized per SAM at mission start.

Each SAM crew rolls a personality — some crack at 4 HARMs, the bravest hold until 8. If this many HARMs arrive within harmMultiWindow (default 15s), the crew goes dark regardless of capability.

SP + PD exception: If a SAM is both selfProtect AND has live PD escorts, it fights through saturation (STAY_HOT). The crew has their own engagement capability plus dedicated point defense. Kill the PDs first, then saturate.

Values Effect
4-8 / 15s Default — crew personality varies. 2-3 HARMs always handled normally. 4+ starts to overwhelm the jumpiest crews.
2-4 / 15s Nervous IADS — small salvos trigger saturation.
6-10 / 15s Hardened crews — need a full package to overwhelm.

Cockpit feel: A two-ship each firing one HARM doesn't force saturation — the SA-10 crew handles it. But a coordinated 4+ HARM barrage starts breaking through, and at 8 even the bravest crew bails. SA-10 sites with SA-15 escorts are genuinely hard to suppress — you need to kill the PDs first.

harmMultiWindow

Default: 15s — Time window for counting multi-HARM saturation events. Only HARMs arriving within this window of each other count toward the threshold.

harmBraveryPct

Default: 5% — Chance any SAM crew decides to fight back against a HARM regardless of system capability.

The "nat 20" roll. Before the normal selfProtect/PD/GO_DARK decision tree, every crew gets a chance to STAY_HOT. If the roll hits, the SAM stays ALERT and engages — crew is rolling the dice. Multi-HARM saturation still overrides (that check comes first).

Value Effect
0% Only selfProtect systems ever stay hot. SA-2 always goes dark.
5% Default — roughly 1 in 20 non-selfProtect SAMs fights back. Rare but memorable.
15-20% Courageous crews — significant chance any SAM engages the HARM. Very unpredictable SEAD.

Cockpit feel: You fire a HARM at an SA-6 expecting it to go dark. Usually it does. But one time in twenty, the spike stays. The crew decided today's the day. F10 marker shows DEFIANT (crew fighting back!).

harmExtendInterval

Default: 15s — Seconds between weapon-alive checks during cooldown.

After a SAM goes dark, AEGIS periodically checks if the HARM that caused the reaction is still in flight (via weapon:isExist()). If it is, the cooldown extends by another interval. This prevents the SAM from popping up right into a slow-arriving HARM.

Usually leave this alone. Only matters for very long-range HARM shots (60+ NM) where the weapon may take 90-120+ seconds to arrive.

harmMaxCooldown

Default: 180s — Hard ceiling on total HARM reaction duration.

Safety net. No matter how many times the weapon-alive check extends the cooldown, the SAM will always resume within this many seconds. Prevents a DCS bug from keeping a weapon object alive forever and locking a SAM in permanent dark.

Usually leave this alone unless you're seeing SAMs stuck in HARM dodge state.

harmDetectionRange

Default: 40 NM — Maximum range at which a SAM's tracking radar can detect an inbound ARM. Set to 0 for unlimited (legacy behavior).

A SAM's tracking radar has finite detection range against a small RCS target like an AGM-88 (~0.1 m²). A HARM launched at 120 NM is invisible until it closes to detection range. At that point, the crew reaction delay begins.

For HARMs launched inside detection range, reaction begins immediately. For HARMs launched beyond detection range, the delay is computed from the excess distance at typical AGM-88 speed (~680 m/s). No polling — single computation at launch time.

Value Effect
40 NM Default — realistic tracking radar detection range against ARM RCS.
60 NM Extended detection — models modern digital radar. Standoff shots less effective.
20 NM Short detection — crew only sees the HARM at close range. Standoff HARMs arrive with minimal warning.
0 Unlimited — legacy behavior. Instant detection regardless of range.

Cockpit feel: A standoff HARM from 80 NM gives the SAM no warning during the first ~50 seconds of flight. The crew only starts reacting when the HARM crosses 40 NM. A close-range shot from 20 NM triggers immediate detection.


PB HARM Network Warning

Pre-briefed HARMs (no target lock — fired at coordinates) normally give no warning. But if the sector has a live EW, the network can detect the HARM in flight, project its trajectory, and warn SAMs in the path.

pbHarmCheckDelay

Default: 2s — Seconds after a PB HARM launch to wait before checking trajectory.

Weapon velocity data isn't available at launch time ({0,0,0}). It populates within ~0.5 seconds. The 2-second delay ensures stable velocity data for trajectory projection.

Value Effect
1s Earlier check — velocity is available but may not be fully stable. Slightly less accurate projection.
2s Default — reliable velocity data. Tested and validated.
5s Late check — more accurate trajectory but less warning time for the SAM.

Usually leave this at 2. Tested extensively — it's the sweet spot between accuracy and warning time.

pbHarmWarnRadius

Default: 5 NM — How close the projected HARM trajectory must pass to a SAM to trigger a warning.

A 2D ray is projected from the HARM's position along its velocity vector. Any SAM within this radius of the ray gets warned.

Value Effect
2-3 NM Tight — only warns SAMs the HARM is almost certainly aimed at. Fewer false warnings.
5 NM Default — good balance. Catches most threats while filtering passersby.
8-10 NM Wide — warns SAMs even if the HARM is passing nearby. More false alarms, but safer.

Cockpit feel: Wider radius means more SAMs react to each PB HARM (some going dark, PDs coming online). Tighter radius means only the directly targeted SAM reacts.

pbHarmCooldownMargin

Default: 30s — Extra seconds added to the HARM's estimated time of arrival for suppression timing.

When a dark SAM is warned about a PB HARM, its EMCON cycle is suppressed for ETA + margin. The margin ensures the SAM stays quiet even if the ETA estimate is slightly off.

Value Effect
15s Tight margin — SAM resumes shortly after projected impact. Risk of resuming too early if ETA was wrong.
30s Default — comfortable buffer.
60s Conservative — SAM stays quiet a full minute past projected impact. Longer suppression window.

PB HARM Detection

These control the realism of PB HARM detection — how quickly the EW network spots a pre-briefed HARM in flight, and the fallback own-radar detection when a SAM emits while a HARM is inbound.

pbHarmInboundMargin

Default: 30s — Extra seconds added to HARM ETA for the harmInbound flag expiry.

When a PB HARM is detected in flight, every SAM in the trajectory gets a harmInbound flag set to ETA + margin. If the SAM emits while this flag is active (from any cause — EW feed, EMCON sweep, weasel bait), the SAM detects the HARM on its own radar and enters the HARM reaction tree.

Value Effect
15s Tight — flag expires soon after projected impact. SAM must emit near the impact window to trigger.
30s Default — comfortable buffer for ETA estimation error and HARM deceleration.
60s Conservative — long window. SAMs that emit well after projected impact still react.

pbHarmEwReactionMin / pbHarmEwReactionMax

Default: 3-5s — Crew reaction time after receiving an EW network warning about a PB HARM.

Shorter than the TOO/SP reaction delay (6-9s) because the warning arrives pre-classified from the EW network — the crew doesn't need to classify the contact themselves.

pbHarmDetThreshold

Default: 3.0 — Cumulative detection score the EW must accumulate before issuing a warning.

Each EW radar sweep contributes a score based on range from the HARM to the EW. When the cumulative score reaches this threshold, the EW has a confident track. Higher values = slower detection.

pbHarmSweepPeriod

Default: 6s — Seconds per EW radar sweep (assumes 10 RPM).

pbHarmDetFloor

Default: 12s — Minimum detection delay regardless of score (two sweeps minimum for a track file).

Score Table

The score-per-sweep values are in PB_HARM_SCORE_TABLE. Key ranges:

HARM-to-EW Range Score/sweep Sweeps to detect Delay
0-10 NM 1.5 2 12s
15-20 NM 1.0-1.2 3 18s
25-30 NM 0.7-0.8 4-5 24-30s
35-40 NM 0.3-0.5 6-10 36-60s
45-50 NM 0.15-0.2 15-20 90-120s
55-65 NM 0.05-0.1 30-60 3-6 min
70+ NM 0.01 300 effectively never

Multi-EW example: Two EWs at 25 NM (score 0.8) and 35 NM (score 0.5) → combined 1.3/sweep → 3 sweeps → 18s delay, vs. 24s with the closer EW alone.

Physics: HARM RCS is ~0.1 m². Radar range equation scales with fourth root of RCS — an EW that detects a 10 m² fighter at 150 NM can theoretically detect a HARM at ~47 NM. Beyond that, detection drops off fast.


Electronic Attack (EA)

eaEnabled

Default: true — Master toggle for EA jammer detection and effects. Set false to disable all jamming mechanics while keeping the IADS operational.

eaDebugLabels

Default: false — When true, emitter labels on the EA GUI show the SAM's full group name instead of the NATO radar reporting name. Useful for debugging ESM identification.

eaEmitterMemory

Default: 60s — How long a stale emitter (radar went silent) persists in the EA pilot's emitter list. Set to 0 to disable stale emitter retention — emitters disappear immediately when they stop radiating.

Value Effect
0 No memory — emitters vanish instantly when radar shuts down
30s Short memory — brief window to assign pods before emitter drops off
60s Default — one minute of stale emitter display with last-known bearing
120s Long memory — emitters persist for 2 minutes after going silent

jammerBaseline

All EA physics parameters are tunable via jammerBaseline = { ... } table merge in AEGIS:New(). Partial overrides are supported — only specify fields you want to change:

local iads = AEGIS:New({
    jammerBaseline = {
        effectRange = 80,          -- default 60 NM
        burnThroughRatio = 0.40,   -- default 0.35
        samTrackingBias = 1.8,     -- default 1.5
    }
})
Key Default Description
effectRange 60 NM: hard cap on omni jam range. Nothing beyond this is affected.
burnThroughRatio 0.35 Baseline burn-through distance as fraction of target's reference range (WEZ or detection range).
burnExponent 0.5 Distance falloff exponent (0.5 = square root). Higher = sharper falloff at range.
omniHalfAngle 90 Degrees: OMNI mode beam half-angle. Gain derived via _BeamGain().
wideHalfAngle 35 Degrees: WIDE mode cone pod half-angle. Narrower = more power.
dirHalfAngle 5 Degrees: directional beam half-angle. Tight beam, high gain.
directionalRangeMult 1.5 Directional pod reach multiplier (effectRange × this = directional range).
omniPieHalfWidth 0.524 Radians (±30°): EW contact filtering pie width for omni jamming.
directionalPieHalfWidth 1.047 Radians (±60°): EW contact filtering pie width for directional jamming.
ewScanPenalty 0.5 EW search radar resistance factor. Lower = EW is easier to jam.
samTrackingBias 1.5 SAM tracking radar focus advantage. Higher = SAM harder to jam (burn-through extends).

v0.8.4-beta Changes

ewScanPenalty is removed, replaced by ewBeta = 1.8 (EW layer burn-through coefficient). samTrackingBias default changes from 1.5 to 1.0 — per-system resistance is now set via trackingBias in SYSTEM_DB. burnThroughRatio is now SAM-layer only (EW layer uses the new ewBeta formula).

Tuning tips:

  • Weaker EA: Increase samTrackingBias and burnThroughRatio. SAMs burn through at longer range.
  • Stronger EA: Increase effectRange, decrease burnThroughRatio. Jammer covers more area with deeper suppression.
  • More directional contrast: Increase directionalRangeMult and widen the gap between omniPieHalfWidth and directionalPieHalfWidth.

EA Jammed EMCON

When an EA jammer detects an emitting SAM, the crew recognizes the jamming and shuts down. They then cycle intermittently with different timing than normal EMCON — shorter on-cycles (brief peeks) and longer off-cycles (hiding from the jammer).

Jammed EMCON timing is differentiated by SAM capability. HOJ-capable SAMs (SA-10, SA-11, SA-17, SA-20, SA-21, SA-23, PATRIOT) peek aggressively — they're trying to break through the jamming. Standard SAMs peek cautiously — they know they can't fight the jammer and just want to survive.

jamDetectionDelayMin / jamDetectionDelayMax

Default: 1-3s — Jammer ESM response time. This is the burn-through window.

After the SAM emits during a jammed EMCON on-cycle, the jammer needs this time to detect the emission and respond. During this window, the SAM's radar is unjammed — any target inside burn-through range is engageable.

Values Effect
0-1s Fast jammer — almost no burn-through window. Very effective EA.
1-3s Default — brief but meaningful burn-through opportunity.
3-5s Slow jammer — longer burn-through window, closer targets more likely to be engaged.

HOJ-Capable SAM Timing

These SAMs peek longer and more frequently, actively seeking to break through jamming via Home-on-Jam rolls.

jamEmconOnMinHOJ / jamEmconOnMaxHOJ

Default: 12-25s — Duration of on-cycles (radar on) for HOJ-capable SAMs.

Longer than standard SAMs because they're trying to build a passive track on the jammer. Each peek is a HOJ roll opportunity.

jamEmconOffMinHOJ / jamEmconOffMaxHOJ

Default: 20-45s — Duration of off-cycles (radar off) for HOJ-capable SAMs.

Shorter than standard SAMs — aggressive crews don't hide as long between peeks.

Standard SAM Timing

These SAMs know they can't fight the jammer. Brief, cautious peeks with long hiding periods.

jamEmconOnMinStd / jamEmconOnMaxStd

Default: 5-10s — Duration of on-cycles (radar on) for standard SAMs.

Very brief — just enough to glance at the scope before shutting down again.

jamEmconOffMinStd / jamEmconOffMaxStd

Default: 60-150s — Duration of off-cycles (radar off) for standard SAMs.

Long hiding periods. The crew knows the jammer is watching and doesn't want to give it a fix.

Timing Comparison

Parameter HOJ SAMs Standard SAMs
On-cycle (peek) 12-25s 5-10s
Off-cycle (hide) 20-45s 60-150s
Behavior Aggressive — seeking HOJ lock Cautious — survival mode

Cockpit feel: A jammed HOJ-capable SAM (SA-10, SA-20) produces moderately spaced RWR spikes — the crew is actively hunting the jammer. A jammed standard SAM (SA-2, SA-6) produces very brief, widely-spaced spikes — just trying to stay alive. Kill the jammer and both return to normal operations on the next poll cycle.


Home-on-Jam

Modern SAMs with passive track capability (homeOnJam = true in SYSTEM_DB) can attempt to "see through" jamming. Each jammed EMCON peek, if a jammer is within the SAM's activation range and the HOJ cooldown has expired, the crew rolls to break through:

  • Base probability: 7% per peek, escalating +7% per consecutive peek (peek #1 = 7%, #2 = 14%, #3 = 21%, ...).
  • On success: Jam suppression suspended for 75-120s. SAM goes weapons-free — DCS AI handles target selection.
  • Cooldown: 60s after the immunity window expires before re-roll eligible.
  • Peek count resets when jammed EMCON starts or stops (fresh engagement = fresh count).

hojEnabled

Default: true — Master toggle for HOJ rolls. Set to false to disable HOJ entirely while keeping differentiated EMCON timing active.

hojBasePct

Default: 0.07 — Base probability per peek (7%). Each consecutive peek adds another hojBasePct to the chance.

Value Effect
0.05 Slower escalation — jammer gets more peeks before risk grows
0.07 Default — ~50% cumulative chance by peek #4
0.10 Aggressive — jammer is at serious risk after 2-3 peeks

hojWindowMin / hojWindowMax

Default: 75-120s — Duration of the jam immunity window when HOJ triggers.

During this window, _IsJammed() returns false for this SAM regardless of jammer presence. The SAM stays ALERT and weapons-free.

hojCooldown

Default: 60s — Time after HOJ window expires before the SAM can roll again. Prevents immediate re-trigger.

Cockpit feel: A modern SAM site that you're jamming will occasionally "wake up" and go weapons-free for 75-120 seconds. The closer you orbit, the more often it happens. The tactical question for the EA pilot: is the suppression worth the risk, or should you stand off farther and accept weaker jamming?


EW Pie Narrowing

ewPieRefDist

Default: 45 NM — Distance inside which the EW contact masking pie is at full width. Beyond this range, the pie shrinks linearly: effectivePie = basePie × min(1.0, 45/dist).

Value Effect
30 NM Aggressive narrowing — standoff jamming less effective
45 NM Default — full pie to medium range, gradual falloff beyond
60 NM Generous — standoff jamming more effective

Cockpit feel: An EA at 90 NM masks roughly half the arc of one at 30 NM.


ESM Range Reveal

Range estimates build over time via non-deterministic per-cycle rolls. NONE → LOW (±20 NM) → MED (±10 NM) → HIGH (~5 NM). Closer emitters resolve faster.

esmRevealChance

Default: 0.10 — Base probability (10%) per scan cycle to advance range confidence.

esmRevealRefDist

Default: 45 NM — Full reveal chance inside this distance, scales down linearly beyond.

esmDecayInterval

Default: 150s — Seconds per confidence level lost while emitter is stale. HIGH→MED after 150s, MED→LOW after 300s, LOW→NONE after 450s.


Mobile SAM Position Polling

These control how often AEGIS refreshes the position of SAMs with the MOB suffix. Only mobile SAMs are polled — static SAMs have zero overhead.

MOB_POLL_IDLE

Default: 60s — Seconds between position updates for mobile SAMs in DARK state with no contacts in their sector.

Value Effect
30s Faster tracking — better accuracy during long convoy moves
60s Default — one getPoint() call per minute per idle mobile SAM
120s Lazy — saves API calls in dense mobile SAM missions, position may lag

MOB_POLL_ACTIVE

Default: 20s — Seconds between position updates for mobile SAMs in AWARE or higher states.

Value Effect
10s Aggressive — near-realtime position for hot mobile SAMs
20s Default — good balance for shoot-and-scoot and convoy escort
30s Relaxed — acceptable if mobile SAMs move slowly

MOB_MOVE_THRESHOLD

Default: 50m — Minimum distance (meters) a mobile SAM must move before triggering a debug log entry. Only affects logging — position is always updated regardless.

Cockpit feel: Mobile SAMs with waypoints will have their F10 markers track movement. A SAM that fires, goes dark, and relocates will have its new position reflected in all calculations once the next poll fires.


Debug

debug

Default: false — Enables verbose logging and F10 map markers.

When true: - Prints full network topology at startup (including SAM DCS coordinates @(x, z) for cross-mission comparison) - F10 map markers show SAM state, timers, HARM reactions - Screen messages for state transitions and HARM events - Activation range diagnostics: logs nearest contact distance and effective actRange when a SAM has contacts outside its activation range (e.g., SA6-WEST-3: nearest contact 27.3 NM (actRange 22 NM)) - dcs.log entries with [AEGIS] (normal) and [AEGIS!] (warnings)

Always set true during mission development. Set false for published missions to avoid log spam and screen clutter.

SAM Coordinates (v0.8.0+)

SAM positions (@(x, z)) in the topology dump are always logged regardless of debug mode. This enables diffing SAM positions between mission files without loading DCS.


Tuning Presets

These are starting points. Mix and match to taste.

"Veteran Air Defense Regiment"

Experienced crews, fast reactions, aggressive engagement. Hard SEAD environment.

AEGIS:New("red", {
  ewPollInterval       = 7,
  alertTimeout         = 90,
  emconOnMin           = 20,
  emconOnMax           = 60,
  emconThreatScale     = 0.3,
  emconDoubleSweepPct  = 25,
  harmReactionDelayMin = 5,
  harmReactionDelayMax = 8,
  harmPanicPct         = 5,
  harmMultiThreshold   = 3,
})

"Conscript Garrison"

Green crews, slow reactions, sloppy EMCON. Easier SEAD for newer players.

AEGIS:New("red", {
  ewPollInterval       = 15,
  alertTimeout         = 45,
  emconOnMin           = 60,
  emconOnMax           = 180,
  emconOffMin          = 30,
  emconOffMax          = 90,
  emconThreatScale     = 0.8,
  emconRelaxedScale    = 2.0,
  harmReactionDelayMin = 10,
  harmReactionDelayMax = 15,
  harmPanicPct         = 35,
  harmMultiThreshold   = 2,
})

"Ambush Network"

SAMs stay dark until targets are deep inside the engagement zone. Deadly but brittle once found.

AEGIS:New("red", {
  defaultZone          = "NEZ",
  alertTimeout         = 120,
  emconOnMin           = 60,
  emconOnMax           = 240,
  emconOffMin          = 10,
  emconOffMax          = 20,
  emconEarlyTermPct    = 40,
  emconSpookEnabled    = true,
  emconSpookDuration   = 180,
})

"Paranoid Defenders"

Long alert times, frequent sweeps, wide PB HARM warning radius. Hard to sneak through.

AEGIS:New("red", {
  alertTimeout         = 180,
  emconOnMin           = 15,
  emconOnMax           = 45,
  emconDoubleSweepPct  = 30,
  emconRelaxedScale    = 1.0,
  harmCooldownMin      = 30,
  harmCooldownMax      = 60,
  pbHarmWarnRadius     = 8,
})