SilenceAI - Enhanced Combat

by Silence_AUS

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

1.0.38

SilenceAI v0.38 + PVE Remix
AI that stop walking in a conga line. Formation is now set at spawn, which turns out to be the only moment that matters, and only one mod is allowed to set it. The previous 915 "formation changes" per session were relabelling men who were already standing where they'd been put.
Patrols now halt. Out of contact, groups stop for a few seconds, drop to a knee and have a look around. Rolled per group so two patrols don't stop in unison.
Shelling now works on them. Three rounds in the same place inside 25 seconds and the group displaces 90 m out of the beaten zone instead of sitting there absorbing it.
Helicopters are scary now. Enemy vehicle inside 400 m and infantry go prone and spread into wedge, and stay there while it's circling.
Smoking a field is no longer free. Break line of sight at close range and the last place you were seen gets a wide, long burst of suppression. Works on smoke, walls, ditches and doorways alike, because they're all the same trick.
Medics stop committing suicide. They were walking out to bandage people during live firefights because the "lull" check only asked whether an enemy was within 80 m. It now wants 250 m and 25 seconds of actual quiet.
PVE side: AI backcapping no longer stacks up infinite objectives, lost ground blocks the front again with a cap so it can't softlock, and counter-sniper cooldown is now a random 10 to 30 minutes instead of a metronome you could set your watch by.
Also: settings actually save now. They hadn't, once, ever.
Game Version
1.8.0.10
Created
Wed, 02 Sep 2026 03:15:02 GMT
Last Modified
Wed, 02 Sep 2026 03:15:11 GMT

1.0.37

Fixing the AI from just running to heal AI, 

changed Fixed both. m_fLullDistance is 80 to 250, and there's a new m_Casualty.m_fQuietTime, default 25 seconds, which requires the group to have actually seen nothing for that long. Both halves have to pass now, so a squad still trading fire fails the first and a squad in a brief pause fails the second.
Game Version
1.8.0.10
Created
Tue, 01 Sep 2026 23:50:47 GMT
Last Modified
Tue, 01 Sep 2026 23:51:05 GMT

1.0.36

fixing AI formations
Game Version
1.8.0.10
Created
Tue, 01 Sep 2026 14:40:47 GMT
Last Modified
Tue, 01 Sep 2026 14:41:00 GMT

1.0.35

# SilenceAI - Enhanced Combat, change notes


Same 125 Game Master attributes as the last build. Nothing new to configure.


This release is one defect, and it is the one that made the last several releases pointless on a
live server. Read the last section before you restart, there is something you need to delete.


---


## Fixed: the mod has never once saved its settings on a live server


A four hour session attempted five settings writes and failed all five. Every Game Master change to
AI settings was being lost at the next restart.


The log said `SaveContext doesn't support unmanaged class`. That error was already known and had
already been "fixed" once, by replacing a `map<string, string>` field with an array of small
`Managed` entries. That fix rested on an assumption that was never tested: that arrays reflect
where maps do not. They do not, and the very next build logged the identical error.


The actual rule, which now has evidence behind it instead of a guess:


- The whole settings object was written with a single `WriteValue("", this)`, which asks the engine
  to reflect over the object and write whatever it finds.
- `array` and `map` are engine template types, not `Managed` script classes. When the reflecting
  serialiser meets a field of either type it reports that error and abandons the write.
- Not the offending field. **The entire write.** One error line for fifty-odd sections, and no file.
- Every save that works on this server writes containers only as explicitly **named** values, never
  as reflected fields. Vanilla does the same in `SCR_ScenarioFrameworkSystemSerializer`, and
  `SLNC_FrontState` goes as far as splitting positions into parallel float arrays to avoid it.


Three things changed:


1. **No container is a field on the settings tree any more.** The two remaining lists, per-faction
   skill overrides and per-faction tuning profiles, moved into statics, which reflection does not
   walk, and are persisted separately in `SilenceAI_factions.json` as named arrays of primitives.
2. **All 58 top-level values are written by name, one call each, with every return value checked.**
   The file keeps the same shape, so existing configs still load. When something breaks in future
   the log names the exact section instead of leaving a whole tree to bisect by hand.
3. A repo-wide check for container fields at class scope, which has to catch six deliberately
   broken fixtures before it is allowed to report a clean result.


