SilenceAI - Enhanced Combat

by Silence_AUS

1.0.68

- New defaults: AI spawn/despawn rings 1500/1800 m, 16 commanded groups per faction, log level 2. Applied once to older configs and logged.
- Reinforcements are only raised at bases within reach of a player, so they are awake and fight instead of going dormant at once.
- Fixed: dormant reinforcement groups were counted as wiped out, which tripped the loss brake with nothing dead and caused repeated raising.
- Covering a casualty: a man with his own enemy within 60 m now fights him instead of suppressing the group's threat point.
- Config migration: servers whose config was written by 0.65 now get the gunshot listener settings switched on (AI react to enemy AI gunfire).
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 07:47:47 GMT
Last Modified
Sat, 10 Oct 2026 07:48:05 GMT

1.0.67

- Defenders who hear enemy fire now move into cover facing the gunfire, inside the ground they are holding, instead of standing in the open (at most once every 45 s per group).
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 04:48:25 GMT
Last Modified
Sat, 10 Oct 2026 04:48:39 GMT

1.0.66

- New Game Master right-click orders on AI soldiers and groups: Weapons safe / free, Stop moving / move again, and Hold position / release. Each toggles, and works on a single soldier, a whole group, or a selection.

- AI now react to enemy gunfire from other AI, not just players: groups that hear enemy fire move to investigate it (friendly fire is ignored, and groups already fighting are never pulled away).
- Fixed: groups never reacted to enemy fire at all, because SilenceAI deferred to the base game's per-soldier reaction. 
- Defenders on a Defend waypoint now stand to when they hear enemy fire: heightened alert in place, and a radio report to their commander.

- Commanders no longer concede a base to fewer than 8 enemy, and count friendly troops physically at the base when deciding whether to hold it.
- Key terrain only (new, on): standing garrisons go to headquarters, Game Master objectives and priority objectives; other ground is garrisoned only while threatened, so large Conflict maps no longer tie up every group in garrisons.
- Fixed: the second group of a double reinforcement wave was not counted toward the wave limit.
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 04:40:38 GMT
Last Modified
Sat, 10 Oct 2026 04:40:57 GMT

1.0.65

COMMANDER
- Fixed: commanders never launched attacks. A commander with every group garrisoned waited all session without asking for reinforcements.
- Doctrine now follows Soviet/Russian practice for FIA and USSR: higher tempo and aggression, 3:1 concentration before attacking, up to 6 groups per attack, quicker staging (attack from the march), stubborn defence.
- Minimum defence: commanders keep 40 men (about three squads) across garrisons and reserve, and only attack with strength above that. Bases keep their counter-attack force.
- Hold or concede: a threatened base is reinforced only while it can still be defended at better than 1:4; beyond that it is conceded for 15 minutes instead of being fed more troops.
- Strategic counter-attack: within 10 minutes of losing a base, a commander may raise up to 4 groups as one assault force to retake it before the enemy consolidates (if 60 or fewer enemy hold it). Once per 20 minutes per faction.
- Second echelon: in attacks with 3 or more assault groups, one waits at the staging area and takes over if the first wave stalls.
- Attack limit: at most 3 attacks on the same objective per 30 minutes.

REINFORCEMENTS
- On by default. Raised at the safe friendly base closest to where they are needed; bases that are engaged, within 500 m of an enemy player, or in an enemy player's line of sight (up to 1,200 m) are skipped.
- Only for factions that have had AI on the map this session and still have AI or hold objectives. Never for factions with players on them (toggle).
- Randomised timing (2 minutes, plus or minus 40%), occasional two-group waves, and varied spawn bases.
- Stop conditions: up to 6 raised groups alive per faction, 12 commanded groups, 20 waves per session, and a 15 minute pause after 3 raised groups are wiped out within 10 minutes.
- Armour waves (20%): an empty APC or armed vehicle is placed and a group of the same side mounts and drives it. Vehicles come from the faction's own catalogue plus borrowed ones (FIA can use USSR and US vehicles), including Game Master only entries. Unused vehicles are cleaned up after 5 minutes.

AMMUNITION
- AI spawn topped up to 6 spare magazines.
- AI low on ammunition look for bodies first, then take a magazine from a squad mate, then have a 75% chance of a fresh magazine.
- Men walking to a body for ammunition have 45 s and a 4 m reach, and take the ammo if they end up close.

GAME MASTER
- Settings moved to their own tabs: SAI Skills and Tactics, SAI Commander and Support, SAI Systems, plus SAI Unit for groups and characters.
- New options for minimum defence, give-up odds, strategic counter-attacks, second echelon, armour chance, raised groups per faction, reinforcing with players, starting magazines, squad sharing and resupply chance.
- Commander objectives placed with "SAI: Commander objective here" now show as an icon only Game Masters can see. Move it to move the objective, delete it to remove it. Scenario makers can place the objective prefab in the World Editor.

OTHER
- One-time config migration applies the new reinforcement, ammunition and doctrine values to existing servers and logs every value it changed.
- Startup config line now reports the new commander and ammunition settings.
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 04:12:39 GMT
Last Modified
Sat, 10 Oct 2026 04:13:12 GMT

1.0.64

- AI Commander now spawns Silence Groups FIA squads (Section, Hunter Team, Hunter AT, Hunter AA) instead of the base game FIA groups when Silence Groups is loaded.
- Existing configs: the FIA reinforcement list is upgraded automatically only if it is still the untouched base game default. Customised lists are left alone.
- Without Silence Groups loaded, the Commander falls back to the base game FIA groups as before.
- Game Master settings menu reordered and grouped into clusters (Difficulty and skill, Perception, Search, Defence/garrison/ambush, Movement and formations, Combat tactics, Support roles, Vehicles and air, Routing, Commander, Lifecycle/voice/admin). No settings were added, removed or changed.
- Fixed script compile errors introduced during development of this update.
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 02:13:33 GMT
Last Modified
Sat, 10 Oct 2026 02:13:53 GMT

1.0.63

Fixed server failing to start (“Can’t compile Game script module”) on large mod packs: static values are now set when the game starts instead of when scripts load. No change to AI behaviour.
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 01:25:43 GMT
Last Modified
Sat, 10 Oct 2026 01:26:05 GMT

1.0.62

Fixed server failing to start (“Can’t compile Game script module”) with large mod packs: moved 127 text constants inline and removed unneeded start-up values. No change to AI behaviour.
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 00:51:18 GMT
Last Modified
Sat, 10 Oct 2026 00:51:38 GMT

1.0.61

Fixed server failing to start (“Can’t compile Game script module”) when run alongside large mod packs. Removed 218 unnecessary static start-up values. No change to AI behaviour.
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 00:33:14 GMT
Last Modified
Sat, 10 Oct 2026 00:33:39 GMT

1.0.60

SILENCEAI v0.60: COMMAND AND FIELD CRAFT

This is the biggest update since v0.38 and it covers everything built since then. Before it, each AI group fought its own private battle and each soldier mostly stood still under fire. Now groups coordinate, run proper drills, and every soldier reacts physically to what is happening around him.

Out of the box SilenceAI is now a full overhaul: the Commander is on, artillery support is on, and the AI start at difficulty 4 (Expert) on the game's own 0 to 5 skill scale. Every system still has its own switch in the config and most can be toggled live in Game Master, so if something does not suit your server, turn that one thing off.


ONE DIFFICULTY LEVEL, ON THE GAME'S OWN SCALE

- A single difficulty level on the base game's own skill scale replaces picking between presets: 0 Noob, 1 Rookie, 2 Regular, 3 Veteran, 4 Expert, 5 Cylon. Half steps sit between two tiers. The default is 4, Expert.
- It moves aim, skill tier, perception under fire, hearing range, aggression and how easy it is to escape a search, all together.
- New Game Master slider "SilenceAI - Difficulty" changes it live and saves it to the config.
- 5 Cylon means no aim scatter at all and is meant to be unfair. The named presets are still there, plus a matching new Impossible preset.


GROUPS THAT WORK TOGETHER

- Defenders hold their ground. A group on a Defend waypoint no longer wanders off to investigate gunshots, contact reports or lost contacts.
- Radio net. Groups shout contacts to anyone within 150 m, and pass them up to 600 m when both groups have a radio carrier alive. Lose the radio operator and that group is out of the net beyond shouting range.
- Mutual support. A group that hears a friend is in contact moves up beside and slightly behind it, on its own side, instead of walking into the same kill zone. At most two helpers per engaged group.
- Point man and flank observer. Travelling groups of four or more push a man about 70 m ahead; groups of six or more also put one out to a flank. What they see is the group's contact, and routes avoid places where scouts were hit.
- Fire and manoeuvre between groups. When two groups face the same enemy, the larger one fixes with suppressive fire (machine gunners first) while the smaller one flanks.
- Fire distribution. When a group can see two enemies and everyone is shooting at one, some men switch to the other.


TACTICS AND DRILLS

