EXPBG Realistic AI Mod

by M.Pac

Contributors

K.Edgar

1.1.0

Game 1.9 (game 1.9.0.37). Roadmap 2026-11 (owner: "it still feels janky ... bound with covering fire not sprint towards
enemy ... they see the enemy but dont shoot it takes a second or two"). Settings freeze: no new keys.

**Not fixed by this release.** From seeing an enemy to the first round still takes about 1.6 s (median: Regular 1.63 s, 1.72 s on
1.0.9; Veteran 1.63 s, 1.71 s on 1.0.9), against targets of 0.6 s Regular and 0.4 s Veteran. The complaint that they see the
enemy but take a second or two to shoot is still open. Regular visible hit share is 9.85 %, against 10.9 % on 1.0.9 and a
target of 12 %, inside noise on 9 fights per arm. Sprinting toward a visible enemy is down to about 4 % (1.0.9: 9.5 % Regular,
12.3 % Veteran; target under 5 %). Stance flips at AI LOD 1 rose from 0.25 to 0.328 per minute (bar 0.6). The rain range has
not been tested in game.

- **One skill dial** (#7): the soldier's skill (vanilla, or the GM Tools AI Global Skills tier when GM Tools is loaded)
  drives recognition, reaction, decide moment, hesitation, look-away, reaction spread, dash length and bound length.
  `m_fPerceptionVigilant`, `m_fPerceptionAlerted`, `m_fPerceptionThreatened`, `m_fReactionScale` and
  `m_fReactionFireSpread` now default to `-1` (auto by skill); a set value still overrides every soldier.
- **Faster recognition** (#8): vanilla identification decay (0.05, was 0.1); absolute recognition targets per threat
  state by skill (regular under fire 1.4, was 0.5); a man shot at recognises his shooter at least at 0.8 x his alerted
  speed; vanilla's perception constants are no longer redeclared (the effective factor was ambiguous); calm soldiers
  get the proximity look and boost for an enemy walking up in view within 40 m; a squad mate's contact callout turns a
  soldier without a target toward that spot with x1.3-1.7 recognition for 4 s (by skill); fire at him lifts recognition
  x1.5 for 5 s while not suppressed (boosts together at most x3); heavy rain shortens the range at which a new target
  is acquired to about two thirds, as fog does (a target already held is kept).
- **No 2 s look-away from a visible target** (#9): an undirected threat-sector escalation is not looked at while the
  current target was seen within 1 s; the look-away lasts vanilla's computed duration instead of a fixed 2 s, capped
  by skill (novice 2 s, regular 1.2 s, expert 0.7 s); a calm or vigilant soldier with an unknown contact decides at
  least every 0.55 s, and a fresh hostile is evaluated on the same decision.
- **First round without spray** (#10): no hesitation within 25 m (was 20 m); the decide moment (it holds his first move
  and stance drop, never his fire) capped by skill; garrison posts, Defend squads and IDLE-speed posts count as ready,
  never surprised; reaction-fire spread by skill (regular 2.2, was 4 for everyone); heard-direction bursts only as
  covering fire; a man on a manoeuvre leg (alternate position, assault) who sees his target in the clear
  within 200 m stops for one burst (at most once per 7 s; was: kept running beyond 80 m); a flank element keeps
  moving beyond 80 m while the base of fire shoots.
- **No weapon-down sprint toward the enemy** (#11): vanilla's long-range attack advance becomes an aimed crouch run
  toward the threat; open-ground sprints only under fire as a short dash; brain legs sprint only under fire; a squad
  on a GM Move/ForcedMove waypoint in contact runs instead of sprinting.
- **Bounding overwatch live** (#12): one fireteam element holds and fires while the other bounds (crouched runs of at
  most 25 m), in tactics mode 2 without the cover director.
- **Assault appetite by skill** (#13, first part): when the force ratio is not clearly favourable (under 1.5:1),
  a novice leader's squad leans toward the frontal final or building assault and a veteran's toward base of fire and
  flank (pattern score bias up to 0.15).
- A start-up warning when CRX Enfusion A.I. or AIO AI Overhaul is loaded with Realistic AI (D17).
Game Version
1.9.0.37
Created
Mon, 09 Nov 2026 00:39:16 GMT
Last Modified
Mon, 09 Nov 2026 00:39:31 GMT

1.0.10

Game 1.9 (game 1.9.0.37). Settings and defaults are unchanged. The approved behaviour trees are unchanged.

- **Rescues carry farther, and behind the squad.** With ACE Carrying, a casualty lying in the open or ahead of his
  squad is carried 15-45 m behind the squad, to a spot the enemy cannot see where there is one. Rescues are retried if a
  leg fails. If a smoke for the casualty was refused or failed, a carry may go without one while a squad mate is firing.
- **Covering fire during a rescue.** Squad mates off the rescuer's line are asked to cover him, and those who see no
  enemy fire at the enemy's last known spot when no squad mate is in the way. Covering a rescue overrides ammunition
  conservation.
- **Weapon back in hand.** The rescuer takes his weapon up after every rescue, and the rescue hold ends itself. A soldier
  whose hands stay empty for 3 s takes up his rifle again (key `m_bSidearmSwitchBack`).
- **Eyes on the threat, not on the sky.** Friendly shots no longer turn listeners up along the barrel, lofted friendly
  rounds only raise alertness, and high danger points are looked at on the ground below them. Enemy vehicle and
  helicopter gunners keep their height. Mates of a man who drops silently turn to the nearest known enemy, not the body.
Game Version
1.9.0.37
Created
Sun, 08 Nov 2026 17:13:08 GMT
Last Modified
Sun, 08 Nov 2026 17:13:34 GMT

1.0.9

Game 1.9 (game 1.9.0.37). Settings, defaults and the approved behaviour trees are unchanged; the approved rows' tree
gate fingerprints are unchanged.

- **Lighter script start-up (no gameplay change):** internal lists are created on first use and kept in container types
  the base game already has, lowering the #InitGlobals start-up load that crashes servers with large mod lists.
Game Version
1.9.0.37
Created
Sat, 07 Nov 2026 15:43:29 GMT
Last Modified
Sat, 07 Nov 2026 15:43:46 GMT

1.0.8

Game 1.9 (game 1.9.0.37). Settings, defaults and the approved behaviour trees are unchanged; the tree gate
fingerprint is unchanged.

- **Lower startup script budget for large mod lists on game 1.9 (#InitGlobals); safe with the InitGlobals Budget Fix
  mod; no gameplay change.** A probe on the full 138-mod list showed `static const` numbers and text cost nothing at
  script start, so every constant keeps its name, type and value (checked by script). The last non-constant static with an
  initializer in our own code (the ambient-light cache time stamp) now starts empty with a flag. The modded
  `SCR_AIDecideBehavior.s_aUpdateIntervals` table stays: vanilla initializes the same field anyway. The proximity
  alarm creates `SCR_AIWorld.s_OnAgentSpawned` and `s_OnAgentRemoved` if they are still null (the InitGlobals Budget
  Fix mod creates them on first use) before it subscribes.
Game Version
1.9.0.37
Created
Sat, 07 Nov 2026 11:00:51 GMT
Last Modified
Sat, 07 Nov 2026 11:01:08 GMT

1.0.7

Game 1.9 (game 1.9.0.37). The approved behaviour trees and the tree gate fingerprint are unchanged.

Released on the owner's decision after a short check. Measured against 1.0.6: more rounds down range and a faster first round at a known enemy, but soldiers kill less (about a quarter to a third fewer enemies per fight in the open) and the stare from spotting to first round is not shown shorter. Details in docs/TESTING.md.

- **Reaction fire**: soldiers open fire about half a second to a second sooner after finding an enemy, with poor aim at the
  body that tightens over about 2 s from his first round, and a man under fire answers at his last seen spot. A man with
  no target at all whom a round cracks past fires one short, inaccurate burst towards where he heard it from. New keys
  `m_bReactionFire`, `m_fReactionFireS`, `m_fReactionFireSpread`, `m_bReturnFireHeard`, `m_fReturnFireHeardGapS`; recognition under
  fire `m_fPerceptionThreatened` 0.2 to 0.5.
Game Version
1.9.0.37
Created
Sat, 07 Nov 2026 08:54:20 GMT
Last Modified
Sat, 07 Nov 2026 08:54:30 GMT

1.0.6

Game 1.9 (game 1.9.0.37). Settings, defaults and the approved behaviour trees are unchanged; the tree gate
fingerprint is unchanged.

- **Foliage concealment is counted once**: game 1.9's engine already blocks AI sight through bushes and leaves, so
  Realistic AI no longer adds its own foliage penalty (2.5 times the aim error, body only, no RAPID fire, single
  rounds beyond 50 m) on top. The penalty now applies only while the engine still sees the target through the
  leaves; up to 1.0.5 it stayed on after the engine had lost him, so a man in a bush was hidden twice.
- **No foliage ray for a lost target**: the foliage check runs only for a target the engine sees now, so no ray is
  spent on one it has lost.
Game Version
1.9.0.37
Created
Fri, 06 Nov 2026 06:22:58 GMT
Last Modified
Fri, 06 Nov 2026 06:23:05 GMT

1.0.5

Game 1.9 compatibility (game 1.9.0.37). Settings, defaults and AI behaviour are unchanged; the approved behaviour
trees, their entry methods and the tree gate fingerprint are unchanged.

- **Big modsets start again on game 1.9**: game 1.9 crashes at script start (`#InitGlobals`) when the loaded mods
  together use too many different typed lists and maps. Realistic AI now keeps its own objects in list and map types
  the game and the other EXPBG mods already use and reads them back with a type check (71 of its own types down to
  18), so the full campaign modset starts on a server. The squad smoke manager, the move arbiter's rocket hold and the
  building-opening list keep their types so the approved trees stay byte-identical.
Game Version
1.9.0.37
Created
Fri, 06 Nov 2026 02:28:00 GMT
Last Modified
Fri, 06 Nov 2026 03:01:18 GMT

1.0.3

Audit release: bug fixes, mod compatibility and performance from a full source audit (83 findings by 22 reviewers, each
checked by an independent skeptic: 65 confirmed, 11 refuted, 7 uncertain; none critical). Settings and defaults are
unchanged. The ten approved behaviour trees, the tree node library and every approved tree's entry methods are
byte-identical, so the tree gate still holds. Middleware 0.6.5 fixes the leader wire mismatches found in the same
audit.

- **Mod compatibility (every shot, server and clients)**: the muzzle-effect and launcher-backblast hooks and the RPG
  weapon-lock getters called the unmodded vanilla method and so silently skipped any other mod's override of those
  methods; they now chain through `super`.
- **Squads no longer pick and drop a tactic every few seconds**: buddy pairs, base of fire and flank, smoke-and-cross,
  uphill leapfrog and reverse slope were started on the distance to the enemy's centre but ended at once on the
  nearest enemy; a pattern is now not started inside the distance where it would end.
- **Hasty firing lines keep their own times**: every squad shared one hasty-line object, so one squad's start in an
  assault cut (or stretched) the running lines of every other squad on the server.
- **A new fight counts its own enemies**: the enemy count of a finished contact carried into the next one for up to
  60 s (outnumbered checks, grenadier and peel-back choices).
- **Base of fire is seen as firing**: with the default tree gate the base men never joined the team token, so the
  final assault and the flank always waited their full timeouts before moving.
- **One contact per squad cluster**: a group could stay "responding" in two contacts, which silently stopped impact
  and casualty reports for that squad.
- **Rescue drill**: a rescuer could stay marked busy for good when a carry rescue ended between the put-down and the
  treatment; a full treatment whose rescuer stopped evaluating now ends after 95 s; casualties are rescued oldest first
  again.
- **Behaviour-tree caps**: cap entries of soldiers who died, regrouped or lost their AI no longer block a squad's
  trees; the cap counts only conscious members.
- **Movement**: the prone-in-the-open probes (a cover query and shared rays) no longer run every tick while a soldier
  is already moving; a held man no longer asks for covering fire for a move that is then not made; an unknown roof no
  longer raises a prone man; a vetoed rush no longer turns a later move into a rush; a deleted mover no longer keeps
  his partner in cover-me; prone policy 0 keeps its crouch.
- **Smaller fixes**: the RPG group reservation is freed when a commitment expires; stance dwell releases a held drop
  after its floor time; a contact callout waiting for a free channel no longer reaches a deleted target; window claims
  survive the building-opening cache; the recon-by-fire safety query stays under its 50 m sphere cap.
- **Squad leader and decision hook (off by default)**: readyz is retried (5 s doubling to 60 s) and asked again every
  mission; lost calls are reaped after 5 s as documented; a phase failure outranks a routine replan reason; chained
  leader plans no longer hit the first plan's 330 s cap; idle-phase ends and pair stalls count the right men; gated
  squads refuse support requests; SITREP plan history pairs the right plan with each row; a live support link is no
  longer hidden by ended ones; support legs get their failure back-off.
- **Tree engine (off by default)**: carrier yield stamps reset per carrier; excluded soldiers skip the engine's
  feature work; the host check no longer builds a class-name string per lookup.
- **Diagnostics**: `m_bDebug` alone no longer starts the flight recorder in the Workshop package (an explicit
  telemetry level or `-raipacTm` does); the reaction-time window keeps its newest samples.
- **Expected log lines**: each AI carry with ACE Carrying logs two harmless vanilla `SCR_AIVehicleUsageComponent not
  found` lines (documented in [settings](docs/SETTINGS.md)).

Not changed (left for a gated round): fixes inside the tree node library or approved trees (scan-point cache across
modes, a queued tree move replaced by regain-sight, close-quarter program phases, the throw subtree's cancel flag)
need a full native tree-gate run; ending a soldier's trees when his AI is deactivated (possession, caching) also
runs at world teardown and is not proven safe there; the hook's urgent deadline measured from the POST needs a native measurement first;
the cover peek cycle at default settings is intended (review 7).
Game Version
1.8.0.13
Created
Wed, 04 Nov 2026 08:44:04 GMT
Last Modified
Wed, 04 Nov 2026 08:44:16 GMT

1.0.2

Workshop listing only: a shorter, simpler description, and a second contributor who can publish updates. The mod's content is unchanged; only the version number differs from 1.0.1.
Game Version
1.8.0.13
Created
Tue, 03 Nov 2026 18:38:36 GMT
Last Modified
Tue, 03 Nov 2026 18:38:49 GMT

1.0.1

Workshop text update: new summary and description for 1.0 (rescue drill). The mod itself is unchanged from 1.0.0.
Game Version
1.8.0.13
Created
Mon, 02 Nov 2026 19:18:47 GMT
Last Modified
Mon, 02 Nov 2026 19:18:54 GMT

1.0.0

Version 1.0: 0.2.6 plus the rescue drill (owner 2026-11-02: always smoke first, then carry him out, then treat). New
key `m_bCasualtyCarry`, on by default; tactics mode 1+. ACE Carrying and ACE Medical stay optional: they are found at
runtime by type name, and the mod still requires the base game only. The same ten gated behaviour trees as 0.2.5 and
0.2.6; their own code is unchanged, so the tree gate was not re-run.

Acceptance pools on build r100-rc1 (commit 2db9ec6; 9 fights each: wow open, urban and mountain, 3 seeds; bars are at
least 80 % fire-before-move and at most 0.6 stance flips per minute):
- leader off: fire-before-move 86.8 %, stance flips 0.29 per minute;
- leader on: fire-before-move 77.5 % (below the bar; 0.2.6: 84.1 %, difference not significant), stance flips 0.25 per
  minute. None of its uncovered moves was a rescuer's; the cause is not found yet.

Rescue tests (native, dedicated server, same code): carry with ACE Carrying 3/3, also with ACE Medical 3/3; corner,
control, open and far cases pass; flank exposure 3 pass, 0 fail, 5 recorded; no stalled rescuer, no casualty death.
Not tested: multiplayer with players joining.

Release note: published on the owner's instruction (2026-11-03) with the leader-on pool below its bar.

- **Smoke first, always**: the rescue smoke lies outside the squad smoke budget (no 45 s pace, no per-contact
  count), and a casualty may get another one 60 s after his last. Before, a rescue whose smoke the budget refused
  could go without one.
- **Carry him out (ACE Carrying)**: an unconscious casualty lying in the open was left until the contact ended; vanilla
  care then sent a medic running out to him. With ACE Carrying loaded (found at runtime by type name; still no
  dependency) the rescuer now runs to him under the lit smoke, lifts him with ACE's carry action, carries him 8-20 m
  away from the perceived enemy to a spot no perceived enemy can see (else the squad's position), puts him down and
  treats him there. A carry never starts without a lit smoke. If ACE lets him go on the way he is lifted again (at most
  three lifts); if ACE does not take him up within 5 s he is treated where he lies, under the smoke. If the enemy comes
  to see the spot during his treatment and he is still unconscious, he is carried once more. The carry runs on dedicated servers only (ACE's carrier code
  clamps the host's own input when the carrier is an AI on a listen server or in single player).
- **No turning back under the smoke**: in the 0.2.6 and drill test fights 4 of 10 smoked rescues broke off within
  1-8 s of the go because an enemy came to see the casualty's spot, and the casualty was left where he lay. A smoked
  rescue now carries him out when the rescuer is beside an unconscious casualty (ACE Carrying), else goes on while
  the smoke still hides him or the rescuer from the nearest enemy (the AI's own perception cannot see through it
  either). Only when nothing hides him does it break off as before.
- **A carried casualty is not left where he was put down**: on open ground (no hidden spot near) he was carried on out
  of the smoke's shadow and then left in the open (ACE Medical test, 52 m in three carries, never treated). He is now
  carried on only from a hidden drop spot; otherwise the rescuer treats him there and a fresh smoke is asked at most
  every 20 s. Only an enemy within 30 m still breaks the rescue off, and a casualty under treatment is never lifted
  with an enemy that close.
- **The rescuer does not stop to fight**: a rescuer shot at on his way switched to fighting back (the game's
  high-priority attack outranks healing) and could sit 10 m short of the casualty until the 120 s treatment limit;
  with ACE Medical the casualty bled out. While he carries, runs to or treats the casualty his attack now stays below
  the rescue, and his squad gives the covering fire (waiting for the smoke he may still shoot). As a backup, a rescue
  whose rescuer gains no ground for 15 s while more than 5 m out is ended and planned again (`why=22`).
- Without ACE Carrying, or for a conscious casualty, the 0.2.6 rescue rules stay.
- Start-up line: `casualtyCarry=`, `aceCarrying=` and `carryHost=`. Telemetry: `ev=care` phases `reach`, `lift`, `carry`, `drop`,
  `down` (`why=21` when the carry ended early), `screen` (went on although the spot came into sight) and `resmoke`.
Game Version
1.8.0.13
Created
Mon, 02 Nov 2026 18:16:01 GMT
Last Modified
Mon, 02 Nov 2026 18:16:08 GMT

0.2.6

Covering fire before moves: the same ten gated behaviour trees as 0.2.5, with fixes to how men get covering fire
before they move.

Acceptance pools on build r026-fbm2 (commit 7e935d7; 9 fights each: wow open, urban and mountain, 3 seeds; bars are at
least 80 % fire-before-move and at most 0.6 stance flips per minute):
- leader off: fire-before-move 87.8 %, stance flips 0.33 per minute;
- leader on: fire-before-move 84.1 %, stance flips 0.32 per minute.

- **Burst first**: a man whose tree move or squad leader leg waits for covering fire, and who sees his target in the
  clear, fires one short burst himself, then moves at once. The pause never runs past the existing wait limit, and
  happens at most once per 8 s per man. Stance changes outside cover during that burst are ignored, so he is never
  left prone in the open.
- **Cover ask on escapes**: a man jumping away from danger (at least medium danger) or stepping out of a mate's line of
  fire asks a mate who can see the enemy to cover him, and keeps moving. At most one ask per 2.5 s.
- **Seeing mate first**: when a covering shooter is needed, a mate who is already firing is asked first, then one who
  just saw the same target in the clear (smoke-aware), then one who sees any target. All fire filters are unchanged.
- **Telemetry**: a fire-first wait that does not start now logs why.
- Behaviour trees live: unchanged from 0.2.5 (A01, B03, B06, B07, C02, C08, A10, C03, E04, B05); their own code is
  unchanged. Peel back, shoot and scoot, rejoin under fire, bounding overwatch and investigate bounding stay candidates.

Release note: published on the owner's instruction (2026-10-28) from a build that compiles with 0 errors and passed both
acceptance pools. The full tree gate was not re-run for this release; the trees' own code is unchanged.
Game Version
1.8.0.13
Created
Wed, 28 Oct 2026 12:13:28 GMT
Last Modified
Wed, 28 Oct 2026 12:13:35 GMT

0.2.5

Ten gated behaviour trees: the hasty firing line joins the nine from 0.2.4. Men held in good cover stay in it
instead of running out into the open, and they no longer retry a failing cover move every fraction of a second.
Published under the owner's standing rule: a batch publishes once it passes the full tree gate and both acceptance pools.

Acceptance pools on the release build (9 fights each: wow open, urban and mountain, 3 seeds; bars are at least 80 %
fire-before-move and at most 0.6 stance flips per minute):
- leader off: fire-before-move 88.4 %, stance flips 0.28 per minute;
- leader on: fire-before-move 83.3 %, stance flips 0.26 per minute.

- **Behaviour trees live** (tree gate 20261027-112432, all seven steps on one commit and build, commit ffc9309):
  cover rush (A01), flank leg (B03), assault through (B06), consolidate (B07), smoke screen (C02), recon by fire (C08),
  alternate position (A10), frag then rush (C03), wounded withdraw (E04) and **hasty firing line (B05)**.
- **Hasty firing line (B05)**: the squad forms a quick firing line by elements, each man taking a slot.
  - A man who settles in his slot out of real cover while he is fighting is released and takes cover near where he
    stands. The squad leader checks every man, also while the squad holds.
  - A man who can no longer fire (no usable round in any rifle, machine gun or handgun) is not sent into the line.
    One whose rounds run out on the line takes cover once around where he stands and holds there. He is never walked
    on to an open slot.
- **Held in real cover**: a man in a cover whose covered side faces the enemy he knows about moves only to another
  real cover. Close range and assault bounds no longer take him out of it into the open. The same applies to the cover
  he just left when the game dropped its in-cover flag after a failed cover move, while he still stands within 1.5 m of
  it. A cover that no longer faces the enemy holds nobody.
  - While held, he tries his next cover move at most every 5 s and fights from where he is in between. Before, the
    cover search repeated about every 0.4 s.
- **Reflex dash**: the quick dash to cover only speeds up a move that is already low. An upright move keeps its aimed
  pace, and the dash no longer changes stance or speed itself. Game Master stance and speed limits are kept.
- **Still candidates** (not used in this release):
  - peel back (B04): short covered bounds with covering fire now work in most runs. A pursuer close behind at the
    start still leaves too little time to finish, and on reverse slopes the new covering element can end up blind.
  - rejoin under fire (E02): 52 of 54 test runs pass. A squadmate's own step to regain sight can still cut across the
    rejoining man's path.
  - "cover me" for wounded withdraw (E04): a nearby mate who saw the enemy fires one short burst while the wounded man
    moves. It works when it fires but almost never does in real fights, so it is not used.

Gate notes:

- The first 0.2.5 gate (20261027-112107) stopped at compile: the new hold flag was declared on the wrong class. Fixed
  in ffc9309.
- The release gate (20261027-112432, commit ffc9309) approved all ten trees.
Game Version
1.8.0.13
Created
Tue, 27 Oct 2026 20:02:58 GMT
Last Modified
Tue, 27 Oct 2026 20:03:02 GMT

0.2.4

Nine gated behaviour trees. A soldier who is hit now gets back to cover instead of standing in the open, and one hit
while already in cover stays there.
Published under the owner's standing rule: a batch publishes once it passes the full tree gate and both acceptance pools.

Acceptance pools on the release build (9 fights each: wow open, urban and mountain, 3 seeds; bars are at least 80 %
fire-before-move and at most 0.6 stance flips per minute):
- leader off: fire-before-move 80.4 %, stance flips 0.32 per minute;
- leader on: fire-before-move 85.2 %, stance flips 0.29 per minute.
- Leader off in the open scenario counted far fewer moves than 0.2.3 (12 against 64) and 58 % of them fired first
  (0.2.3: 95 %); the 9-fight pool is above the bar, and this is watched in the 0.2.5 pools.

- **Behaviour trees live** (tree gate 20261027-012724, all seven steps on one commit and build, commit fb41c88):
  cover rush (A01), flank leg (B03), assault through (B06), consolidate (B07), smoke screen (C02), recon by fire (C08),
  alternate position (A10), frag then rush (C03) and **wounded withdraw (E04)**.
- **Cover rush starts low (A01)**: a tree's own crouched rush to cover goes low at its start even when he has just
  stood up; the stance rest that stops stance bobbing no longer holds him upright through the rush.
- **Alternate position only when it can finish (A10)**: he no longer starts the move when he knows an enemy is close
  (inside 30 m of where he last saw them): the man he is still fighting, another identified enemy seen within 8 s, or
  an unidentified figure seen within 3 s. Before, such a man could stand up and drop the move a fraction of a second
  later. He fights from where he is instead, and is asked again later. Only what he saw counts, and smoke still blocks.
- **Wounded withdraw (E04)**: a man who is hit in the open crawls or moves crouched back to cover instead of standing.
- **Hit in cover**: a man hit while he is in cover stays in it for up to 15 s.
  - His investigate ends at the hit, and a bound already in flight stops.
  - The squad's plain move and formation orders wait while he holds.
  - A Game Master's Forced Move and player commands never wait. A plain Game Master Move waypoint waits out the
    hold, the same way a vanilla move gives way to combat.
  - This hold belongs to E04, so it is off whenever E04 is off.
- **Still candidates** (not used in this release; their reviews and gate runs are still open):
  - rejoin under fire (E02): a cut-off man rejoins from the rear and checks his route against the squad as it moves.
    It still loses about one run in six to a squadmate's sideways escape sprint.
  - hasty firing line (B05): it forms by elements.
  - peel back (B04): covered back-bounds until contact is broken.
  All three are planned for 0.2.5 (1.0), with bounding overwatch (B01), investigate bounding (B02) and shoot and
  scoot (A04).

Gate notes:

- The first 0.2.4 gate (20261026-100804, commit f6b38e7) approved the eight 0.2.3 trees again and failed E02 and E04.
  - E04: in two seeds a tree's bound or the squad's plain move order walked a man out of the cover he was hit in.
    Fixed by the hit-in-cover stamp and hold; the review passed after four rounds.
  - E02: its rear route was planned once and never checked again. It now checks the route against the squad before
    every leg, but its review still has two open majors.
- E04 passed a subset gate on seeds 1-6 plus abuse before the release gate.
- The second gate (20261026-195331) disabled A01: in one seed vanilla idle stood the man up just before the rush and
  the stance rest kept him upright. Fixed by the low start above.
- The third gate (20261026-223315) failed A10's fight: a man started the move with his target 19 m away and out of
  sight for 3 s, saw him again, and handed the move to attack 0.27 s later. Fixed by the start check above, proven on
  A10's fixtures, abuse cases and four mountain fights.
- The release gate (20261027-012724, commit fb41c88) approved all nine trees.
Game Version
1.8.0.13
Created
Tue, 27 Oct 2026 03:11:34 GMT
Last Modified
Tue, 27 Oct 2026 03:11:40 GMT

0.2.3

Eight gated behaviour trees, a smarter alternate position, and a squad leader that fights from the current picture.
Published under the owner's standing rule (2026-10-26: publish a batch once it passes the full tree gate and both
acceptance pools). Acceptance pools on the release build (9 fights each, wow open/urban/mountain, 3 seeds, middleware
0.6.4): leader off fire-before-move 85.1 %, stance flips 0.27 per minute; leader on fire-before-move 84.7 %, stance
flips 0.23 per minute (bars >= 80 % and <= 0.6); attacker static60 0.026 off vs 0.017 on.

**Leader mode needs EXPBG Realistic AI Middleware 0.6.4** (the flank manoeuvre now ends at assault distance).

- **Behaviour trees live** (tree gate 20261025-185826, all seven steps on one commit and build): cover rush (A01),
  flank leg (B03), assault through (B06), consolidate (B07), smoke screen (C02), recon by fire (C08), **alternate
  position (A10)** and frag then rush (C03; the in-tree frag stays off, frags keep the vanilla armed throw).
- **Alternate position (A10)**: a defender who has been located picks a side cover and reserves it, so no squadmate
  takes it; he sprints across the open part, steps into the cover over the last 3.5 m and fights from it. He does not
  start a long run in the sight of a rifleman closer than 30 m, a man already in a cover that faces his shooter fights
  from it, and a flanked man relocates. Gate fight: 80 % of the final moves of living men ended in cover (bar 70 %).
- **Squad leader works from the current picture** (leader mode): after a failed phase, a stalled bounding pair, a
  fallback, an abort or a plan's end, the leader no longer starts an order he wrote a minute ago; queued orders asked
  before the failure (or more than 20 s old) are dropped and the squad holds and fires until the new order comes.
- **Leader shifts to the assault** (leader mode): when his men first close to 50 m of the nearest enemy they perceive,
  the leader asks for a new order at once, and an order made at that distance replaces one made from farther out.
- **Covering fire on the last seen spot**: a leader bounding pair that asks for covering fire gets bursts on the
  enemy's last known position when nobody can see him but the squad saw him within 10 s (never through smoke); a
  rifleman whose wait for covering fire runs out with nobody firing puts one short burst on the spot where he saw his
  enemy within the last 3-6 s, with his line clear for most of the way (never into his own cover), then rushes.
- **Fire before move, wider**: the base game's medium-danger "move away from the threat" and investigate moves of a man
  in contact, and committed leader legs, now wait briefly for covering fire too ("cover me, moving"); a standing man
  under high or aimed danger still escapes at once.
- **No frozen grenadier** (C03 and C02's smoke throw): a man whose weapon does not come up keeps trying for 2 s and then
  gives up cleanly instead of standing frozen in the open.
- **Not in this release** (repairs continue for 0.2.4): bounding overwatch (B01), peel back (B04: its repaired code is
  in the build, but the tree is not used), wounded withdraw (E04: one fixture seed failed in the gate, disabled), rejoin
  under fire (E02: failed its first review) and hasty firing line (B05: it passed the gate, but the leader-on pool showed
  its slot moves sending every man to his slot at once with nobody firing, 8 of 11 of its bounds uncovered; it goes back
  to the generic firing line of 0.2.2 until 0.2.4 makes one element move while the other fires).

Gate and pool notes:

- The batch was staged and repaired in a scratch clone while main stayed frozen and landed as one commit (0511387).
  Repairs: A10 three rounds (cover reserve, rush and entry, narrow dash commitment, held-cover facing rule, entry retry
  counter); E04 navmesh withdraw point, bt-E04h quiet window, sea-shore unreachable stand; B04 aged-keep bounds, no
  rally leg cut mid-route, rally budget, rally holds end done at the DONE; B01 TEAM_COVER core.
- Reviews: A10 and E04 delta reviews pass after their majors were fixed; E02's first review fails (6 majors). Ledger
  entries widened for A10 and E04 so their reviews cover their own helpers.
- The leader-on pool missed the bar four times (78.0, 78.1, 76.4, 77.8 %) before it passed. Diagnoses: B05's slot moves
  (demoted), ungated base-game escape/investigate moves and committed leader legs, a leader that kept stale orders and
  never reached assault range on mountain, and timed-out fire-first waits. A re-run of the 0.2.2 build showed the same
  mountain stall today, so the leader fixes target the leader, not the trees. No bar or count was changed; the
  approved rows' fingerprints did not move (tests/Test-TreeGate.ps1 -Release).
Game Version
1.8.0.13
Created
Mon, 26 Oct 2026 01:30:10 GMT
Last Modified
Mon, 26 Oct 2026 01:30:18 GMT

0.2.2

Fixes from the 2026-10-23 live playtest (plan `playtest-20261024/plan.json`, owner decisions 2026-10-24), the 0.2.2
tree gate and a world-restart audit. Released on the owner's decision (2026-10-25). Acceptance pools on the release
build (9 fights each, wow open/urban/mountain, 3 seeds): leader off fire-before-move 83.6 %, stance flips 0.38 per
minute; leader on fire-before-move 81.9 %, stance flips 0.32 per minute (bars >= 80 % and <= 0.6); attacker static60
0.010 off vs 0.011 on.

- **Behaviour trees live** (tree gate 20261025-052214, all seven steps on one commit and build): cover rush (A01),
  flank leg (B03), assault through (B06), consolidate (B07), smoke screen (C02: carries out the squad smoke manager's
  throws; urban leader fight 2 of 2 smokes lit by the tree) and recon by fire (C08). Alternate position (A10) is back to
  candidate (fight: 62 % of its final moves ended in cover, bar 70 %); frag then rush (C03) is disabled (frags keep the
  vanilla armed throw anyway).
- **Mission restart** (r10-13): an in-process mission restart keeps the world object and restarts its clock at 0 (the
  2026-10-24 playtest froze Gamemaster Tools' garrisons for 3 h). Realistic AI now resets its static state at world
  cleanup and ignores stamps from the previous mission: no invisible mission-1 smoke that blinds the AI for the whole
  next mission, a fresh leader session at every mission (the middleware starts clean), no RPG, memory, opening or
  telemetry state carried over. Native restart fixture `tests/restart` (33 checks).
- **Gate round fixes** (r10-11/r10-12): assault-through movers get time back for a push a reaction interrupted; a
  located defender checks up to 100 covers instead of a sample that could hide the only good one; consolidating men must
  reach their spots (they stopped 2-4.5 m short on the move timer); recon by fire never waits for the ray budget in the
  open; no melee swing while a mate stands closer than the target or in the swing cone (melee hits are logged); a
  brain or leader stop ends running trees as withdrawn, not as failed moves; a peel back keeps going through its
  bounds, rally and hold when its own withdrawal breaks contact (capped); a replaced watch reports a re-acquisition only
  on a fresh sighting.

- **Exposed men sprint** (`m_bExposedSprint`, on): in contact a move away from the perceived threat, an open-ground move
  and vanilla's escape walks are a sprint with the weapon down that faces the threat at the end (escapes keep vanilla's
  direction and length); an away move without cover drops prone at its end. Never indoors or with an unknown roof,
  never for posts, garrison squads or a man holding an RPG shot. Brain and leader legs in contact sprint, and a squad on a
  GM Move or ForcedMove waypoint sprints instead of walking in formation while it is in contact.
- **Prone in the open** (`m_iPronePolicy` 1): allowed at any range where it works (open sky, no crest or vegetation
  masking the prone eye line within 20 m), for the reflexes, the trees and the engine alike. A suppressor whose open
  move found no cover searches all round, and a last exit without cover goes prone in place.
- **One squad smoke manager**: one designated smoker per squad (never the leader, MG, AT gunner or assistant AT, a medic,
  a wounded man, a post or a garrison squad), only for a pull-back, peel-back, break contact, casualty rescue or the
  leader's explicit smoke task, thrown toward the incoming fire 12-35 m out, at most two per contact plus one emergency
  smoke; movers wait for the lit cloud (1.5 s). Attack, gap, pinned-man and launched smoke is refused, so is a
  behaviour-tree smoke without a manager ticket; the vanilla heal smoke runs only through the manager and only in
  contact, and the leader ends a throw still listed after 10 s (a vanilla throw or the C02 tree carrying the ticket).
- **Casualty care under fire**: no vanilla healing in the open while the squad is in contact (brain contact, THREATENED or
  perceived fire within 15 s, suppression, or a perceived enemy within 150 m); one rescuer per casualty (never the squad
  leader), who sprints in, treats only where the casualty is sheltered, needs a lit smoke near the enemy, and treats every
  wound (tourniquet, saline, morphine; ACE epinephrine when ACE is present, never required). Fewer than 3 fit men: no
  rescue.
- **RPG**: decides before it draws (target seen 1 s at 25-250 m, enough enemies the squad saw, no roof, clear backblast,
  nobody in the line of fire; `m_iRpgMinEnemiesOpen` 2 in open ground), fires within about 4 s at the target it drew on,
  holds still meanwhile (no brain step, leader move, reflex or tree moves him) and puts the launcher away afterward. A man
  treating a casualty never draws. The density counts only enemies the squad saw, where they were seen.
- **Static squads** (garrison posts held at IDLE speed, GM Tools garrison squads by their group flag) get no brain
  pattern, leader request or LLM call.
- **A10 alternate position** ends in a real cover or is refused; A10 is set back to candidate until a gate run proves 70 %
  of its final moves end in cover.
- **Leader legs keep going under fire** (`m_bLeaderLegSprint`, on): a leg issued in contact starts and commits at once, a
  commit for a live target alone ends after 7 s or within 50 m of it, pattern and phase churn waits for a running leader
  step's protection, holds extend in place for at most 30 s at one spot.
- **Leader executor**: bases are asked to cover only once at their spot (6 m, 12 m once done) or firing in place with
  their own sight; blind moves fire first and then sprint; stalled moves fail after 26 s and retry inside the plan;
  forward smoke flags never smoke (a gap smoke needs an explicit smoke task); a 45 s plan commitment; the decision hook's
  urgent timeout is 3 s with a 2 s script deadline, every engine timeout is clamped to 3-600 s (no SetTimeout warnings),
  and a middleware KEEP reply (`X-EXPBG-Keep: 1`) keeps the running plan.
- **Step 9 wiring**: the brain, the library and the program throw node queue no smoke of their own; an RPG gunner holding
  his shot, a man treating a casualty (or the picked rescuer) and a man with a manager smoke in hand get no brain bound,
  leg, tree, reflex scoot, peek or cover exit, and no frag, GL shot or throw tree.
- **Native fixture round (e22, 2026-10-24)**: a squad on a GM Move or ForcedMove waypoint gets its squad brain once a
  member is in contact even without a target cluster (fire from a shooter nobody saw), so its combat sprint acts; a stance
  rise the dwell held back is dropped instead of applied once the man is THREATENED or under fire (no prone, crouch,
  prone flap); the rescuer's approach sprint lowers his aim (no aimed run); a cover move to where he already holds a valid
  cover facing the threat keeps it (A10's last leg no longer leaves its cover).
- **Stance flip fixes** (flip analysis `playtest-20261024/flips-022`: 0.30 -> 0.68 flips/min, all from new prone
  transitions): vanilla's threat escape that finds no cover ends prone where prone works (one stand-to-prone change
  instead of a crouch and vanilla's prone 0.3 s later; `ev=xgait r=4`); a fresh crouch keeps its drop to prone until
  5.6 s after its change (a hit still drops him at once); an exposed sprint runs upright only for a leg of 22 m or its
  timer at 3.9 m/s (shorter legs sprint crouched, weapon down); a man who just went prone in the open rises for no
  combat leg within 5.6 s unless hit.
- **Native debug round 2**: the picked rescuer gets no next combat leg, spacing re-push, reflex or exposed sprint, and
  his running leg ends at the go (care-COVER: an Attack leg toward the enemy held the released medic off for 6.4 s); the
  rescue sprint is upright when more than 10 m is left to sprint, and a prone rescuer rises only to a crouch for a short
  dash; a retry the smoke manager refuses (the casualty had his smoke, or a cloud covers the line) goes behind the standing
  cloud, which must hide a rescuer more than 30 m out himself. The leader context sends one optional header per exchange
  (the engine takes 3: `X-EXPBG-Swap` on an urgent submit, else `X-EXPBG-Keep`). RPG: a refused roof ray for the open-ground minimum
  waits 3 s instead of a density refusal (and a retarget waits instead of aborting; no shot at a re-pick meanwhile);
  every eval decision line is written (`min=` on density). Fixtures: same-sample sprint flag (care-COVER), pick owner
  per group (static-POST), crouched cruise windows and a fail-closed speed check (esc-XBACK), `mock_stale` (lead-HOOK),
  `bandRunMaxS`/`noBandSight` and crouch-height opening rays (rpg), warm-up only until the first cluster (smk).
- **r10-8 review (care, smoke)**: a rescue whose casualty dies or stops bleeding before a medic takes over (smoke, base
  or go phase) now ends at once (`why=16`) instead of freezing its rescuer; any check on the rescuer (IsTreating) drives
  the squad's throttled care tick, so nothing waits on the ended heal activity. The rescue smoke aim searches 10 degrees
  inside the 60-degree rule (the thrower may shift before the throw; the rule itself is unchanged). A man who was a
  casualty in this contact never becomes the squad's smoker for the rest of it (`prevElig=5`).
- **C02 smoke screen carries out manager smokes** (r10-8 C02, owner 2026-10-24 "fix first all"): the squad smoke
  manager still decides every AI smoke (smoker, occasion, budget, line, aim); once every rule passed, `Request` hands the
  throw to the smoker's C02 tree when C02 is pickable (the tree-gate status) and the smoke-only in-tree switch is on
  (`RAIPAC_SMOKE_IN_TREE`), else it queues the vanilla throw, never both. C02 starts only from `Request`, only on a live
  ticket for that soldier, throws one grenade (its gate admits the smoke once per ticket) and reports selection and end
  to the ticket: an end without a throw fails it, an end after the throw (also a failed or aborted one) completes it and
  the manager's hand check decides, and a ticket the stuck rule fails (8-11 s) ends the tree; the leader's stuck-throw
  backstop ends a stuck C02 tree too. `ev=smk why=22` carries `via=c02|van`, the C02 end line `tk=`, the leader's
  `act=throwstuck` line `c02=`. C02 passed the 0.2.2 gate, so players get the in-tree throw. Trade-off accepted by the
  owner (2026-10-24): spike S-4b measured the in-tree smoke leaving the hand about 1 s later than the vanilla throw
  (4.4-4.6 s vs 3.2-3.6 s).
- **Frags stay vanilla**: spike S-4 (`RAIPAC_S4_LIVE`) stays off, so C03 (library frag, B12 search pair), D03's
  frag-and-hold and the B06 frag phase keep the armed vanilla frag with all its rules (the server's building-grenade
  switch and chance, the group grenade timeout, the courage limit, a target seen within 20 s). The shared ThrowSignal
  class changed, so the C02 and C03 fingerprints change and both rows need a new gate run.
- **A10 never picks a cover he cannot walk to** (r10-8, route-A10COVER seed 3: a cover 5 m below him past a retaining
  wall, the route failed 1 m short): a cover more than 2.5 m above or below him is rejected, and the next-nearest cover
  of the same side is tried before the other side (at most 4 cover queries per located man); `ev=loc` adds `rise=`.
- **r10-8 review (fixtures)**: strict verdicts again: `rpg-OPEN` without a shot fails (no `noBandSight` blocked
  verdict), `care-COVER` needs 4.5 m/s upright (the 4.0 m/s flag path is gone), and `approachStartM=`/`enemyMinM=` are
  evidence only, never a reason to reclassify a failed run.

### Telemetry and tools

- The flight recorder header and every `ev=tm` carry the absolute UTC time (`unix=`, `utc=`) and the build (`build=dev`
  or `build=release`, with the commit stamped by `tools/Stage-Release.ps1`); drops are counted by kind (`ev=drops`).
- New recorder lines at level 2: `ev=pose` (soldiers in contact, 1 Hz, own budget, with the bearing of the perceived
  threat), `ev=plr` (player positions; analysis only, the AI never reads them), `ev=down`/`ev=kill` (killer, killer is a
  player, the victim's posture, smoke, leader plan and phase), `ev=life st=ALIVE|deleted`, `ev=gm` (Game Master
  placements such as ForcedMove waypoints, and deletions), `ev=mv from=|rx=|stp=|conv=` and `ev=mv st=start`
  (gait at movement start), `ev=grp static=|gar=`. Per-tick `ev=grp` and the per-target `ev=grpi why=2` need `m_bDebug`.
- Mod lines from the tracks: `ev=xgait`, `ev=smk why=13/20-24` (and the thrower on `why=10`), `ev=care`, `ev=rpg`,
  `ev=loc loc=end`, `ev=brain act=legrel|keep|keepend|kept|hold+|static|fgait|heldout`, `ev=leader act=throwstuck|
  inplace|vshift|retry|stuck|keepreply|kept`, `ev=hook act=timeouts|rej late=1`, `ev=mv why=26`.
- `tools/Analyze-Playtest.py` (run with `python -I`) computes the 0.2.2 gate metrics from `raipac_tm.txt` and the
  middleware log, with t0 from the recorder's UTC stamp (or the decision hook's run id, narrowed by the console clock);
  on the 0.2.1 log it reproduces 89 of 605 leader moves, 46 AI smokes, 54 MedicHeal starts and 127 requests.
  `tests/Test-AnalyzePlaytest.ps1` checks it on a hand-counted excerpt.
- `tools/Invoke-TreeGate.ps1` judges A10's fight with the new in-cover metric (70 %, `ev=loc loc=end inCov=1`).
- 0.2.2 r10-10 review (gate evidence): `tools/Invoke-TreeGate.ps1` judges C02's fight metric (a C02 end without a
  manager ticket `tk=0` fails, manager smokes `ev=smk why=22` none `via=c02` fail, a `via=c02` ticket needs a C02 enter;
  no why=22 line is incomplete; C02 left the no-enters exception), self-tested in `tests/Test-TreeGate.ps1`. The
  `bt-A01` unreachable abuse aims the rush at an off-navmesh point 5-10 m out with no cover in its band (the far sea point
  was clamped to a reachable 12 m leg, so correct behaviour failed it; the expected whys stay `{1,2}`). New fixture
  `bt-E04h` runs E04 through its live trigger (OnUnderFire on a man at health 0.6 in the open: router start `trg=rx`),
  plus a man at health 0.95 (D01, never E04) and a wounded man in valid cover (no E04, keeps his cover); E04's ledger
  entries name `OnWounded` and `OnUnderFire` (E04 stays candidate: the live fixture needs a validity fix in 0.2.3).

### Deviations and owner questions

- Owner decisions applied: smoke only for pull-back, peel-back, break contact, rescue or an explicit smoke task (the
  plan's gap-crossing smoke is dropped); no heal smoke out of contact (the plan said out of contact calls vanilla);
  behaviour-tree smoke outside a manager ticket refused; C02 was set back to candidate and now only carries out the
  manager's throws (r10-8 C02), pending its gate run.
- Review choices to confirm: the leader-leg start guard no longer waits for perceived fire or THREATENED (the plan kept
  them); every leader smoke needs exposure and a perceived threat within 150 m; forward smoke flags never smoke; an urgent
  hook answer after 2 s counts as a failure.
- Plan deviations: the cover-ready radius is 6 m (plan 4 m); the stuck man's cover search stays 10 m (plan 20 m); the
  open-ground RPG keeps its chance curve (20 % at the minimum, a 20 s cooldown after a missed roll; tuning is an owner
  decision); the SITREP families `cur`, `lf`, `tgt`, `dn` of middleware 0.6.4 come with 0.2.3 (plan step 17).
Game Version
1.8.0.13
Created
Sun, 25 Oct 2026 07:23:20 GMT
Last Modified
Sun, 25 Oct 2026 07:23:28 GMT

0.2.1

- **Flight recorder in the release build** for the live playtests: the full telemetry recorder of the development build now ships with the mod and stays off by default. Set `m_iTelemetryLevel` in `m_RAIPAC_Settings` (2 change events, 3 snapshots, 4 step trace) or start the server with `-raipacTm <0-4>`. The server writes `raipac_tm.txt` (one line per event; rotated at 50 MB) into its log folder; `$profile:raipac_cmd.txt` accepts `level <0-4>`, `watch`, `mark <text>` and `dump` while the server runs. Behaviour is unchanged from 0.2.0.
Game Version
1.8.0.13
Created
Fri, 23 Oct 2026 16:21:21 GMT
Last Modified
Fri, 23 Oct 2026 16:21:28 GMT

0.2.0

Released on the owner's decision (2026-10-23) for a live playtest. Movement acceptance on 18-fight pools: stance flips 0.30 / 0.38 per minute (bar 0.6), attacker static60 leader ON 0.012 vs OFF 0.009 (difference within noise), fire before move 77.6 / 77.5 % (bar 80, not met).

- **Optional LLM squad leader** through the EXPBG Realistic AI middleware: plans fire and movement, flanks and bounding overwatch per squad; the built-in planner answers when the model is slow or off. Off by default (m_iLeaderMode 0); needs m_sDecisionHookUrl, m_iDecisionHookMode 3 and m_iLeaderMode 1.
- **Rush floor:** a soldier keeps a fresh stance for 5.6 s unless he is hit, so he no longer bobs up and down; a threat escape stays upright to its end point.
- **Shoot and scoot:** before an uncovered rush a soldier who saw the enemy in the last 20 s fires a short burst at that last-seen spot (line of sight, no smoke, no friendly in the way).
- **Leader-led squads keep moving:** a refused member no longer fails the whole task, a stalled pair advance replans, pair legs no longer "arrive" without moving, held movers go after 8 s, and the base of fire shifts during long manoeuvres; idle soldiers and far route-less moves run as guarded legs of at most 30 m.
- **Behaviour trees:** a finished tree keeps its end reason (C08 unreachable abuse fix).

### Repair round 9

- Send generic nearby leader repositioning through an existing guarded movement leg when the actual native action cannot consume a bound; preserve covering duty, required steps and emergency actions.
- Keep consecutive upright route segments standing through their exact request handoff, with normal terminal, cover, failure and cancellation handling.
- Keep native investigation movement low through the existing stance dwell, then restore its original standing intent only while the exact action still owns it. Preserve urgent escape, interruption, cancellation and disabled-mode behavior.
- Add native reproductions and lifecycle controls. Pooled movement and release gates remain open; see docs/design/wow-round9-20261022.md.
- Let idle soldiers take generic leader moves, and run a far route-less leader move as consecutive guarded legs of at most 30 m instead of refusing (and failing) the whole task. Every leg still waits for the same safety, area and duty checks.

### Repair round 8

- Accept inline final squad plans and safely replace provisional plans when the local middleware negotiates replacement support.
- Keep shot observations fresh, preserve a low stance during a bounded tactic leg, and guard optional position shifts against firing duty, required routes and canceled ownership.
- Preserve standing posture between consecutive eligible native danger escapes, restore the normal endpoint if continuation disappears or fails, and account for the selected attack reaction in the bounded covering-fire wait.
- Add native regressions and real-LLM load evidence. Movement acceptance and release validation are still open; see docs/design/wow-round8-20261022.md.
Game Version
1.8.0.13
Created
Fri, 23 Oct 2026 16:10:06 GMT
Last Modified
Fri, 23 Oct 2026 16:10:19 GMT

0.1.3

- Same content as 0.1.2. The 0.1.2 upload never started (Bohemia backend authentication timeout before upload; the Workshop page stayed at 0.1.0), and a version with an upload attempt is never retried.
Game Version
1.8.0.13
Created
Thu, 15 Oct 2026 16:14:50 GMT
Last Modified
Thu, 15 Oct 2026 16:14:55 GMT

0.1.1

- Fix: a soldier with no weapon in hand (right after a throw or during a weapon switch) could reach vanilla's attack-data node from the engage tree, whose first update passes the selected weapon to a helper that rejects null. The server stopped with a NULL pointer (`selectedWeaponComp`, `SCR_AIUpdateTargetAttackData.EOnTaskSimulate`). The node now fails cleanly without a weapon, as it does without a target.
Game Version
1.8.0.13
Created
Thu, 15 Oct 2026 16:09:50 GMT
Last Modified
Thu, 15 Oct 2026 16:10:00 GMT

0.1.0

Game Version
1.8.0.13
Created
Thu, 15 Oct 2026 12:37:09 GMT
Last Modified
Thu, 15 Oct 2026 12:37:29 GMT

Showing 1 to 21 of 21 results

Rows per page