SilenceAI - Enhanced Combat

by Silence_AUS

1.0.19

Everything since the last upload. Five releases in one.



=== THE AIMBOT PROBLEM ===


Three changes, all traced to specific constants rather than guessed at.


RANGING IN. Vanilla decides hit or miss with a single Gaussian roll sized by skill tier, and that
roll is identical on the first round of an engagement and the fortieth. That is why AI feel binary:
either they have you or they do not, and rounds never crack past and then get closer. Aim error now
scales with how long a shooter has been on you, so a squad opening up misses first and walks its
fire in over about four seconds. Being shot at becomes a process with a counter, which is breaking
line of sight and moving, rather than a dice roll. Settled shooters end up slightly better than
vanilla, so aggregate lethality is roughly preserved and only the shape changes.


LONG RANGE ERROR. Vanilla's distance curve clamps at 215 m and stays flat forever, so an AI
shooting from 600 m has exactly the same error multiplier as one at 215 m. Past a couple of hundred
metres, distance stops costing them anything at all. There is now a tail from 250 m to 700 m.
Everything below 250 m is untouched.


SETTLE TIME. The pause between acquiring a target and firing has a base of 0.4 seconds, and that
number is the whole "they snapped onto me instantly" feeling. It is now scalable, with separate
multipliers for machine guns and marksmen.



=== PERCEPTION AND HEARING ===


PERCEPTION MODEL. Vanilla picks recognition speed purely from threat state: SAFE 1.0, VIGILANT 2.5,
ALERTED 2.5, THREATENED 0.4. An AI actually under fire is six and a quarter times WORSE at
recognising people than one that is merely alert, so your first shot from range makes them blind to
you and they never find the shooter. Those four values are now configurable, with THREATENED
defaulting to 1.5 so fire sharpens them instead. Optional long range compensation offsets the
angular size falloff in the eye sensor.


GUNSHOT HEARING. Unsuppressed shots are audible to AI at 500 m and suppressed at 100 m, hardcoded.
Beyond that, unless the round passes within 13 m of somebody, no event is generated at all and the
AI are not ignoring your shot, nothing ever tells them it happened. Now configurable, defaulting to
900 m and 250 m. Vanilla's sound travel delay and supersonic crack handling are kept exactly.


FIXED: only the group leader could hear. Vanilla propagates a heard gunshot into group perception
only when the man who heard it IS the leader, so a squad whose leader is out of earshot learns
nothing even though half of it heard the shot clearly.


SUPPRESSOR AWARENESS. Vanilla uses the suppressed flag for one thing, picking 100 m instead of
500 m, so inside 100 m a suppressed shot gives your position away as precisely as an unsuppressed
one. A suppressor mainly removes the muzzle report the ear uses to take a BEARING, so suppressed
shots now register with a scattered position that grows vaguer with range.



=== BEHAVIOUR ===


SNIPER TEAMS. The game already tags snipers via EUnitRole.SNIPER and the only thing in the shipped
scripts that reads it is a voice line picker. Groups carrying a scoped rifle now get counter-sniper
behaviour: the marksman and a spotter are held out of the general advance, moved to a position with
an actual sight line to the estimated shot origin, and made to glass it through binoculars. They
wait rather than charging the bearing. Patience is the feature.


AI CALLOUTS. ECommunicationType ships 22 recorded voice lines and the shipped game only ever speaks
8 of them, most once. Eleven are now wired to the systems that were already doing the work: contact,
flanking, covering, moving, reloading, low on ammo, man down, target lost, clear. A squad that
flanks without a word appears to teleport around your side; one that calls it is a squad you can
counter-play by ear.


SEARCHING. Vanilla's memory is binary, with no state in which AI are WRONG about where you are.
Losing a contact is now a sweep of several points that can fail, a configurable share of them
deliberately in the wrong place, ending in a called clear and a genuine stand-down. Breaking line
of sight and MOVING now loses them; sitting still does not.