- Battle drills. React to ambush near (the kill zone assaults through while the rest suppress), react to ambush far (the kill zone suppresses while the rest flank, avoiding known danger), and a two-element break contact with covering fire.
- Building clearing. A support element isolates the building, the assault team stacks on the near face, the first room can be fragged, and pairs clear through the interior. Support fire lifts on entry and the clearance aborts on heavy losses.
- Group morale. Casualties, losing the leader, being pinned, fire from a wide arc and being outnumbered wear a group down; walls and nearby friends hold it up. Shaken groups stop advancing, breaking groups pull back under cover, broken groups rout. Garrisons hold until broken.
- Cordon and search. Lose a player in a town and nearby squads block the ways out, starting with the direction he was heading, then the buildings are searched one at a time.
- Cut-off and pursuit. Pull back from a fight and a free squad that can get there first runs to block your escape, while a steady squad that outnumbers you keeps the pressure on for a short distance under machine gun cover.
- Infantry lead armour into towns. Armed vehicles stop at the edge of a built-up area and follow once infantry have cleared the next bound. Trucks unload before towns.
- Casualty cover. A man down in a firefight gets covering fire, smoke, and a squad that stays with him while the medic works.
- Recon by fire. Squads moving through hostile ground put a short burst into a building or remembered ambush spot before passing it. Never on hold fire, never near anyone not hostile, and strictly limited.
- Reverse slopes. Defensive positions are scored for being hidden from long range while still seeing close in.


GARRISONS, SPECIALISTS AND SENSES

- Garrisons use windows. Buildings are mapped into window, door and roof firing positions. Garrisons take the ones facing the threat, post a rear door guard, and change windows when spotted.
- Specialist teams. Machine gunners take flanking positions and move with an assistant, anti-tank men move to an angle on armour, and a rifleman picks up a dead specialist's weapon.
- Hearing. AI hear player footsteps (by stance and speed), doors and engines, with a realistic error in bearing. Close or repeated noise brings a careful search; defenders only go on alert.
- Fair aim. AI lose most of their settled aim when you move out of sight, and lose it while they move.
- Danger map. Each side remembers where it was ambushed, broken or took losses, and plans routes and attacks around those places.


THE SOLDIER

- Near misses make a man get lower, hide behind his cover, or dash to cover a few metres to the side. The closer the round, the more likely he reacts.
- A burst of fire pins him: he goes down and stays down for a few seconds. Never at close range, where staying put is fatal.
- Wounds and nearby explosions move him to new cover, away from the shooter or back from the blast.
- A man pinned in the same cover for 15 to 30 seconds relocates to other cover instead of peeking from the spot you have ranged. One man per squad at a time, never toward the enemy.
- Hold times follow suppression: shorter at close range, longer in cover at range. Machine gunners, snipers and launcher men hold longer.
- About a third of bounds at range are made as a crouched run while aiming, so some men keep firing as they move.
- No bounding in the middle of a reload in the open.
- A man with no target looks where a friend is shooting.
- Bipods only deploy prone or at a fire position.
- After a fight goes quiet, a group with no waypoint walks back to where it started.
- A man low on ammunition walks to the nearest body with magazines for his weapon and takes them there, only when no enemy is close. One man per body.
- Extra ammunition for suppression (on by default): a man laying suppressive fire who runs low and has nothing to loot is sometimes handed a magazine, so a base of fire can keep going. Set it to 0 if your server relies on ammunition being scarce.
- Fight while on a forced move (off by default): men moving on a player or Game Master order stop briefly to fight an enemy they can see, then carry on.
- Skill tiers are evened out, so a change of tier is a nudge rather than a jump.


NEW IN 0.60: FIELD CRAFT

- Combat style per group. Set in Game Master: Default, CQB, Urban, Defensive or Offensive. It changes how long men hold in cover, how soon they relocate and how often they fire on the move. CQB and Urban men look for cover close by. Defensive groups never chase and are never pulled away to block for others. With no style set, garrisoned groups fight Defensive and groups clearing a building fight CQB automatically.
- Searching by what they know. A squad that saw you searches tightly around where you went. A squad that only found a body searches wide.
- Searching upper floors. If you were last seen in a building with more than one storey, the search starts on a random floor of it.
- Medics wait for cover. Under fire, a medic fights instead of running across open ground to a casualty who is not in cover, for up to 30 seconds. Heals ordered by a player or Game Master are untouched.
- Vehicles keep off infantry. Under fire, armed vehicles back away from men on foot inside 100 m instead of 60 m, limited so they never spend a fight just reversing, and they wait a little longer between moves.
- Convoys keep together. Vehicles driven by one group match speed: the lead slows for stragglers, stragglers speed up, and a stuck vehicle is left behind rather than holding everyone up.
- Artillery support is now on by default. It only fires if a friendly mortar or gun has a crew or a group looking after it, after sustained contact, a few rounds at a time, and never onto a fight the calling group is inside.
- Launchers into buildings. A squad fighting a man inside a building can have its launcher man put a rocket into it. At most once every 150 seconds and three times per squad, never with enemy vehicles seen in the last minute, never while the squad is clearing a building, never with anyone not hostile in the building.
- Wide formations under fire. In contact, groups switch to wider versions of their formation. This needs an optional prefab override that server owners add themselves; without it nothing changes.


THE COMMANDER (now on by default)

One commander per faction takes command of that faction's AI groups. It garrisons what it holds, sends quick reaction forces to threatened objectives (anti-tank teams first when armour is reported), reconnoitres objectives it knows nothing about, and runs full operations: staging, support by fire from high ground, preparatory fire, assaults from one to three directions, support fire that lifts as the assault closes, consolidation, and a covered withdrawal if the attack is called off.

It also calls fire support on settled contacts, smokes the assault, lights up the night, runs feints, keeps observation posts that fall back, plans fallback positions for defenders, and relieves worn-out garrisons. It learns which tactics failed where.

It only knows what its groups report over the radio, after a delay. Objectives come from Conflict bases, Capture and Hold areas, and Game Master context actions. A group the Game Master gives an order to is handed back for ten minutes. Optional reinforcements come from configurable prefab lists and are never spawned within sight of a player.


MORTARS AND VEHICLES

- Mortars get used. A group holding ground takes charge of a mortar within 60 m that has shells in an arsenal beside it, and answers fire missions with it. The game's own artillery behaviour walks a man to the tube when a mission comes in. Before this, a mortar with nobody already sitting in it was never fired.
- Mortar pits (off by default, needs the Commander). A side with no working mortar builds one pit at its own objective, at mortar range from the enemy, never with a player within 500 m. It uses the game's own mortar pit for that faction (mortar, sandbags and ammunition arsenal) with a two-man crew. Where supplies are on, a crate holds exactly enough for 12 shells at the faction's own price. Whatever the supplies, a pit fires 12 shells in total, then it is removed once nobody is near and a new one can go up somewhere else 10 minutes later. Shoot and scoot, so you can hunt it down.
- Spawned transport (off by default). A squad of four or more with a move over 1 km and no vehicle nearby gets one of its faction's trucks placed beside it, never with an enemy player within 400 m. Up to three per side, removed after ten minutes standing empty.
- The prefabs are listed per faction in SilenceAI_commander.json, with US, USSR and FIA filled in. Modded factions need their own entries.


OPTIONAL: OVERWATCH (off by default)

Lets players scout and snipe AI sitting on a live objective from long range. Up to 8 passive groups (3 per objective) near active objectives or Game Master tasks stay spawned and awake out to long range, without giving every group on the map long spawn distances. Groups placed to always exist are kept awake but never given despawn ranges.


GAME MASTER

Dozens of new attributes, including the difficulty slider. Per group: combat style, plus the existing perception, alertness, aggression and skill controls. Scenario-wide switches for every major system above, so you can turn features on and off live during a session.


FOR SERVER OWNERS

- The config version is now 33. An existing SilenceAI_config.json is kept and its values still win, and new settings are added with their defaults. Changed defaults are NOT applied over your old file, and the log warns about this on start. That includes the new full-overhaul defaults: on an existing file, set m_sDifficultyPreset to "DIAL", m_Commander.m_bEnabled and m_Artillery.m_bEnabled to true, or delete the file and restart to take every new default.
- Remove CRX Enfusion A.I. before using SilenceAI. Both change AI behaviour and will conflict.
- This update is large and many of these systems have not yet run together on a busy server. If AI feel too twitchy under fire, raise the soldier impact throttle or lower the impact chance. If they feel passive, do the opposite. If one system misbehaves, switch that one off rather than the whole mod.
- The self report in script.log lists what each system did, how often, and the reason anything was blocked. Please include it with any bug report.
- The Commander and artillery being on by default is the biggest change in feel. If your mission already scripts its own AI attacks, consider switching the Commander off.
- Not yet confirmed in play: whether a mortar pit's arsenal takes supplies from the crate placed beside it, how reliably a crew walks to an empty mortar, whether the game's launchers can be used against infantry (the self report shows it for each order), and how often vehicles back away in towns. Convoy matching is limited to vehicles in the same group.
Game Version
1.8.0.13
Created
Fri, 09 Oct 2026 11:55:36 GMT
Last Modified
Fri, 09 Oct 2026 11:55:44 GMT