**To be clear about what this did not affect.** The base game's own saving was never broken by it.
Player saves ran 559 times in that session with no errors. This was SilenceAI failing to write its
own config file and nothing else.


## Fixed: the "could not write config" warning could never fire


The branch that warns an admin their profile directory is not writable read
`else if (Replication.IsServer())` hanging off an `if (Replication.IsServer())`. Identical
condition, so it was unreachable. The one warning built to catch a silent failure to persist
settings had itself never run.


## Fixed: one patrol in three walked in single file


Reported from a playtest as the AI bunching up and walking clustered in a single file. That is
exactly what was configured. The varied travel formation pool was StaggeredColumn, Wedge and
**Column**, and Column in `SCR_AIWorld.et` is one man behind another at 3 m.


Second time Column has caused this. It was the outright default once, that was owned and changed,
and it then survived in the variety pool where it kept catching a third of all groups.


The pool is now one part StaggeredColumn to two parts Wedge. Column stays available to anyone who
deliberately wants a road column, but the load now warns when a travel formation is set to it.


Formation changes fired 915 times that session, so the system was working. The setting was wrong.


## Added: a config version stamp, because changed defaults were reaching nobody


The config file always wins over built-in defaults. That is correct, an admin's edits must not
evaporate because the mod updated. The cost is that changing a default in the source changes
nothing at all on any server that already has a config file.


That is not theoretical. Several defaults changed over the last few builds, were uploaded, and had
no effect whatsoever, because the file predated them and quietly won.


The build now stamps a version and says so in the log when the file is older, naming the
consequence and what to do about it. It does not rewrite anything, because silently replacing an
admin's values would be the worse failure.


---


## Before you restart: delete one file


Delete `$profile:SilenceAI_config.json` on the server.


Your current file predates several changed defaults and will keep overriding them, including the
formation fix above. Deleting it makes the mod rebuild from current defaults on the next boot. You
will lose hand edits made directly to that file, but nothing made through the Game Master panel
since writes started failing, because none of that ever reached disk.


From this build on you will not have to guess: the log tells you when the file is out of date.


## What to watch for in the next log


- `[SilenceAI] Loaded config from ...` with no `FAILED to serialise` line after it. That is the fix
  confirmed.
- If a write does still fail, the error now names the exact section rather than giving one line for
  the whole settings tree.
Game Version
1.8.0.10
Created
Tue, 01 Sep 2026 13:36:00 GMT
Last Modified
Tue, 01 Sep 2026 13:36:10 GMT

1.0.27

SilenceAI - Enhanced Combat
Fixes a defect that stopped the base game saving. A map field added to a vanilla component broke the engine's serialisation, so every save involving an AI failed. Also fixes the mod's own config save and load, which was broken the same way.
AI no longer forget you 1.6 seconds after you break line of sight. That shipped value is the whole peek-shoot-duck exploit and most of why one player beats a squad. Now 4 seconds by default, adjustable, and it makes AI no more accurate or further sighted.
Fire positions now fall back through progressively looser searches instead of leaving a man in the open. A live session measured the old query failing 98% of the time. A failed cover manager lookup is also no longer cached forever, which had been disabling the entire cover system for whole sessions.
Bounding overwatch had never once run on a server. It required a posture nothing produces automatically. Fixed.
AI walk instead of jogging everywhere, vary their walking speed within a group, travel in staggered column instead of single file, stop standing upright in firefights, and no longer path straight at you during a fight. AI drivers are capped at 45 km/h and a horn no longer shoves a whole section around every time a convoy passes.
Transport is enabled by default. AI will use vehicles for distant waypoints and dismount on contact.
New: the mod reports at boot which of its systems are switched on but unreachable, and reports periodically which have actually done anything and why the rest have not. A settings baseline can be saved and restored, so staff changes can be reverted with one button or automatically on restart.
Game Version
1.8.0.10
Created
Mon, 31 Aug 2026 18:11:04 GMT
Last Modified
Mon, 31 Aug 2026 18:11:20 GMT

1.0.26

fixing game saves to enable the persistence system to work
Game Version
1.8.0.10
Created
Mon, 31 Aug 2026 17:41:05 GMT
Last Modified
Mon, 31 Aug 2026 17:41:20 GMT