REACTING TO THE DEAD. EAIDangerEventType declares Danger_Deadbody, and that declaration is the only
reference to it in all 5,809 shipped script files. Nothing emits it, no reaction handles it, so
patrols walk through the bodies of their own squad without breaking stride. AI now notice friendly
dead, call it out, go properly alert and stay alert, and hunt outward from where the man fell.


CASUALTY EXTRACTION. Vanilla sends the medic to wherever a casualty was standing when he was hit,
which is usually the exposed spot, and that is how one casualty becomes two. A wounded but conscious
man now walks himself back to cover first, and only then is the squad told he needs treating.
Note this cannot drag anyone: there is no character dragging API in the game, so a fully
unconscious man stays where he fell.


RELOAD DISCIPLINE. A man who runs his magazine dry in contact calls reloading, and the nearest
teammate calls covering and raises his rate of fire. Teaches players that pushing on the pause is
a trap.


TACTICAL GRENADES. The throw-grenade-at-a-position message supports frags and is used in exactly
one place in the whole game, always with smoke. Nothing in vanilla ever decides to grenade a man
behind a wall. AI now post a frag at a known position they cannot see into. Heavily gated, because
the intent is pressure to move rather than death by grenade.


PEEK VARIATION. A defender who re-exposes from the same window every time is killed by holding a
crosshair there and waiting. Holding men now occasionally shift to a different position covering
the same threat.


BIPODS. Both bipod nodes ship and appear in zero of the 113 behaviour trees, so no gunner in
Reforger has ever deployed one. Machine gunners and marksmen now deploy when static and in contact
at range, and fold again when the group moves.


FORMATIONS. Vanilla sets formation once when a move activity starts and never changes it, so a
section walks into an ambush in the same shape it used on the road. Groups now travel in column,
shake out into wedge on contact, and go to line when assaulting.



=== ADMIN ===


DIFFICULTY PRESETS. One string in $profile:SilenceAI_config.json:


    "m_sDifficultyPreset": "VETERAN"


CUSTOM, RECRUIT, REGULAR, VETERAN, ELITE, MILSIM. Applied at load, every restart, with nobody
logging in to set anything. Also a Game Master slider, and changing it there applies to AI already
in the field AND writes the name back to the config so it survives the next restart.


A preset owns the twenty or so dials that decide how DANGEROUS the AI are. Your config file still
owns which systems run, so "Elite but no artillery" is a valid combination that persists. CUSTOM
applies nothing and leaves existing configs behaving identically.


Milsim is deliberately not the most accurate preset. It sits close to Veteran on aim and well above
Elite on awareness and patience, because a milsim server should lose firefights to tactics rather
than to a laser.


AIRCRAFT CREW HANDLING. When another mod puts an AI crew in a helicopter, that crew is an ordinary
AI group and SilenceAI was running twenty-odd infantry systems against it. Telling a pilot to take
cover or mount a truck would make another mod's AI worse purely by having this installed. Crews in
aircraft are now detected and excluded from ground logic. Contact sharing is deliberately kept on,
because a helicopter is the best observer on the map and passing what it sees to the ground squads
costs nothing.



=== NOT INCLUDED ===


No AI helicopter piloting. Four gates block it and three are hard: no shipped helicopter carries an
AI control component and there is no runtime way to add one, the flying movement component exists
but appears on zero of 19,432 prefabs so has never been exercised, and there is no air navmesh.
There is also no cyclic input exposed to script at all, so you cannot pitch or roll a helicopter
even in principle. Vanilla helicopters have no gunner positions either.


No casualty dragging. There is no character dragging or carrying API exposed to script anywhere in
the game.


REAPER_AiHelicopters is licensed Arma Public License No Derivatives, so its code was deliberately
not read and nothing here is based on it.



=== GAME MASTER ===


89 attributes across three pages. Scenario changes persist to the config file and apply to AI
already in the field, not just the next spawn.
Game Version
1.8.0.10
Created
Sun, 30 Aug 2026 10:54:11 GMT
Last Modified
Sun, 30 Aug 2026 10:54:22 GMT

1.0.8

reupload with all change notes:
v0.8 through v0.14 - Major update