1.0.59

What SilenceAI soldiers now do (v0.59):
Near misses: a man gets lower, hides behind his cover, or dashes sideways to new cover. The closer the round, the likelier he reacts. He ignores it if he's already in good cover facing the shooter, and never cancels a move he's already making.
Bursts: about six rounds in quick succession pin him down for 5 seconds: no moving, no peeking. This doesn't apply at close range.
Wounds and blasts: a man who is hit, or near an enemy explosion, moves to new cover away from it.
Pinned too long: after 15 to 30 seconds stuck in one cover, he sprints sideways to another, one man per squad at a time, never toward the enemy.
Hold times follow fire: under fire at close range he moves sooner, to get out of the kill zone; in cover at range he stays down longer. Machine gunners, snipers and launcher men hold longer, which the game works out and then never applies.
Moving and reloading: about a third of bounds at range are made firing on the move, and nobody starts a bound mid-reload in the open.
Friendly fire cue: a man with no target looks where a nearby friend is shooting.
Aim: the gap between the worst and best shots shrinks from 16 times to about 4, so nobody is a laser or useless, and SilenceAI's mid-fight skill changes become nudges. Snipers aim tighter.
Bipods: these only go down when the man is prone or at a fire position.
Return to position: after three quiet minutes, a squad with no waypoint walks back to where it was last left, up to 300 m.
All of it runs through the game's own combat-movement system. Men at windows, holding a position, frozen or under a Game Master order only change stance; they're never moved. There are five new Game Master switches.
Game Version
1.8.0.13
Created
Tue, 06 Oct 2026 09:09:25 GMT
Last Modified
Tue, 06 Oct 2026 09:09:34 GMT

1.0.58

(v0.58) - Military tactics


Full guide in `TACTICS_V3.md`. `CONFIG_VERSION` is 27.


- **Cordon and search** (`SAI_CordonSystem`). A contact lost in a built-up area is sealed by nearby
  squads on blocking positions, starting across his line of escape, then searched building by
  building with the clearing drill in a new search mode (no fire into empty buildings).
- **Cut-off and pursuit** (`SAI_CutoffSystem`). A withdrawing enemy is recognised from opening range
  or broken contact. A free squad that can win the race blocks his escape; the engaged squad presses
  him under machine-gun cover for a short distance.
- **Infantry leading armour** (`SAI_ArmourEscortSystem`). Armed vehicles halt at the edge of a town
  while infantry leapfrogs ahead; trucks unload before towns. The vehicle halt is measured, not assumed.
- **Casualty cover** (`SAI_CasualtyCoverSystem`). A man down in contact gets covering fire, smoke and
  a squad that stays with him.
- **Recon by fire** (`SAI_ReconByFireSystem`). Short bursts into likely ambush positions in hostile
  ground, with strict safety and ammunition limits.
- **Reverse slope** (`SAI_Terrain`, `SAI_DefencePositionSystem`). Defensive ground scoring rewards
  positions hidden from afar and seeing close in; two rear candidates added.
- **Commander defence in depth and relief in place** (`SAI_CmdDepth`). Observation posts that fall
  back, planned fallback positions for breaking defenders, and worn garrisons replaced and rested.
- **Shared pieces.** `SAI_BlockingSystem` (one hold behaviour for cordon, cut-off and escort),
  `SAI_TacticsKit`, order priorities TASK (46) and CASEVAC (47), and one tactic per group at a time,
  respected by the Commander, investigate, search and mutual support.
- **Fixes from an independent review before release:**
  - fire restrictions respected; Game Master orders never overwritten (per-man claims)
  - casualty cover not restarted for the same man
  - blocking positions released when their owner is gone, or when a higher order takes the group
  - cordon investigate refusals not recorded as searched
  - detached cordon pair handled correctly
  - armour leapfrog not delayed by a cooldown after success
  - fallback positions only for defenders and only away from the threat
  - relief timeout, and no hand-over under fire
  - groups that mount a vehicle mid-tactic released
  - observation posts not pulled away by gunshot investigates
  - stale enemy headings and loop-local values fixed
- **Nine new Game Master scenario toggles.**


## Unreleased (v0.57) - Windows, specialists, hearing, fair aim, danger map, smarter Commander


Full guide in `TACTICS_V2.md`. `CONFIG_VERSION` is 26.


**Garrisons use windows** (`SAI_BuildingSlotSystem`). Building types are mapped once per session
into window, door and roof firing slots by navmesh sampling and traces, under a per-tick budget.
Garrisons take slots facing the threat, post a rear door guard, and rotate windows when spotted.


**Specialist teams** (`SAI_SpecialistSystem`). Machine gunners take flanking positions and
relocate with an assistant; anti-tank men move to an angle on armour; a rifleman recovers a dead
specialist's weapon and confirms the equip completed before counting it.


**Hearing** (`SAI_NoiseSystem`). Player footsteps by stance and speed, doors and engines, with
bearing error. Groups go alert; close or repeated noise draws a careful search. Defenders only go
alert.


**Fair aim** (`m_ShootMove`). AI settle is mostly lost when the target relocates out of sight and
drains while the shooter moves.


**Danger map** (`SAI_DangerMap`). Per-faction memory of ambushes, breaks and casualties, used by
route planning and the Commander.


**Commander v2.** Fire support on settled contacts, assault smoke, night illumination, feints,
loss learning per objective, danger-aware staging.


Fixes from an independent review before release:


- garrison men on windows are no longer reshuffled on every reassignment
- yard and porch navmesh no longer becomes window slots (ceiling check)
- roof slots no longer scored by an arbitrary facing
- weapon recovery never takes a man off a window, and waits for the equip to complete
- noise no longer empties garrisons, ambushes or Commander-tasked groups; doors carry the player's faction
- fire support avoids objectives our operations are preparing or assaulting
- feint fire no longer spreads wider than support fire
- assault smoke goes on the flank's approach for flanking attacks
- loss learning measures each group against its own H-hour strength
- the danger map no longer counts men split away as casualties, and guards against zero radius or memory
- building-slot helpers renamed (`TraceLocal`, `RequestSlots`, `GenerateStep`, `SampleInterior`) to avoid vanilla name clashes


Eight new Game Master scenario toggles.
Game Version
1.8.0.13
Created
Tue, 06 Oct 2026 08:07:54 GMT
Last Modified
Tue, 06 Oct 2026 08:08:04 GMT

1.0.57

**Commander** (`Commander/`, OFF by default). One commander per faction takes command of that
faction's AI groups. It garrisons what it holds, sends quick reaction forces to threatened
objectives (anti-tank teams first when armour is reported), reconnoitres objectives it knows
nothing about, and runs operations: staging, support by fire from high ground, preparatory fire
from friendly batteries, synchronised assaults from one, two or three axes, support fire that
lifts as the assault closes, consolidation, and a covered break contact when an assault is called
off. Tactic choice is scored and remembers what failed where. It knows only what its groups
report over the radio, after a delay, and only from groups that can reach the net. Objectives
come from Conflict bases, Capture and Hold areas and Game Master context actions. A group a
Game Master gives an order to is handed back for ten minutes. Optional reinforcements from
configurable prefab lists in `$profile:SilenceAI_commander.json`, never spawned within sight of
an enemy player.


**Group morale** (`SAI_MoraleSystem`). One 0..100 value per group from casualties, leader loss,
pinned and suppressed share, fire from a wide arc and being outnumbered, held up by walls and
nearby friends. Shaken groups stop advancing; breaking groups break contact under cover; broken
groups rout. Garrisons hold until broken.


**Battle drills** (`SAI_DrillSystem`). React to ambush near (kill zone assaults through, the rest
suppress) and far (kill zone is support by fire, the rest flank away from known hazards; L-shaped
ambushes are never flanked), and a two-element break contact with the covering element
explicitly suppressing. Kill zone membership is decided by who is under effective fire, not list
order.


**Building clearing** (`SAI_ClearBuildingSystem`). Isolate with a support element, stack on the
near face, frag the first room when appropriate, clear in pairs through interior points snapped
to the building's navmesh, lift support fire on entry, abort on losses, mark the building cleared.


Smaller changes: flanking, bounding and investigate now respect morale, drills, clearances and
commander tasks; mutual support no longer pulls commanded groups; the artillery system gained a
fire mission entry point for the commander; the group registry can list every group; the self
report prints morale, drill, clearance and commander lines; ten new Game Master attributes.

# SilenceAI Commander, morale, battle drills and building clearing


Admin and Game Master guide for the systems added after v0.55. Everything here is new, has been checked against the game's own scripts, and has **not yet been compiled in Workbench or run on a server**. Read "Before you trust it" at the bottom first.


## What was added