1.0.25

AI driving fixes
AI drivers now have a speed cap. Nothing in the shipped game applies a cruise speed to AI, so an AI driver was driving at whatever the vehicle would do. That is most of why they leave the road and hit things. Drivers are now capped at 45 km/h, adjustable in the Game Master panel. Bohemia's own value where they expose it is 50, so this sits slightly under their idea of sensible, deliberately, because the point is to buy the driver time to steer. Raise it if convoys feel sluggish, lower it if they still cannot hold a corner.
Horn reaction cooldown. The honking itself cannot be stopped: sounding the horn is engine-side driving behaviour with no script control in this engine, so no mod can silence it. What can be fixed is what it does to your infantry. Vanilla moves any man within 12 m of a friendly horn out of the way, and a convoy honks repeatedly, so a section spends a column's whole transit being shoved around. There is now a 20 second per-man cooldown: the first horn still moves him out of the road, the next several are ignored, because he has already stepped aside. Set to 0 for the shipped behaviour.
Not possible: making them prefer roads. The pathfinder favours roads through navmesh area costs, and the only script access to those takes a config asset a script-only mod cannot author, with no example of the format anywhere in the game files. The speed cap is the substitute and it is a partial one.
Fixed: walking speed limits were being applied to men in vehicles. The per-man gait variation was not excluding drivers and passengers. Found while working on the above.
Two new Game Master sliders: AI driving speed, and horn reaction cooldown. 121 attributes total.
Game Version
1.8.0.10
Created
Mon, 31 Aug 2026 16:10:54 GMT
Last Modified
Mon, 31 Aug 2026 16:11:07 GMT

1.0.24

Everything since the last upload. That build injected 104 Game Master attributes; this one injects
119, across 69 script files.


Most of this release is not new features. It is four defects found by reading a live server's logs,
three of which meant a system that looked fine had never actually run. That matters more than
anything new, so it goes first.


---


## Fixed: AI were not taking cover, 98% of the time


One session logged "no cover found" **1,223 times against 22 successes**. That single number
explains "the AI do not take cover" better than any amount of behaviour tuning.


It was not the engine and not missing cover data. This mod's cover query was stricter than the
shipped game's own, in three ways, with no fallback when it found nothing. Compared against
`SCR_AICreateDefendBehaviorCoverQueryProps`, which is Bohemia's query for exactly this job:


- **Visibility checking.** Vanilla defend sets it false. This mod set it true, so every cover point
  needed a clear line to the threat. With no known enemy the mod synthesises one 200 m away, so men
  were being asked for a sight line to an imaginary point two hundred metres out. In a village
  almost nothing passes that.
- **Search centre.** Vanilla centres the search on the soldier. This mod centred it on the group,
  so every man searched one shared circle and the later ones competed for ground the earlier ones
  had already taken.
- **Minimum cover height.** Vanilla leaves it at zero. This mod required 0.9 m, rejecting every low
  wall, kerb and window sill in the search.


There are now three queries in descending strictness instead of one that failed silently. First to
return wins:


1. Ideal: facing the threat, sight line to it, above kerb height.
2. Vanilla: facing the threat, no sight line required. This is exactly what the shipped defend
   behaviour asks for, so a man landing here has the stock position, not a degraded one.
3. Any cover: centred on the man himself, any height, any orientation. Behind a wall facing the
   wrong way still beats standing in a field.


This is the change most likely to be visible in game.


## Fixed: bounding overwatch had never once run


Zero occurrences in a session full of firefights. Fire and movement is the flagship behaviour of
this mod and it had never executed on a server.


Bounding required Assault posture. The default posture is Auto, and Auto never produces Assault on
its own, so Assault existed only if a Game Master hand-set it on a specific group. Nobody does that
to a hundred AI. The feature was unreachable by construction, and its own code comment called that
"the cautious default", which is how it survived.


A feature nobody can reach is not cautious, it is absent. Every rail that matters is unchanged: not
garrisoned, not holding fire, not withdrawing, minimum group size, live contact in the range band,
and order arbitration.


## Fixed: one sighting produced dozens of identical orders


Contact sharing broadcasts to every nearby group, and each report ended in an investigate order
with nothing checking whether that group was already going there. The identical order for the
identical position was issued **42 times inside two milliseconds**, and 1,599 times across one
session. Every one re-tasked a group that was already moving, so squads never settled into the
search they had been given.