Large one. Fifteen new systems, one structural overhaul, and two long standing complaints traced to their actual cause in the base game rather than guessed at.


=== THE TWO BIG FIXES ===

PERCEPTION. Reported as "AI perception is poor past a few hundred metres and they never find a shooter who engages them from range".

Range is only part of it. The AI eye is capped at 750 m on the character prefab, and recognition speed falls off with a target's angular size. Neither of those is reachable from script by any mod. The real cause is vanilla's perception table, which is picked purely from threat state:

  SAFE 1.0    VIGILANT 2.5    ALERTED 2.5    THREATENED 0.4

An AI actually under fire is six and a quarter times worse at recognising people than one that is merely alert. Your first shot from 400 m makes them blind to you, so they never locate the shooter.

Those four values are now configurable. THREATENED defaults to 1.5 and ALERTED to 3.0, so taking fire sharpens them instead of blinding them. Optional long range compensation ramps recognition speed from 150 m to 600 m to offset the angular size falloff. Set 1.0 / 2.5 / 2.5 / 0.4 with compensation off for exactly stock behaviour.

BUILDINGS. Reported as "AI will not take up positions in buildings".

This was missing data in the base game, not a bug. Vanilla garrison searches for authored CoverPost positions. Of the 7,714 structure prefabs shipped in the game, six have one, and all six are military buildings. Not one ordinary house, shop, barn or apartment block.
Garrisoning a normal town has literally nothing to find, so the group correctly gave up and stood around.

SilenceAI now queries the engine's own navmesh cover instead, choosing cover that has line of sight to the threat, and locking each position so no two men take the same window. AI hold real buildings and shoot out of them. The authored path is still used wherever a map actually provides one.


=== NEW SYSTEMS ===

CROSS-GROUP CONTACT SHARING. Vanilla groups do not talk to each other at all, so six squads defending one base fight six separate wars and you peel them off one at a time. Contacts now pass to friendly groups within radio range, rate limited, carrying a position rather than perfect knowledge, so it reads as someone calling it in.

INVESTIGATE. Groups that lose a contact go and look at the last known position instead of forgetting it happened.

BASE OF FIRE. A group in contact detaches one member to suppress while the rest manoeuvre.
Picks the machine gunner where there is one, never the medic, never a casualty, never the last man.

BOUNDING OVERWATCH. Assaulting groups split in two, one element suppressing while the other moves, then they swap.

NIGHT ILLUMINATION. Groups in night contact fire illumination flares. Vanilla's own flare feature works fine, it is simply almost never called; this calls it on a sane trigger.

WITHDRAWAL. Groups that are genuinely beaten pull back rather than dying in place.

AMMUNITION SHARING. Low on magazines they ask the squad before looting a body, which is both more realistic and much faster.

CASUALTY RESPONSE. Groups react to taking losses rather than ignoring them.

ARTILLERY FIRE MISSIONS. A group in sustained contact calls a friendly crewed gun onto the enemy. Off by default and deliberately grudging: 45 seconds of contact before anyone calls, four rounds per mission, five minute cooldown, and never onto a fight the calling group is standing inside.

STATIC TURRET MANNING. Garrisoned and holding groups crew nearby unoccupied static guns and get off them again when the group withdraws. Capped so a squad does not vanish into turrets.

PER-SOLDIER TUNING. Perception, alertness, aggression and skill can now be set on one individual, not just per group or server wide.

TRANSPORT. Vanilla already has the whole mount, drive, dismount chain, but only ever drives vehicles explicitly registered to a group, which almost never happens, so patrols walk past perfectly good trucks. SilenceAI supplies that registration, then adds the discipline vanilla lacks: only mount when the trip is worth it, debus short of the objective, and bail out on sustained contact instead of riding into an ambush. Ground vehicles only, and off by default. There is no helicopter or aircraft AI anywhere in Reforger. This does not add flying.


=== STRUCTURAL ===