| System | Files | Default | What it does |
|---|---|---|---|
| Group morale | `Systems/SAI_MoraleSystem.c` | on | Squads get shaken, pinned and break, for reasons a player can cause |
| Battle drills | `Systems/SAI_DrillSystem.c` | on | React to ambush near and far, and a covered break contact |
| Building clearing | `Systems/SAI_ClearBuildingSystem.c` | on | Isolate, stack, clear in pairs, lift support fire, abort on losses |
| Commander | `Commander/*.c` | **off** | One commander per faction runs garrisons, QRFs, recon and multi-axis assaults |
| Reinforcements | `Commander/SAI_CommanderReinforcements.c` | **off** | The commander raises new groups when it runs out of reserve |


`CONFIG_VERSION` is now 25. Every new dial is described in `SETTINGS_REFERENCE.md` under `m_Morale`, `m_Drill`, `m_ClearBuilding` and `m_Commander`.


## Turning the Commander on


Either:


- **Game Master:** open the world attributes, find the Game Settings page, and tick **SilenceAI - COMMANDER**. Mode, aggression, caution, operations at once and reinforcements sit right under it.
- **Config:** in `$profile:SilenceAI_config.json`, set `m_Commander.m_bEnabled` to `true`.


On the first start with it on, the mod writes `$profile:SilenceAI_commander.json` with the factions and reinforcement prefabs (see below). Untick it again and every group is handed straight back with its own orders, posture, combat mode and despawn mode restored.


## What a commander does


Every 10 seconds (`m_fThinkInterval`), for each faction it commands:


1. **Muster.** It takes command of that faction's AI groups. It skips player groups, aircraft crews, groups a Game Master has given waypoints to, and groups ticked **Commander: leave this group alone**. Groups already on a Defend waypoint near an objective become that objective's garrison and keep the scenario's own waypoint.
2. **Intel.** Each group that can reach the radio net reports what it has seen every 15 seconds. Reports arrive after a 5 to 20 second delay, 1.5 times longer when the group is pinned. They are clustered, merged and forgotten after 5 minutes unless refreshed. **The commander never reads enemy positions from the world.** Kill the radio operator and that squad goes quiet. Stay unseen and you are not on its map.
3. **Tasks.** It notices arrivals. Any group whose morale is breaking is pulled out of whatever it was doing.
4. **Operations.** It advances every running attack (see below).
5. **Defence.** Every objective it holds gets a garrison: one group, plus one for a headquarters, plus one when enemy are reported nearby.
6. **Threats.** When enemy are reported within 600 m of something it holds, in more strength than is holding it, the nearest free group goes as a quick reaction force. If armour was reported, a group with an anti-tank specialist goes first.
7. **Plan.** If it has free groups beyond its reserve, it picks an objective and launches an operation.
8. **Reserve.** Idle groups within 1500 m of the rear assembly area gather there. Idle groups farther out keep patrolling and stay available.
9. **Reinforce.** Only if enabled (see below).


### How an operation runs


| Phase | What happens |
|---|---|
| Recon | Only when intel on the target is thin. A team of 4 or fewer moves to a point 250 m short of the objective, holds without entering buildings, and only returns fire. What it sees feeds the next plan. |
| Staging | Each element moves to its own staging area, 350 m out by default. Support by fire takes the highest of five points on our side. Flankers go 80 degrees off the axis, on the side away from other known enemy. Nobody moves until everyone has arrived or 4 minutes pass. |
| Preparatory fire | Support by fire opens up on the nearest reported enemy on the objective. A friendly crewed mortar or gun is asked for 6 rounds if there is one. |
| Assault | H-hour: every assault element steps off together. Support keeps firing until the first assault element is within the objective radius plus 60 m, then **lifts** so it is not shooting its own men. |
| Consolidation | The strongest assault group garrisons what it took. Everyone else returns to the pool. |
| Called off | When the assault has lost 55% of its strength (`m_fAbortStrength` 0.45), or after 10 minutes, the assault elements **break contact under cover** back toward their staging area. That tactic is remembered as failed on that objective for 15 minutes, so the next attempt is different. |


### How it chooses a tactic


| Tactic | Needs | Favoured when |
|---|---|---|
| Frontal fire and movement | 1 group | High force ratio, aggressive commander |
| Flanking attack | 2 groups | The default good answer; adaptable commanders like it more |
| Pincer | 3 groups and a ratio of 2.5 or more | Clear superiority |
| Infiltration | 2 groups including a small team | Night (much more likely), close terrain |
| Attack by fire | Too weak to close, but has armour or a battery | Fix and attrit for 3 minutes, ask for reinforcements, re-plan |


It only attacks when its estimated ratio at the objective meets `m_fMinAttackRatio` (2.0), adjusted for caution, aggression and mode. If the ratio is short and it has no fire support, it **waits and asks for reinforcements** rather than feeding squads in one at a time.


## Objectives


| Source | Where from | Who holds it |
|---|---|---|
| Conflict and other military bases | `SCR_MilitaryBaseSystem` | The base's own faction, same as the game mode |
| Capture and Hold areas | `SCR_CaptureAndHoldManager` | The area's owning faction |
| Game Master points | Context action, see below | The only faction with live people inside the radius for 20 seconds |


Priorities are 3 for a headquarters, 2 for a major Capture and Hold area or a Game Master point, and 1 otherwise. Conflict relays are left out unless `m_bIncludeRelays` is on. Game Master points last for the session only.


## Game Master controls


**World attributes, Game Settings page:**


| Attribute | Effect |
|---|---|
| SilenceAI - COMMANDER | Master switch |
| Commander mode | 0 offensive, 1 balanced, 2 defensive |
| Commander aggression | Commits sooner, prefers pushing |
| Commander caution | Wants better odds, reconnoitres more (below 0.25 it never reconnoitres) |
| Commander operations at once | 1 to 4 |
| Commander reinforcements | Lets it raise groups |
| Group morale / Battle drills / Clear buildings | Switches for the three combat systems |


**Group attributes:** **SilenceAI - Commander: leave this group alone.**


**Giving a commanded group an order yourself** hands it back to you for 10 minutes (`m_fGameMasterYield`). The commander tells your waypoints from its own because Game Master waypoints are editable entities and the ones it spawns are not.


**Context actions** (right-click the ground): **Commander objective here** and **Remove commander objective.** Like the ambush action, these need registering in a context action list, because SilenceAI ships no config files. Add these two entries inside `m_Actions` in Silence_QOL_Fixes' `Configs/Editor/ActionLists/Context/TempEdit.conf`, next to the existing `SAI_SetAmbushHereContextAction` entry:


```
  SAI_CmdObjectiveHereContextAction "{5A1C0F3E9B2D4E61}" {
   m_iOrder 210
  }
  SAI_CmdRemoveObjectiveContextAction "{5A1C0F3E9B2D4E62}" {
   m_iOrder 211
  }
```


Their name, description and icon are set in script. If Workbench complains about the IDs, delete them and let it assign new ones.


## The lists file: `$profile:SilenceAI_commander.json`


```json
{
  "factions": [],
  "spawnFactions": ["US", "US", "USSR"],
  "spawnPrefabs": ["{DDF3799FA1387848}Prefabs/Groups/BLUFOR/Group_US_RifleSquad.et", "...", "..."]
}
```


- `factions`: faction keys to command. Empty means every faction that has AI groups and an enemy, minus excluded creature factions.
- `spawnFactions` / `spawnPrefabs`: one faction key per prefab, same length. The defaults are the vanilla US, USSR and FIA rifle squads, fire teams, machine gun teams, light anti-tank teams and recon or grenadier teams, with GUIDs read from the game's own configs. For RHS or other faction mods, replace them with that mod's group prefabs. A prefab that spawns the wrong faction is deleted with a warning.


## Reinforcements


Off by default. When on, a commander raises a group only when it needs one: its reserve is gone, a threatened objective had nobody free, or an attack could not launch for lack of force. Every 3 minutes at most, with these caps:


| Cap | Default |
|---|---|
| Commanded groups per faction | 12 |
| Its own raised groups alive at once | 8 |
| Waves per session | 20 |


Groups are raised at the held objective farthest from the enemy, **never within 500 m of an enemy player** and never within 300 m of a reported contact. With no safe objective held, nothing is raised.


## How the combat systems behave


**Morale** (0 to 100 per group). It drops for:


- men down since peak strength
- the leader recently lost
- the share of the group pinned or suppressed
- fire from an arc wider than 100 degrees
- more enemies seen than men left


It is held up by being garrisoned or in an ambush, and by friendly groups within 200 m.


| State | Morale | Effect |
|---|---|---|
| Steady | 65 and above | Normal |
| Shaken | Below 65 | No flanking, no bounding, no building clearing, no new commander tasks |
| Pinned | Below 40 | Hold and return fire |
| Breaking | Below 25 | Covered break contact |
| Broken | Below 10 | Rout through the existing withdrawal path |


Morale falls fast and recovers slowly. A state has to hold for 4 seconds before it changes. Garrisons hold until Broken. Shaken and Pinned are called out by voice.


**Battle drills.** An ambush is a group going from no contact to 2 or more men under effective fire within 4 seconds.