## Fixed: cover queries retried at ground with no cover in it, forever


One anchor was retried **226 times in a session**, each attempt spending a query per man from a
shared budget. That was budget the groups which could find cover then did not get, so the bug was
quietly making the feature worse for everyone else.


---


## New: the mod tells you whether it is actually working


Around twenty-five systems, and until now no way to tell which of them ever did anything. A system
that never fires writes nothing at all, so silence in a log could mean it worked and had nothing to
do, or that it was broken, or that its trigger is impossible on your map.


Every system now reports either that it did its job or that it declined and why. Printed every ten
minutes and on demand from a Game Master button:


```
[SilenceAI]   Garrison: 14 fired
[SilenceAI]   Ambush range trigger: NEVER FIRED. Last blocked by: released by
              incoming fire before any enemy reached the trigger circle (5 times)
```


There is also a **reachability report** at boot, which states the mod's own preconditions in plain
sentences and warns when a system is switched on but gated behind something that makes it
unreachable. Every check in it exists because that exact bug has happened.


## New: movement that does not look mechanical


**They were walking in a line, and that was this mod's fault.** The travel formation was set to
Column, which in the shipped game is single file at 3 m spacing. Now Staggered Column, and varied
per group so two patrols crossing the same field do not look like copies of each other.


**Men within a group now walk at different speeds.** Every vanilla AI has identical maximum speed,
so a group holds its formation offsets perfectly, forever. Real sections string out and close up.
Default spread is about the difference between the front and back of a section on a long approach.
Suspended under fire.


**AI stop jogging everywhere.** Groups now walk when nothing is happening and run once it does.
Vanilla effectively always runs, including to objectives with no reason to hurry. Beyond looks,
this gives players time to get ahead of a patrol and set something up.


**AI stop standing upright in a firefight.** A cap on how upright a group may stand while it can
see an enemy, and while garrisoned. A cap and not an order: it does not force anyone down, it stops
anything standing them up.


**They no longer walk straight at you.** Approach paths during a firefight are now biased off the
direct line. This is combat movement only and does nothing to how a patrol walks to a waypoint.


## New: AI choose where to defend


Everything defensive answered "how do I hold this spot" and nothing answered "is this the right
spot". Groups anchored wherever they stopped walking, so a section that halted in a field dug into
the field.


A group about to garrison now evaluates positions around itself, facing where trouble is expected
from, and moves to the best one first. Scored on cover that can see the approach, and on elevation.
Every candidate is navmesh-validated, it runs once per group, and it never second-guesses a
scenario or Game Master placed defend waypoint.


Note: this currently only reaches groups a Game Master garrisons by hand, because automatic
garrison of waypointless groups is off by default. The boot report says so.


## New: ambush killzones can be placed


The hold-fire trigger was a circle centred on the AI, which is a proximity alarm rather than an
ambush. It can now be placed: on the group's waypoint, so you site a killzone by siting the
waypoint, or frozen at a marked point. Optionally sized by the waypoint's own radius, so you draw
the killzone on the map.


Plus a self-defence range, so a killzone placed two hundred metres away can never leave a squad on
hold fire while a player walks through the middle of them.


## New: freeze and weapons safe


Stop an AI moving, or stop an AI shooting, on one soldier, a whole group, or every AI on the
server. Useful for staging a scene, holding a QRF on a start line, or freezing a fight to sort out
a problem.


Honest caveat: the engine calls these are built on are only ever used on the local player in the
shipped game, so whether the AI input path passes the same gate is unverified. Each restraint
therefore applies several independent mechanisms. The weapons restraint has a proven fallback in
vanilla's own group hold-fire; the freeze does not, so it is the one to test first.


---


## Smaller


- Smoke and flares are one four-step control (Off, Rare, Normal, Often) instead of a toggle plus
  two interacting numbers.
- Difficulty presets no longer stamp over your own tuning on every restart. They apply once.
- The config is provably read once per session, at boot, and never re-read.
- Clients no longer write a config file they never use into their own profile directory.
- The log is readable again. This mod was writing 7,727 of 9,116 lines in one session's script log.
Game Version
1.8.0.10
Created
Mon, 31 Aug 2026 11:12:33 GMT
Last Modified
Mon, 31 Aug 2026 11:12:49 GMT