ORDER ARBITRATION. Nineteen systems were sending orders to the same soldiers through the same mailbox at the same priority with no scheme for who wins. That does not produce a broken mod, it produces a twitchy one: a man told to suppress, then investigate, then retreat, visibly dithering. Every order now passes through an arbiter that refuses anything less important than what the soldier is already doing. Ranking, highest first: Game Master order, withdraw, garrison, suppress, flank, investigate, illuminate. A human's explicit order beats everything.

ONE CONTACT SWEEP INSTEAD OF FIVE. Five systems had each grown their own near-identical "where is the nearest enemy" routine, and worse than the waste, they disagreed: four different staleness cut-offs meant two systems could hold different views of whether the group was even in contact. Resolved once per group per tick now, with one definition of contact.

STRUCTURED LOGGING. Every line is tagged with the subsystem that wrote it, so you can watch one system without the rest:

  [SilenceAI][Garrison] no authored CoverPost near <pos>, using navmesh fire positions instead   [SilenceAI][Contact] reported contact to 2 nearby group(s)

Four levels plus an optional single-subsystem filter. Errors and warnings always print. Log level is a scenario attribute, so it changes live rather than by editing a file and restarting.


=== GAME MASTER ===

56 attributes across three pages: 38 scenario-wide, 10 on a selected group, 8 on a single soldier including hold position, occupy position and man turret. Scenario changes persist to the config file and apply to AI already in the field, not just the next spawn.


=== NOTES ===

Still script-only. No prefab edits, no behaviour-tree edits, no vanilla config overrides.
Game Version
1.8.0.10
Created
Sat, 29 Aug 2026 12:18:16 GMT
Last Modified
Sat, 29 Aug 2026 12:18:35 GMT

1.0.7

v0.14 - Perception overhaul, building fire positions, transport

FIXED: AI perception was poor at range, and worse still once you shot at them.

Range is only part of it. The AI eye is capped at 750 m on the character prefab and
recognition speed falls off with a target's angular size, neither of which any script mod
can change. The real cause is vanilla's perception table, picked purely from threat state:

  SAFE 1.0    VIGILANT 2.5    ALERTED 2.5    THREATENED 0.4

An AI actually under fire is six and a quarter times worse at recognising people than one
that is merely alert. Your first shot from 400 m makes them blind to you, so they never
find the shooter.

Those four values are now configurable. THREATENED defaults to 1.5 and ALERTED to 3.0, so
taking fire sharpens them instead. Optional long range compensation ramps recognition speed
from 150 m to 600 m to offset the angular size falloff. Set 1.0 / 2.5 / 2.5 / 0.4 with
compensation off for exactly stock behaviour.

FIXED: AI would not take up positions in buildings.

This was missing data in the base game, not a bug in the mod. Vanilla garrison searches for
authored CoverPost positions. Of the 7,714 structure prefabs shipped in the game, six have
one, and all six are military buildings. Not one ordinary house, shop, barn or apartment
block. So garrisoning a normal town has literally nothing to find.

SilenceAI now queries the engine's own navmesh cover instead, choosing cover that has line
of sight to the threat, and locking each position so no two men take the same window. AI
hold real buildings and shoot out of them. The authored path is still used where a map
provides one.

NEW: Transport.

Vanilla already has the whole mount, drive, dismount chain in MovePlanning.bt. It only ever
drives vehicles explicitly registered to a group, which almost never happens, so patrols
walk past perfectly good trucks. SilenceAI supplies that registration, then adds the
discipline vanilla lacks: only mount when the trip is long enough to be worth it, debus
short of the objective, and bail out on sustained contact rather than riding into an ambush.

Ground vehicles only. All 113 shipped behaviour trees were checked and there is no
helicopter or aircraft AI in Reforger at all. This does not add flying and does not claim
to. Off by default.

CORRECTION to the v0.13 notes: SCR_AIVehicleCombatActivity was described as dead code. It
is not. It has no behaviour tree because it is pure script, and registering a vehicle to a
group switches on vanilla's own mounted weapon crewing as a side effect.