- **Near ambush** (inside 50 m): men under fire assault *through* the enemy position; everyone else suppresses it.
- **Far ambush:** men under fire become support by fire; everyone else flanks to the side away from known hazards. An L-shaped ambush (contacts spread over 70 degrees) is never flanked.
- **After 20 seconds** the group stays in the fight if it outnumbers the enemy 1.5 to 1 and is steady. Otherwise it breaks contact.
- **Break contact** splits the group into two elements, with the machine gunner in the covering one. One element suppresses while the other bounds 40 to 80 m toward the rally point, then they swap. Smoke is thrown only through the smoke discipline gate. The drill ends at 300 m, after 20 seconds without seeing the enemy, or after 3 minutes, and the group regroups at the rally point.


**Building clearing.** Assault-posture groups, and commander assault groups, clear a building when they have seen the enemy inside it within 30 seconds.


- **Isolate and approach:** a third of the group, machine gunners first, suppresses the building while the entry team moves to the nearest face.
- **Enter:** support fire lifts. An optional frag goes into the first room if the enemy was seen there and no friendly is inside.
- **Clear:** the team moves in pairs through up to 12 interior points, found by snapping a grid to the building's navmesh one storey at a time.
- **Abort** after 2 entry team losses, if the group is pinned, or after 4 minutes.
- **Afterwards** the building stays marked cleared for that faction for 5 minutes.


## Compared with DCO's commander


| | DCO | SilenceAI Commander |
|---|---|---|
| Squad tactics without the Commander | Mostly off (the contact SOP needs a Commander) | All on; the Commander is optional |
| Intel | Contact reports with radio delay | Contact reports with radio delay, only from groups with a radio, plus "seen nothing" looks that raise confidence |
| Support fire during the assault | Not lifted explicitly in what I read | Lifts when the assault closes |
| Break contact | Bounding, no explicit covering fire | Covering element is explicitly ordered to suppress |
| Morale | Individual; break means lying prone | Group level, caused by visible events; break means a covered withdrawal |
| Game Master | Edit commander attributes | Same, plus commanded groups step back automatically when a GM orders them |
| Vanilla overrides | Replaces ~30 behaviour trees and base prefabs | None; script only, `super` everywhere |
| Magic ammunition | Available | None |


## Before you trust it


**Confirmed:**


- Every engine and vanilla call used was checked against the game's own extracted scripts (6,568 files).
- An automated check confirmed every `SilenceAI` class, method and field reference resolves, and that braces and brackets balance in every file.
- All 640 settings have descriptions.
Game Version
1.8.0.13
Created
Tue, 06 Oct 2026 06:44:37 GMT
Last Modified
Tue, 06 Oct 2026 06:44:51 GMT

1.0.56

few new updates:
What each one does
Defenders hold their ground. A group on a Defend waypoint no longer leaves it to chase gunshots, contact reports, lost contact or area searches. It still fights anything that comes inside its defend radius. This is the fix for the report you got from players.
Radio net. Anyone can pass a contact report 150m, which covers a shout. Beyond that, up to 600m, both groups need a live radio carrier. If a group never had a radio, its leader stands in. If a group had a radio operator and he dies, there's no stand-in. So players can learn that killing the RTO cuts the patrol off from everyone past shouting distance.
Mutual support. Before, groups hearing a report walked to the enemy's position one at a time. Now they move up beside the friendly group that's in contact, on the side they're already on, and hold there facing the threat. Each engaged group gets at most two helpers, so one firefight can't pull in the whole map.
Point man and flank observer. A moving group of 4 or more pushes one man 70m ahead. Groups of 6 or more also put one man 45m out to a flank, using the radio carrier if there is one. Both stay in their own group, so what they see goes straight onto the net. If the march runs into contact, cross-country routing steers its next legs around that spot for five minutes.
Fire and manoeuvre between groups. When two groups are fighting the same enemy, the bigger one suppresses (machine gunners first) and the smaller one flanks. The flank goes through your existing manoeuvre system, so defenders are still never sent wide.
Fire distribution. When a group sees two enemies and everyone is shooting one of them, about a third of the men who can see the second one switch to him. This is aimed at the "everyone shoots one player while his mate flanks" problem your probe found.
Things to know
If something misbehaves, turn these off in this order, least certain first: m_FireDistribution, then m_Scout, m_Coordination, m_Support, m_Radio. This order is also in the changelog.
Routing file: I touched SAI_RoutingSystem.c, It's a four-line insertion for the scout route-around. Worth knowing in case the two collide.
Game Version
1.8.0.13
Created
Thu, 24 Sep 2026 09:05:28 GMT
Last Modified
Thu, 24 Sep 2026 09:05:36 GMT

1.0.55

SilenceAI - Enhanced Combat v0.55

AI NOW REACT TO BEING SHOT AT

Previously they only reacted to HEARING a gun fire somewhere. Rounds actually
arriving near them did nothing. The dispatcher was seeing 1,577,425 impact
events against 775,386 gunshots in a single session and ignoring every one of
them, which is twice the volume of what it was reacting to.

A man who has rounds striking near him, or who gets hit, is now flagged under
fire for 12 seconds and searches considerably harder while that lasts. This
covers being shot at from beyond audible range, by a suppressed weapon, or
across a firefight loud enough to lose one more gunshot in.

Deliberately issues no movement orders. The position on an impact event is
where the round STRUCK, not where it came from, so sending men toward it would
send them the wrong way.

SUPPRESSION NOW MOVES PEOPLE

Suppression only affected aim. A squad under heavy fire kept walking forward at
patrol pace while missing, which reads as a number being applied rather than as
men being shot at.

Also fixed a bug where being shot at made AI move FASTER. The gait system was
releasing its speed limit under suppression, so incoming fire removed the cap.
Entirely accidental and exactly backwards.

Suppressed men now move at 65% speed, pinned men at 35%. A pinned man who keeps
walking into the fire that pinned him is what this exists to stop.

MEDICAL NO LONGER BEATS FIGHTING

Vanilla priorities, not opinion:

    HEAL activity              80
    ATTACK CLUSTER             70
    SEEK AND DESTROY           60

One casualty and the whole group switched to medical, outranking attacking the
people who caused it. Heal is now scaled to 64, below attack cluster at 70 and
above seek and destroy at 60. Casualties are still treated, they just stop
interrupting a firefight.

More pronounced on PVE servers because compositions built from medical sections
mean more medics, and ACE Medical makes wounds persist instead of passing in
seconds.

RADIO REPORTS ARE NO LONGER PERFECT

A squad 500m away learned your exact position to the metre. That was the single
most omniscient thing the mod was doing, and no army has ever had that radio
net.

Relayed contacts now blur by roughly 15m per 100m of distance between the
receiving group and the contact, capped at 120m. A group 400m out gets about
60m of error, enough to make them search an area rather than walk onto you. If
they can actually see you their own eyes win and nothing is blurred.

EXTENDED DESPAWN RANGE NOW WORKS OUT OF THE BOX

m_Lifecycle.m_bOnlyProximityDrivenGroups defaulted to true, which made the
entire despawn block a silent no-op on any server using a PVE spawner. Verified:
63 groups, four checks each, every one reporting Manual policy, and the self
report showing NEVER FIRED with 404 blocks. The despawn distance an admin set
was inert with nothing in any log explaining why.

Now defaults false. Snipers can engage AI at the range you configure.

MORTAR PITS NO LONGER EAT YOUR GARRISON

The fire support director adopted the closest group within 200m as a mortar
crew, with no check on size. Mortar pits sit near objectives, objectives are
garrisoned by 18-man MG teams, so tubes were routinely crewed by a full machine
gun team pulled off the position it was meant to be holding. Now capped at 8.

NEW: PER-GROUP DECISION TRACE

When one group misbehaves, aggregates cannot tell you why. Set
m_Diagnostics.m_bTraceGroup true and it follows one group, logging every order
it is given or refused:

    [Trace] Investigate issued, held for 30 s
    [Trace] Flank REFUSED, Withdraw already held by every member

Bounded to 2000 lines so it cannot fill a disk unattended.

NOT POSSIBLE, RECORDED SO NOBODY CHASES IT

Detecting a defend waypoint from script. The entire public waypoint API is
AIWaypoint, AIWaypointCycle, SCR_AIWaypoint and SCR_AIWaypointArtillerySupport.
Defend, Move and Search are prefab configurations of the same class, not
separate types, and AIWaypoint exposes only completion radius and type. There is
no way to identify one, so the "group stuck on a wrong-class waypoint" repair
cannot be built.

BEFORE YOU UPDATE

- CONFIG_VERSION is 23. Existing configs keep working, new blocks are added on
  first boot.
- Four of these change how AI behave in a firefight. If something feels wrong,
  the order to try disabling is: m_Suppression.m_bSlowWhenSuppressed, then
  m_HealPriority, then m_UnderFire, then m_ContactSharing position error.
- m_Settle.m_bApplyToWeaponConfigs is still OFF and still worth enabling on a
  session you can watch.