1.0.23

119 Game Master attributes (was 104), 69 script files.
Most of this release is not new features. It is four defects found by reading a live server's logs, three of which meant a system that looked fine had never actually run.
Fixed: AI were not taking cover, 98% of the time
One session logged "no cover found" 1,223 times against 22 successes. The mod's cover query was stricter than the shipped game's own in three ways, with no fallback when it found nothing. It required a sight line to the threat (vanilla's defend query does not), it centred the search on the group instead of the soldier so men competed for the same ground, and it rejected anything under 0.9 m so every low wall and window sill was excluded. There are now three queries in descending strictness, first to return wins. This is the change most likely to be visible in game.
Fixed: bounding overwatch had never once run
Zero occurrences in a session full of firefights. Fire and movement required Assault posture, the default posture is Auto, and Auto never produces Assault on its own. The feature was unreachable by construction.
Fixed: one sighting produced dozens of identical orders
Contact sharing issued the identical investigate order for the identical position 42 times inside two milliseconds, 1,599 times across one session, re-tasking groups that were already moving so they never settled into the search.
Fixed: cover queries retried at ground with no cover in it, forever
One anchor was retried 226 times in a session, spending shared query budget that groups which could find cover then did not get.
New: the mod tells you whether it is working
Every system now reports that it did its job, or that it declined and why, printed every ten minutes and on demand. There is also a reachability report at boot that warns when a system is switched on but gated behind something that makes it unreachable.
New: movement that does not look mechanical
They were walking in a line because the travel formation was Column, which is single file at 3 m spacing. Now Staggered Column, varied per group. Men within a group walk at different speeds. AI walk when nothing is happening and run when it is, instead of jogging everywhere. AI stop standing upright in a firefight. Approach paths during combat no longer run straight at you.
New: AI choose where to defend
Groups used to anchor wherever they stopped walking, so a section that halted in a field dug into the field. They now evaluate positions facing the expected approach and move to the best one first, scored on cover that can see the approach, and on elevation.
New: ambush killzones can be placed
Site a killzone by siting the group's waypoint, or freeze it at a marked point, optionally sized by the waypoint's own radius. Plus a self-defence range, so a killzone placed two hundred metres away can never leave a squad on hold fire while a player walks through the middle of them.
New: freeze and weapons safe
Stop an AI moving, or stop it shooting, on one soldier, a whole group, or every AI on the server. The engine calls behind these are only ever used on the local player in the shipped game, so each restraint applies several independent mechanisms. The weapons restraint has a proven fallback, the freeze does not.
Smaller
Smoke and flares are one four-step control instead of a toggle plus two interacting numbers. Difficulty presets no longer overwrite your own tuning on every restart. The config is read once at boot and never re-read. Clients no longer write a config file they never use. The log is readable again, down from 7,727 of 9,116 lines in one session.
Game Version
1.8.0.10
Created
Mon, 31 Aug 2026 07:40:19 GMT
Last Modified
Mon, 31 Aug 2026 07:40:36 GMT

1.0.22

fixing the AI pathing
Game Version
1.8.0.10
Created
Mon, 31 Aug 2026 05:39:37 GMT
Last Modified
Mon, 31 Aug 2026 05:39:53 GMT

1.0.21

Placing the ambush
The hold-fire ambush released when an enemy came within the trigger distance of one of the AI. That is a proximity alarm, not an ambush. A real one is laid on a place: the section sits back from a road bend and springs when someone reaches the bend, not when someone reaches them.
The trigger is now a circle with a position, and there are three ways to place it.
Group is the old behaviour, measured from the men. Still the default, so nothing changes for an existing setup.
Waypoint measures from the group's current waypoint. This is the useful one and it needs no new tool, because placing a waypoint is already how you tell a group where to care about. Put the section in the treeline, put their waypoint on the ford, and they hold until someone reaches the ford. Turned on server-wide it makes every scenario-placed defend waypoint a killzone for free.
Mark freezes a point on one specific group. It is captured at the moment you select it, from the group's waypoint if it has one and from where they are standing if it does not, and the circle then stays put when the group moves. Select Mark again to move it.
Also added: Killzone uses waypoint radius, which sizes the circle from the waypoint's own completion radius instead of the distance slider. That radius is the circle you drag when you resize a waypoint in Game Master, so with it on you are drawing the killzone on the map directly.
Five new Game Master attributes, two on the group panel and three on the scenario page. They are appended to the end of the attribute list, so every existing attribute keeps the network index it had. 104 total.
Ambush self-defence range
A killzone placed two hundred metres away could otherwise have left a squad sitting on hold fire while a player walked through the middle of them. An enemy within the self-defence range of any member now releases the ambush regardless of where the circle is. Default 40 m, adjustable, 0 disables it.
This joins the safety rules the ambush already had: incoming fire always releases, the hold-time failsafe always releases, and only groups that were on the vanilla default combat mode when the mod first saw them are touched at all. None of these controls can produce AI that stand there refusing to shoot back.
Two limits worth knowing
The trigger only fires on an enemy the group can perceive. A killzone the group cannot see into will not spring, so place them where they can observe it.
Per-group trigger settings are runtime overrides and do not survive a restart, the same as every other per-group override. Waypoint mode is the one that persists, because waypoints are scenario data and are reloaded.
Smoke and flares as a four-step rarity control
Smoke and illumination flares were a toggle plus, underneath, a separate chance and a separate cooldown. That is the wrong shape for the question anyone actually asks, which is "can they do this less" rather than "which of these two numbers do I change, and how do they interact".
Both now have a single four-position control: 0 Off, 1 Rare, 2 Normal, 3 Often. It scales the chance and the cooldown together, so one step genuinely means less smoke rather than the same rhythm with gaps in it. Rare maps to 0.35 rather than 0.5, because halving something that already had a two minute cooldown is not a change anyone notices.
The separate smoke on/off toggle is gone, since position 0 is Off and two ways to say "off" is how a server ends up with smoke disabled for a reason nobody can find. An existing config with that switch off reads back as Off rather than silently switching smoke on again at upgrade.
Flares gained a chance roll they did not have, placed after the check for whether anyone in the group is actually carrying illumination, so a group that was never going to fire does not burn the roll and sit on a cooldown for nothing.
The underlying chance and cooldown are still editable in the config for anyone who wants a different base rhythm rather than simply more or less overall.
Fixed: difficulty presets stamped over your own tuning on every restart
Reported as "the server properties aren't saving, is it overriding from the file". It was, and that was a design mistake rather than a bug.
The preset re-applied on every load, so any hand edit or Game Master change to a field the preset owns was silently discarded at the next restart. That is correct if you think of a preset as a permanent difficulty mode, and wrong if you think of it as a starting point. Everyone thinks of it as a starting point.
Applying is now a one-time event. The file records which preset its values already reflect. When the preset name stops matching that marker, it applies once and the marker updates. From then on the file is the truth and your own tuning survives restarts untouched. Change the preset name when you want to start over from a different baseline. The Game Master slider forces a re-apply, because an admin who has just picked a preset expects it to take effect immediately.
Changed: the config is provably read once per session
Nothing was re-reading it mid-session, but that was true by accident rather than by design, and a re-read would silently discard whatever an admin had just changed at an unpredictable moment.
The read is now guarded by an explicit one-shot flag, so even a recreated instance cannot consult the file a second time. The contract, now written down in docs/CONFIG.md: the file is read at session init and never again, and every live change is written out. Editing the file on a running server does nothing until restart, by design.
Fixed: clients were writing a config file they never use
Checking the above surfaced a real problem. A player joining a modded server had SilenceAI_config.json written into their own profile directory: a file they did not ask for, that nothing reads, describing settings decided entirely server side. Saving now returns early on a client, and the "could not create config" startup warning is server-only.
Game Version
1.8.0.10
Created
Mon, 31 Aug 2026 03:16:39 GMT
Last Modified
Mon, 31 Aug 2026 03:16:55 GMT

1.0.20

allowing setting to be set prior to first boot on init, also fixing a garsion but to ensure sniper team isnt stolen for other tasking
Game Version
1.8.0.10
Created
Sun, 30 Aug 2026 18:27:12 GMT
Last Modified
Sun, 30 Aug 2026 18:27:29 GMT

Showing 1 to 30 of 40 results

Rows per page

Next