Seven new Game Master attributes, 56 total across three pages.
Game Version
1.8.0.10
Created
Sat, 29 Aug 2026 12:11:05 GMT
Last Modified
Sat, 29 Aug 2026 12:11:19 GMT

1.0.6

changing up the AI behaviour allowing the AI to be able to hold positions and defend
Game Version
1.8.0.10
Created
Sat, 29 Aug 2026 09:10:11 GMT
Last Modified
Sat, 29 Aug 2026 09:10:26 GMT

1.0.5

Despawn fixes and sniper observer
FIXED: AI despawn range control did not work. Four causes, all resolved.
The ambient patrol spawn point re-applies its own lifecycle distances over the top of anything set, at spawn, on save restore and on agent changes, so the setting was being reverted moments after it was applied. Vanilla also hard-clamps that system to 1000 m. Now handled at the source, so every ambient patrol picks the value up and it survives re-application.
Groups were only tracked once they had members, but a dormant group has none. The groups that most needed longer despawn range were the ones the fix could not see. Groups are now tracked from creation.
The mod's internal timer only started when the first AI spawned, so a world whose groups all begin dormant never ran anything.
Ambient patrols could delete themselves permanently if a player reached their position while the members could not spawn. Now optional.
NEW: Sniper observer.
The engine keeps AI alive near an OBSERVER, not near a player, and observers can be added. While you are aiming, SilenceAI places a temporary observer out along the line you are looking down, so what you have in your scope stays alive and everything else costs nothing. Cost scales with player count rather than map size, so unlike raising the global despawn ring this can be left on.
Set your engagement range under Game Settings, or per group in the group attributes.
Game Version
1.8.0.10
Created
Thu, 27 Aug 2026 13:02:20 GMT
Last Modified
Thu, 27 Aug 2026 13:02:34 GMT

1.0.4

name change
Game Version
1.8.0.10
Created
Thu, 27 Aug 2026 12:34:20 GMT
Last Modified
Thu, 27 Aug 2026 12:34:34 GMT

1.0.3

Large release. Everything below was written against the vanilla script source unpacked from the
installed game, and `VERIFICATION.md` records which vanilla file each API came from.


### New: garrison and ambush


- Defending groups now take building firing positions instead of standing outside. This does not
  add a behaviour; it selects the Defend waypoint preset that searches CoverPost smart actions at
  full fraction, then fires the waypoint's properties-changed invoker so a group already running
  its defend activity re-allocates rather than waiting.
- Garrisoned groups hold fire until an enemy crosses a trigger distance or someone shoots at
  them. Incoming fire always releases them, and a hard time failsafe releases them regardless.
- Garrison breakout, three policies: hold always, break out on the ambush trigger, or break out
  when the group is losing (casualty fraction or pinned fraction). Breaking out sets the defend
  preset's smart-action fraction to zero and releases the reserved positions, so vanilla's next
  allocation puts them on sector defence around the same ground instead of ripping the waypoint
  away.


### New: posture and manoeuvre


- Posture per group and globally: Auto, Defend, Assault. Assault groups never garrison, never
  hold fire, and have their aggression floored upward.
- Group flanking. After a configurable time in contact, an eligible group is sent to a position
  on a bearing off the axis of contact, snapped to the navmesh. The waypoint is inserted at the
  front of the queue and removed afterwards, never replacing the group's real orders, and every
  flank has a hard timeout.
- Combat-move pacing multiplier. Vanilla waits 20 seconds in cover while suppressed and 5
  otherwise before looking for a new position, which is the main reason firefights look static.


### New: perception, reaction and aggression


- Three tuning dials resolved per group, then per faction, then server default.
- Alertness seeds the vanilla threat system so a group is Vigilant or Alerted before contact
  instead of sitting in Safe, which is the worst spotting state in the game.
- Aggression drives rate of fire, engagement-range discipline and suppression resistance together.
- Per-faction profiles in the config.


### New: accuracy controls


- Global aim-error scale. Lower is more accurate. This is the dial Bohemia left hardcoded as
  `AIMING_ERROR_SCALE = 1.0` with the comment "TODO: game master and server option".