Game Version
1.8.0.13
Created
Sun, 13 Sep 2026 02:42:21 GMT
Last Modified
Sun, 13 Sep 2026 02:42:38 GMT

1.0.54

New: AI go cross country instead of marching down the road
Three complaints that get reported separately, and which turned out to be one problem:
A section crossing four hundred metres of open ground picks the road, walks the centreline of it, and dies in a line.
A group sent somewhere distant meets a river or a cliff, stands on the bank, and stays there until the order times out.
A convoy sticks to a road that has stopped working, or wedges on an obstacle and reverses against a wall, because the only route it knows runs through the obstacle.
All three are the same thing: the group was pointed at a destination once and left to get there.
A long journey is now walked in legs. Each leg is one point about 150 m along the line of march, offset sideways to whichever side is off the road and actually walkable, snapped to the navmesh, and issued as an ordinary group move. When the group reaches it, the next leg is chosen from where they now are. The group's own waypoints are never touched, never cleared and never reordered, and the last leg length of every journey is deliberately left alone, so a Defend waypoint is still defended and an objective is still captured exactly as whoever placed it intended.
What it cannot do, said before you notice it yourself
It does not make the pathfinder dislike roads. That lives in navmesh area costs, the only script access is AIPathfindingComponent.SetAreaCosts(ResourceName), and that wants a config asset this addon does not author. Earlier notes called that a dead end and it still is.
So between two legs the pathfinder does as it likes and will use a road that runs that way. What changed is that the group is aimed away from the road network repeatedly for the length of the journey, instead of once at a destination on the far side of it. That makes m_fLegLength the dial that decides whether any of this is visible: at 150 m a route reads as cross-country, at 400 m it reads as a road march with occasional detours. This is a steering system, not a cost model.
It also cannot make AI cross water, and it never places a leg across a river, because every candidate goes through the same navmesh validation the rest of the mod uses. If a destination is across a river, routing refuses at the start instead of discovering it at the bank. That is the reliability half of this feature and arguably the more useful one.
The part that was there all along
This was not built earlier because the wrong question was being asked. Not "can we change what a road costs", which is the dead end, but "can we ask where the roads are". That one has an answer:
ChimeraAIWorld
    proto external RoadNetworkManager GetRoadNetworkManager()

RoadNetworkManager
    proto int GetRoadsInAABB(vector aabbMin, vector aabbMax, out array<BaseRoad> outRoads)

BaseRoad
    proto external float GetWidth()
    proto external int   GetPoints(out notnull array<vector> outPoints)
One query per leg returns every road in the corridor, GetPoints gives each one its centreline, and distance is measured to the road edge using the road's own width, so a farm track and a highway are not held at the same standoff.
Worth recording for anyone working from the same documentation: Bohemia's published Enfusion Script API lists GetRoadNetworkManager on AIWorld. Written that way it does not compile, with Undefined function 'AIWorld.GetRoadNetworkManager'. It is declared on ChimeraAIWorld, which extends AIWorld and is itself extended by SCR_AIWorld. A published API page is evidence, the installed compiler is proof.
It yields to everything
Travel is the least important thing a group is doing the moment anything else is happening. Contact, garrison, an ambush hold, a flank in progress, a patrol halt, a withdrawal, dispersal, a search, or a Game Master order on any member: any of those and the route is abandoned and the group carries on with the orders it always had. Nothing queues, nothing waits its turn, and a group that gave up on a route does not try again until its cooldown has passed.
It never claims a slot in the order arbiter either, only checks permission, so an illumination flare is not blocked for the length of a march.
Vehicles
Mounted groups and armed vehicle crews get the same treatment at a longer leg length and a much smaller road clearance, because a vehicle that refuses to come within 25 m of a road cannot use a bridge, a ford or a gate. Their legs are snapped through the vehicle's own pathfinding component rather than the leader's, so they land on ground a truck can reach rather than ground a rifleman can stand on. A vehicle that stops making progress is aimed to one side rather than left reversing, and after a few failed attempts it is handed back to its own orders instead of being wrestled.
Straight about the scope: a convoy leaving the road is currently driven by stuck detection, not by "there is a known enemy near the road ahead". That second one is a sensible next step and is not in this build.
Settings you are most likely to touch

Setting
Default
What it does
m_Routing.m_bEnabled
on
Walk long journeys in legs, placed off the roads
m_Routing.m_fLegLength
150 m
How far ahead each leg goes. The dial that decides whether routing is visible
m_Routing.m_fRoadClearance
25 m
How far from a road edge a leg would ideally sit
m_Routing.m_bIncludePatrols
on
Off leaves authored patrol routes exactly where you placed them
m_Routing.m_bVehiclesOffRoad
on
Route mounted groups and armed vehicle crews too

Six dials are also on the Game Master scenario page, and there is a per-group checkbox for forcing routing on or off for one group.
Game Version
1.8.0.13
Created
Sun, 13 Sep 2026 01:32:14 GMT
Last Modified
Sun, 13 Sep 2026 01:32:32 GMT

1.0.53

SilenceAI - Enhanced Combat v0.38

AI CAN HEAR YOU SHOOT

The hearing system in previous versions never ran. Not "ran badly", never ran at all.
It overrode a class that another mod's AI config replaces, so it was dead code, and no
log anywhere would have told you. It now hooks the dispatcher above that, which no AI
config can take away.

Measured on a live server: 129,014 danger events reached it, 36,706 were gunshots,
415 group alerts issued, 1 dropped.

Because it uses the engine's own audibility model, suppressors now genuinely work
against AI, and shots are heard by the AI who realistically could have heard them
instead of everyone inside a flat radius.

NIGHT VISIBILITY

AI were close to blind at night, and it was measurable: 44 contacts against 156 in
daylight, 6.9 s to first shot against 2.8 s, and the closest an AI ever knowingly got
to an enemy was 89 metres.

New m_Night block compensates for darkness using vanilla's own light test. After
turning it on: 2.4 s to first shot, nothing over 10 seconds, closest contact 3 metres.

This is not night vision and does not extend sight range. It makes them recognise what
is already in range faster, and shoot straighter once they have. Set
m_fAimPenaltyScale to 1.0 if you want night to stay a full player advantage.

ZOMBIE AND CREATURE MODS

If you run Project Outbreak Zombies or anything on Creature Melee AI, SilenceAI was
taking your zombies over and giving them infantry doctrine. It now leaves creature
factions alone by default (keys "Z" and "CMAI_CREATURES"). Do not enable the gunshot
listener for zombies, Creature Melee AI already hears better than this does.

MULTI-TARGET

Added a probe to settle whether AI failing to switch to a flanker was a perception
problem or a target selection problem. Verdict from live data: selection, 68%. AI
holding several live enemies now re-evaluate faster instead of staying locked on the
first man they saw.

SETTINGS THAT NEVER DID ANYTHING

An audit found three groups of settings wired to nothing, including their Game Master
sliders and difficulty presets. The suppressed hearing distance, the whole m_Settle
anti-snap-shot block, and three magazine thresholds. All fixed or removed. This release
has zero dead settings, verified.

BEFORE YOU UPDATE

- CONFIG_VERSION is 16. Existing configs keep working, new blocks are added on first
  boot, and the log tells you if your file predates a default change.
- Logging returns to level 1. The self report, reachability check and probe verdicts
  still print at any level.
- m_Settle.m_bApplyToWeaponConfigs ships OFF. It is the anti-snap-shot timing and it is
  worth having, but an earlier version of it crashed a server, so enable it on a session
  you can watch.
- m_Split stays OFF. Group splitting causes null pointer storms, see the changelog.
Game Version
1.8.0.13
Created
Sun, 06 Sep 2026 09:24:03 GMT
Last Modified
Sun, 06 Sep 2026 09:24:14 GMT

1.0.52

more tracking and tracing, hopefully fixing alot soon
Game Version
1.8.0.13
Created
Sun, 06 Sep 2026 08:06:09 GMT
Last Modified
Sun, 06 Sep 2026 08:06:17 GMT

1.0.51

fixing AI gunshot sounds and enabling logging, this build is not for live as it will cause log spam
Game Version
1.8.0.13
Created
Sun, 06 Sep 2026 05:40:27 GMT
Last Modified
Sun, 06 Sep 2026 05:40:40 GMT

1.0.50

Fixed
It now fires once per contact acquisition, latched on the group state and reset only when contact is lost. Verified the ordering: switch check, then latch set, then the call, and the reset sits outside the contact-valid branch so the latch actually holds.
I also added m_Investigate.m_bReleaseOnContact, default on. If this misbehaves again you can kill it from the config with no republish. Given I have now caused two regressions in a row in this exact area, you should have that lever.
Game Version
1.8.0.13
Created
Sat, 05 Sep 2026 15:58:56 GMT
Last Modified
Sat, 05 Sep 2026 15:59:10 GMT

1.0.49