- Accuracy floor, so stacked suppression, range and leader-loss penalties cannot drag a unit to
  the bottom of the skill ladder.


### New: despawn range


- The 1.8 proximity lifecycle deletes a group's members once every observer is beyond 800 m,
  which is why long-range engagements empty a position. Now controllable globally and per group
  (use global, vanilla, custom distance, never despawn) through the public `SetLifecyclePolicy`.
- Original rings and policy are captured before any change, so "vanilla" restores what a spawner
  actually configured rather than assuming the stock numbers. Extending never shrinks a group
  below what its spawner set.


### New: smoke discipline


- Automatic AI smoke is gated with a group cooldown and a requirement that someone is genuinely
  pinned. Only the automatic path is affected; smoke placed by a Game Master through a Deploy
  Smoke Cover waypoint is untouched.


### New: Game Master panel


- 28 attributes across two pages, 10 per selected group and 18 scenario-wide.
- Registered from script rather than by overriding the vanilla attribute list, so nothing
  collides with other mods and there is nothing to re-merge after a game update.
- Scenario changes persist to the config file and are re-applied to AI already in the field.


### Changed


- Combat range now classifies weapons with vanilla's own `GetSelectedWeaponType()` and can
  optionally use vanilla's computed effective range, replacing the prefab-name heuristic.
- Suppression now also ingests projectile hits and grenade landings, not only weapon fire and
  explosions.
- Rearm matches magazines on `BaseMagazineComponent` rather than `MagazineComponent`, so belt
  boxes and modded magazine components are covered.
- Per-man skill variance so a squad is not uniformly capable.


### Fixed


- `EAISkill.NOOB` exists in the shipped game (`NONE, NOOB = 10, ROOKIE = 20, REGULAR = 50,
  VETERAN = 70, EXPERT = 80, CYLON = 100`). The previous "ROOKIE is the floor" note came from an
  outdated mirror and was wrong. The skill ladder now uses all six tiers.
- Game Master attributes returned null when no group state existed locally. Group state is
  server-side only, so on a dedicated server a Game Master's client would have seen no SilenceAI
  attributes at all.
- Project had two `.gproj` files with different GUIDs. Resolved to the single published
  `addon.gproj`; the unpublished duplicate is retained under `_to_delete/`.


### Notes for the curious


Three pieces of AI machinery exist in the shipped game but are referenced by none of its 113
behaviour trees, so they never run: bounding overwatch (`SCR_AIGetOverwatchMembers`), bipod
deployment (`SCR_AISetBipod`, `SCR_AIDecoMachinegunnerBipod`), and the accuracy scale above.
Automatic AI smoke is requested from exactly one behaviour tree, `ActivityHeal.bt`, so "AI throw
smoke constantly" is really "AI get wounded constantly".


### Known limitations


- No high command, rank system, vehicle combat, return-to-position leash, or per-character
  attributes yet.
- No cross-group communication. Vanilla has none either: the AI mailbox is per-group, so groups
  do not share contacts. This is the largest remaining gap and the next planned feature.
- Stance, formation, movement speed and combat mode are deliberately not duplicated, because the
  base game already ships working Game Master attributes for all four.
Game Version
1.8.0.10
Created
Thu, 27 Aug 2026 12:32:20 GMT
Last Modified
Thu, 27 Aug 2026 12:32:33 GMT

1.0.2

adjusting the behaviours
Game Version
1.8.0.10
Created
Wed, 26 Aug 2026 12:55:02 GMT
Last Modified
Wed, 26 Aug 2026 12:55:17 GMT

1.0.1

updating to 1.8
Game Version
1.8.0.10
Created
Thu, 13 Aug 2026 12:31:29 GMT
Last Modified
Thu, 13 Aug 2026 12:31:43 GMT

1.0.0

Game Version
1.7.0.54
Created
Thu, 13 Aug 2026 10:56:20 GMT
Last Modified
Thu, 13 Aug 2026 10:56:35 GMT

Showing 31 to 40 of 40 results

Rows per page