AI no longer walk past a player to go and look for him
Reported as: AI walking along not caring about being shot at, or just ignoring players.
Investigate is only ever issued once contact is lost, which is correct, and the order then carries a protection window so nothing trivial can override it. What was missing was the other end: nothing cancelled it when the enemy turned back up.
So a group that lost contact, was sent to look at the last known position, and then had a player walk into view kept marching to the empty spot he used to be in. Being shot at did not release it either. The order simply ran its full duration.
The engagement probe put a number on it. Of 19 passive contacts in one 37 minute session, where a man held a perceived enemy in view for twenty seconds or more and never fired a round, 8 were under an Investigate order. Joint largest bucket, and the only one in that list the mod issues itself.
Finding an enemy again now drops the claim and the man is free to fight.
Only Investigate is released. A Withdraw, a Garrison or a Game Master order is a decision that outranks "I can see somebody" and is left standing.
Game Version
1.8.0.13
Created
Sat, 05 Sep 2026 15:23:58 GMT
Last Modified
Sat, 05 Sep 2026 15:24:11 GMT

1.0.48

Air defence no longer breaks AI engagement. Both the extended vehicle range and the raised aircraft score were being applied to every AI on the server, not just the men carrying launchers. A rifleman handed an aircraft score of 190 rates a helicopter above a rifleman and throws a null pointer in vanilla's fire tree working out how to shoot it. Measured across three live sessions: 37.4 exceptions per minute ungated, 3.9 with the vehicle range gated, 0 with both gated. While those threw, the affected AI engaged nothing at all. Both scores now come through a single writer, decided per man.
Game Version
1.8.0.13
Created
Sat, 05 Sep 2026 14:33:43 GMT
Last Modified
Sat, 05 Sep 2026 14:33:56 GMT

1.0.47

bug hunting
Game Version
1.8.0.13
Created
Sat, 05 Sep 2026 14:09:13 GMT
Last Modified
Sat, 05 Sep 2026 14:09:21 GMT

1.0.46

Game Version
1.8.0.13
Created
Sat, 05 Sep 2026 10:04:47 GMT
Last Modified
Sat, 05 Sep 2026 10:05:01 GMT

1.0.45

fixing targeting spam from last update
Game Version
1.8.0.13
Created
Sat, 05 Sep 2026 09:35:32 GMT
Last Modified
Sat, 05 Sep 2026 09:35:40 GMT

1.0.44

AI now conserve ammunition
Vanilla carries two per-weapon-type ammo thresholds and this mod was rebuilding the weapon handling config with both copied through verbatim. It had its hands on the exact levers and passed them along untouched, so nothing on any server had ever adjusted how much ammunition an AI is willing to spend.
m_iMinSuppressiveMagCountThreshold is the one that matters. It is the magazine count below which an AI stops spending rounds on suppressive fire, which is unaimed volume, which is what empties a loadout fastest. Raising the floor means they stop hosing sooner and keep what is left for shots they are aiming.
Both thresholds are now added to vanilla's numbers rather than replacing them, so vanilla's per-weapon tuning survives and a machinegunner is not held to a rifleman's allowance. A hard ceiling stops a silly config leaving a man who is carrying magazines convinced he has none.
json
"m_AmmoDiscipline": { "m_bEnabled": true, "m_iSuppressiveFloorBonus": 2, "m_iLowMagBonus": 1, "m_iMaxThreshold": 6 }
Fixed a hidden coupling while in there: the weapon handling override was gated entirely behind m_Settle.m_bEnabled, so turning off weapon settling would have silently turned off ammo discipline too. The two are now switched independently.
AI react faster
m_fStabilizationScale was 1.8, nearly double vanilla, chosen deliberately as the anti-snap-shot dial. That reasoning still holds, so it lands at 1.25 rather than 1.0: a perceptible beat, most of the delay given back. The per-weapon multipliers stack on top, so the real change is larger than it looks.


before
after
Rifleman
1.80x vanilla
1.25x
Machine gunner
2.34x
1.44x
Marksman
2.70x
1.63x

Perception raised where it decides whether they notice you first: m_fFactorSafe 1.0 to 1.25 (the state a patrol walks around in), m_fFactorVigilant 2.5 to 3.0. The 12.0 ceiling still clamps the compounded worst case.
m_CombatRange.m_fEvaluateInterval 3.0 to 2.0. This is how often a man re-reads his nearest perceived enemy, and the ambush trigger, combat range banding, the launcher queue and the probe all read it. At 3 s a man could be acting on a picture of the world three seconds stale.
Honest note. The engagement probe measured time to first shot at a 1.6 s mean, min 1.0, max 3.0, with zero passive contacts. These AI were never slow once they had decided to shoot. This makes a fast reaction slightly faster. It does not make an AI that never acquired you at all acquire you.
Suppressed gunfire carries further
m_fAudibleDistanceSuppressed 250 to 600, and this is a cross-mod interaction rather than a tuning opinion. A live session showed another mod posting its own gunfire events with suppressed=1 on thirteen of fourteen posts. If shots arrive flagged suppressed regardless of what was fired, every listener is measured against this number instead of the 900 m unsuppressed range, and 250 m is a very short leash on a rifle. That looks exactly like AI not reacting to being shot at.
600 keeps suppressed meaningfully quieter without deafening the server when another mod mislabels everything.
New: faction relations audit
Prompted by one sentence from a playtest: "I stood in front of a few and just shot them like nothing."
That rules out perception and hearing at a stroke. Standing in front of a man is not a perception problem and shooting him is not a hearing problem. The most likely remaining explanation is that the AI does not believe you are an enemy, and nothing inside an AI mod can see that, because every gate that rejects a non-enemy is behaving correctly when it fires. The danger reaction rejects friendly fire on purpose. The target selector never scores a non-enemy. Both look identical whether the relation is genuinely friendly or accidentally missing.
So the mod now simply asks the engine. Once, about 15 seconds after the world is up, it prints the full hostility matrix using IsFactionEnemy in both directions, and names every pair that is not mutually hostile, plus the nastiest case of all, one-way hostility, where one side fights and the other stands there.
Find the faction your players spawn as and the faction your AI actually carry. If that pair is not mutually hostile, that is the whole bug, it is a server configuration fault rather than an AI one, and no amount of AI tuning will touch it.
Diagnostic only. It reads and prints, and changes nothing. m_Diagnostics.m_bFactionAudit, on by default.
The gunfire reaction now says why it did nothing
"Reacting to gunfire" was missing from the self report entirely, which proved the success path was never reached but not which of eight exits took it. All eight now report a distinct reason, including specific notes on the faction gate and the audible-distance gate, and on m_Hearing.m_bEnabled being false. A system that vanishes from a report tells you nothing.
The probe now counts players separately
It reports how many contacts involved an actual human rather than another AI. A zero there, while players insist they were being ignored, confirms the faction diagnosis independently.
Group splitting is on by default
It shipped disabled, was confirmed to compile and load clean on a live server, and is now on so it can be judged on a session rather than in the abstract. m_Split.m_bEnabled false restores the previous behaviour outright.
Game Version
1.8.0.13
Created
Sat, 05 Sep 2026 08:23:06 GMT
Last Modified
Sat, 05 Sep 2026 08:23:13 GMT

1.0.43

Launcher fire discipline
Reported as: the AI have a hard on for vehicles. One BTR eats four Javelins and two Iglas inside a second.
Nobody was misbehaving. Vanilla scores targets as offset plus slope times distance:
UnitType_Infantry           100.0   -0.1
UnitType_VehicleUnarmored    99.0   -0.08
UnitType_VehicleMedium      150.0   -0.15
UnitType_VehicleHeavy       200.0   -0.15
A heavy vehicle scores double a rifleman. So every man holding a launcher independently works out that the BTR is the best thing on the field, and every one of them is right. The defect is that nothing tells him someone forty metres away reached the same conclusion a tenth of a second earlier. Six men solving one problem in parallel with no coordination is exactly what a volley looks like from the receiving end.
Launchers now take turns. The first launcher man to want a given vehicle claims it. While that claim stands, every other launcher man has vehicles and aircraft scored down to nothing, so the target selector hands him infantry instead. After the reservation expires the next man takes his turn.
The same missiles still get fired. They arrive one at a time instead of all together, which is the part players were actually complaining about.
A claim ends early if the target dies, the claimant dies, or the claimant loses sight of it, so 12 seconds is a ceiling rather than a fixed wait
A sweep every 5 seconds clears claims on dead vehicles and dead claimants, because a stuck claim would look exactly like AI refusing to engage armour at all
Riflemen are never affected. The first test in the loop rejects anyone not carrying WT_ROCKETLAUNCHER, so a squad still puts small arms on a technical exactly as before
json
"m_Launcher": {
  "m_bEnabled": true,
  "m_fReservationSeconds": 12.0,
  "m_fClaimRange": 1400.0,
  "m_bIncludeAircraft": true,
  "m_fDeprioritisedScore": 1.0
}
Set m_bIncludeAircraft false to let MANPADS gunners keep volleying. Against a fast mover that is arguably correct; against a hovering helicopter it is not.
One honest limitation. This changes target scores, so a queued man finds the vehicle unattractive rather than forbidden. A man holding a launcher with nothing else useful can still fire. That is the right failure direction: the worst case is the behaviour you have now, never a man standing in the open declining to defend himself because a bookkeeping entry said no.
New self report line "Launcher fire discipline", counting how often a man was held off an already-claimed target.
Game Version
1.8.0.13
Created
Sat, 05 Sep 2026 06:34:17 GMT
Last Modified
Sat, 05 Sep 2026 06:34:29 GMT

1.0.42

AI now react to being shot at
Reported as: "the AI didn't respond at all when being shot while on the move, only if they saw the player."
That was exactly right, and it was our bug. SilenceAI's override of vanilla's weapon-fire danger reaction was a replacement for vanilla, not an addition to it. It scheduled the supersonic crack, scheduled the muzzle report, notified the group, and returned "handled". Returning handled means vanilla's own reaction body never ran for a single shot fired on the server.
The tell was in the signature the whole time. PerformReaction receives threatSystem on every call, and this file used it in exactly one place: handing it straight back to vanilla on the "system switched off" path. Every path that actually did something ignored it. A listener whose own threat system is never touched when a round cracks past his head has no reason to do anything until his eyes find you.
There was a second half. Seven early exits returned a bare false without falling back to vanilla, so a malformed danger event, or one past our audible distance, got no handling from anybody. The event was swallowed.
Now the override adds to vanilla instead of replacing it:
Vanilla's reaction runs in full, so whatever it does with the listener's threat system happens
All seven early exits return vanilla's verdict instead of dropping the event
SilenceAI's own crack and report scheduling is skipped while delegating, so one round is never reported to the threat system twice
Group propagation to non-leaders and the scattered shot origin are kept, since those are the parts vanilla genuinely lacks
The leader is left to vanilla, so a group is never handed the same contact twice, once accurate and once scattered
New switch m_Hearing.m_bDelegateToVanilla, default on. Set it false to reproduce the old behaviour side by side.
What I cannot show you: vanilla's PerformReaction body is inside data007.pak, compressed, so I cannot read it and cannot prove what it does with threatSystem. What is provable is the shape, a parameter received on every call and never used, and vanilla never reached on any acting path. The fix follows from that plus the report.
AI stop flip-flopping between good and bad shots
A 27-minute session logged 5,430 skill band changes. That log only fires on a real change, so those were real.
The cause was hard band edges. Suppression decays at 8 per second and the bands were fixed at 75 and 40, so anyone under sustained fire sat on a threshold and crossed it every tick. Each crossing moves a man a whole tier on a ladder with a 16x aim spread end to end, so the same soldier was alternately a good shot and a poor one from one second to the next.
That is a large part of what reads as AI being dopy. Not that they are bad, that they are inconsistent.
Suppression now uses hysteresis: rising past 75 and 40 to enter a band, falling below the new m_fPinnedRelease (60) and m_fSuppressedRelease (30) to leave it. Simulated before shipping:
oscillating 72<->78 : 1 band change  (was 6)
oscillating 38<->42 : 1 band change  (was 6)
New self report line "Skill band changes" so this is judged against the 5,430 baseline rather than on trust.
Oversized groups are now split up, on by default
Reported as AI clustering while walking. It is arithmetic, not a bug, and the fix had to go here rather than in a spawner so it works with or without the PVE mod.
Formation spacing cannot be changed from script. AIFormationComponent exposes only SetFormation(string) and three getters; AIFormationDefinition exposes five getters and no setter of any kind. That door is shut and it is now written into the source so nobody looks for the handle again.
So the only lever is head count. Eighteen men at 3 m offsets is a blob 12 to 15 m across. Three groups of six, each with its own destination, is a section frontage. Same head count, same AI budget, same server cost.
Groups over maxGroupSize (9) now have their surplus moved into new groups of targetGroupSize (6), each sent to its own point on a 35 to 80 m ring. It hooks SCR_AIGroup, so it catches Conflict, the scenario framework, Game Master placements, ambient patrols and every other mod's spawner without knowing anything about them. The leader stays with the parent, players are never reassigned, vehicle and aircraft crews are skipped.
On by default, with the risk stated. This is the most invasive thing in the mod: it creates entities and re-parents live agents mid-behaviour. Every call is verified public API, but the behaviour of a man who changes hands while carrying an order is not something a documentation page can settle. It shipped disabled, was confirmed to compile and load clean on a live server, and is now on so it can be judged on a real session. It acts once per group and never again, and m_Split.m_bEnabled false restores the old behaviour outright.
New: engagement probe
Changes no behaviour. It reads two numbers the mod already computes, the AI's own perceived enemy distance from the engine's PerceptionComponent, and the muzzle ammo count going down, and reports:
---- engagement probe ----
  Contacts watched: 412  (a man perceiving an enemy inside 150 m)
  Opened fire: 366   Never fired and had time to: 46
  Time to first shot: mean 3.4 s, min 0.0 s, max 41.0 s
  Spread: under 1 s 180 | 1-3 s 96 | 3-10 s 74 | over 10 s 16
  Closest an AI has knowingly been to an enemy: 11 m
  Closest PASSIVE contact: 14 m
A high passive count at short range means they see players and will not shoot. A near-zero contacts-watched count while players report walking past patrols means they never saw anyone. The two need opposite fixes and this is how to tell them apart. It is deliberately shaped so it cannot flatter the mod: the headline number is a count of times the AI had someone in sight and did nothing.
Game Version
1.8.0.13
Created
Sat, 05 Sep 2026 06:00:07 GMT
Last Modified
Sat, 05 Sep 2026 06:00:20 GMT

1.0.41

AI budget no longer counts a transfer as a death
OnAgentRemoved released a budget slot unconditionally. That was correct while the only way to leave a group was to die or despawn. It stops being correct the moment anything moves men between groups: every SilenceAI split transfer would have arrived looking exactly like a death, the budget would have been credited for men still standing in the field, and the spawners would have spent that credit on more AI.
More AI is the opposite of what the splitter is for, and on a console client it is the thing players actually feel.
The test is now the man, not the event. Entity gone means despawned. DEAD or INCAPACITATED means killed. Anything else is a live man who changed hands, and his slot is still occupied.
This is safe with or without SilenceAI. With no splitter running, the only agents that ever reach that function are dead or despawned ones, and the behaviour is identical to the unconditional release it replaces.
Game Version
1.8.0.13
Created
Fri, 04 Sep 2026 08:31:18 GMT
Last Modified
Fri, 04 Sep 2026 08:31:35 GMT

1.0.40

The AI were opting out of fighting, and we can prove it. A full session at max logging showed base of fire, bounding overwatch and flanking appearing in neither list of all 11 self reports. Not fired, not even blocked-with-a-reason. They were bailing out before their first check. The order arbiter agreed: across the whole session it recorded Garrison, Investigate, Withdraw and GameMaster, and not one Suppress or Flank.
Cause: m_bGarrisoned was doing two jobs. It used to mean "on a Defend waypoint holding windows", where skipping the offensive systems is correct. Then the navmesh fallback was added, because six of the 7,714 buildings in the game have an authored firing position, and now the same flag also meant "found some cover nearby". 388 positions and 157 groups were quietly excluded from fighting back. Fixed: the gates now ask whether somebody deliberately put the group there, which a Defend waypoint and a Game Master order both answer, and merely taking cover does not.
Garrisons work in ordinary buildings now. The navmesh fallback existed but only ran for groups with no waypoint. A group arriving on a Defend waypoint handed itself to vanilla, which allocated from an empty set. That's the single most common garrison on a PVE server, so the fallback was missing exactly where it was needed.
Garrisons stop looking like one organism. Roughly two thirds of garrison groups are capped to crouching, the rest hold at whatever height they choose, rolled once per group. You cannot force AI to stand, only stop capping them, so that's as close as the engine allows.
New Game Master action: Set ambush here. Select groups, right-click ground, they hold fire until someone reaches that spot. Turns the ambush on as well as pointing it.
PVE: groups walking into an objective now fight on the way. Defensive surges and resupply spawn hundreds of metres out and walked in on a Defend waypoint, which means arriving outranks being shot at. They get their own waypoint slot now. Counterattack waves deliberately keep Defend, because a wave has to hold what it retakes.
Also: transport's "13,437 blocks" turned out to be empty groups being asked the same question 600 times each, and now says so. Formation counters split into spawn and runtime, which is what proved the spawn fix worked: 80 set at spawn, 2:1 wedge to staggered, zero Column. And a brand new config file no longer stamps itself as out of date.
Game Version
1.8.0.10
Created
Wed, 02 Sep 2026 13:35:16 GMT
Last Modified
Wed, 02 Sep 2026 13:35:32 GMT

1.0.39

Uploading the handbook:
https://claude.ai/code/artifact/e1725b32-79df-48bd-8253-7e80b7d0b23c
Game Version
1.8.0.10
Created
Wed, 02 Sep 2026 07:59:31 GMT
Last Modified
Wed, 02 Sep 2026 07:59:47 GMT

Showing 1 to 30 of 50 results

Rows per page

Next