DCO_Extensions
by JDripstein
2.3.1
Fixes and tuning: CONVOYS - A Game Master force move now takes a mounted column OUT of the fight instead of into it: the contact drill (break-contact and the flank assault) yields for mounted groups holding a GM waypoint, keeping only its fire-superiority half, so the column drives and the gunners stay hot. The exhibit was a live column at zero throttle for four minutes while the brain re-issued flank orders at a lone ambush survivor and the stall kicks fought it to exhaustion twice; the moment perception lapsed the standing move resumed on its own, which proved the grip was the drill. - New m_bConvoyMoraleLock (on): a mounted column under orders never breaks and flees. Any live waypoint counts, not just a Game Master one (commander moves and convoy-link follow waypoints sit below GM priority), and so does membership in a linked convoy; the broken flag still sets, so morale takes effect the moment the column dismounts or its orders end. Owner doctrine: guns hot, keep driving. - New m_bConvoyDriverRecovery (on): a vehicle with living crew but no conscious driver gets one back while under orders. A body in the pilot seat is ejected beside the vehicle, then a passenger is promoted into the seat using the same server-side placement the GM editor uses; cargo passengers are promoted before gunners, so the guns stay hot, and players are never touched. Closes the gap vanilla cannot: its replacement path needs a get-out first, which CRX force-stay refuses, and a driver who died in the seat blocked everything. HORN - The horn mute now starts unconditionally and the config value owns on/off at runtime: the old boot gate meant a server that started with m_bMuteAiHorn false could never enable the mute without a restart, and since the setting DEFAULTS to false, a fresh config shipped with the feature dead. The boot line also told the truth backwards - it printed ENABLED unconditionally whenever the system started - and now reports ENABLED with the patience/hold values, or INACTIVE naming the setting. - New m_bHornColumnQuiet (on): a convoy follower blocked by his OWN column mate never honks. At the first press the mute checks whether another tracked AI vehicle sits in the driver's forward arc (18m, same group or same DCO convoy id) and suppresses instantly with no patience window, since a follower honking at his lead is the one honk with no audience - the probe sessions showed exactly that profile, pulses at 0-5kph with no contact. Warning honks at civilians, players and strangers are untouched, and it works even with the general mute off. - Horn mute cycle telemetry under debug: every honk run logs its start with vehicle speed and the driver's lifetime hold count, every earned hold is numbered, every expiry logs the release, and a press observed WHILE a hold is active logs "hold NOT sticking" once per hold - the one signature that separates the engine outracing the frame-cadence zero from a driver eternally re-earning holds. Diagnosis for the "horn is back and not clearing" report; the behavioural fix follows the evidence.
- Game Version
- 1.8.0.10
- Created
- Mon, 31 Aug 2026 10:49:36 GMT
- Last Modified
- Mon, 31 Aug 2026 10:49:40 GMT
2.3.0
Lots of fixes and behavior tuning for Convoys and CQB. Changes: CONVOYS - New m_iConvoyFormationDisplacement (1): mounted groups get the engine's own formation spread applied (the same field the player follow-me command sets), so a speed-capped lead no longer concertinas the vehicles behind it into rear-endings and avoidance swerves. Saved and restored on dismount, so a group a player was commanding keeps its own value. 0 leaves the engine alone, 2 is a wide column. - New m_bConvoyFrontLeader (on): a column order WATCH. When an order goes out, the vehicle directly in front of the element leader is captured as the column reference (the leader's own vehicle if nothing is ahead of him), every other vehicle is measured against it, and overtakes are logged with distance and speed, because formation misbehaviour writes no log of its own. A waypoint re-issued with the same goal keeps the reference, so a deadlock kick cannot promote the very overtake it exists to correct. There is deliberately NO engine pin behind this: mounted crews live in per-vehicle subgroup move handlers (the group's default handler is empty once everyone mounts), no public API orders the subgroups, and an earlier build that pinned the default handler's leader wedged a live column with the lead stationary while followers drove past. - A vehicle that leaves the column outright, off around on its own road or racing hundreds of metres past the reference as in the 13:20 live test, triggers a convoy re-form: after two consecutive checks with a vehicle DRIVING more than 40m past the reference, the group's own move is re-issued at the convoy priority, which drops every vehicle's private path and re-forms the column. That is the manual nudge that fixed it live, automated, and it stays a group order because no per-vehicle primitive exists that does not dismount the driver. A parked vehicle past the reference never counts (that is the column arriving, or a wedge belonging to the stall kick; the 14:12 test fired three re-forms at a vehicle sitting at 0kph for nothing), and the re-form spends the shared kick give-up budget, so an unrecoverable column still ends at one line asking for a human. - Fixed a vanilla error storm from the driver-occupation node when a crew member dies while his column is remounting (an ambush into a convoy in the live test threw 33 exceptions in one fight): the node walks agent arrays it filled earlier and a member who died in between leaves a null it dereferences every tick. Both array walkers now carry the missing null checks; nothing else about the node changes, and neither CRX nor DCO touches the class. - Members already manning a static weapon are now RECALLED when their group is under orders, closing the gap the 1.2.1 gate left open: the gate stopped groups starting on a turret, but a man already on one anchored his whole column (five kicks exhausted against one gunner in the 2026-08-30 log). A static gunner is infantry standing at a weapon, not seated crew, so he gets a per-agent move at the convoy priority, dismounts and walks back to the column. Statics and mortars only, never aircraft crews. GM TOOLING - The QRF, Defend, Objective and Zone group-attribute tabs now carry the DCO icon, matching the Ambush tab. - Fixed the recursive-Invoke script error thrown while placing force-move waypoints once a group already held a queue of them: the one-frame deferral that fixed the same throw for the Clear Buildings waypoint now covers every waypoint type, since the live test showed plain force moves entering the identical editor parenting cascade (four VMEs in the 13:28 log, all on the fourth waypoint and later). CQB: ROOM DOMINATION - Squads now hold the building they clear instead of abandoning it behind the advance: with m_bCqbHoldCleared (new, on by default) only the two members nearest the fight keep advancing, and everyone else is posted across the rooms already swept, nearest holders deepest and the last man covering the entry. Without this the whole squad converged on the shrinking forward window late in a sweep, which was the clustering seen live. - Two holders can never share a corner: a hard minimum of 2.4m between posts (a score preference was not enough once more holders than cleared rooms mapped onto the same node, the cluster visible in the first debug-draw screenshot), and a holder whose room is already full slides one cleared node toward the entry instead of crowding in. - A holder's spot is not the raw sweep node: a scored search around it prefers a corner with a wall at his back, a clear line of fire, spacing from the other holders, and never a doorway. Positions are booked so two holders cannot pick the same corner, and the layout re-deals when the sweep advances a node rather than on the contact cadence, so holders do not fidget. - New m_iCqbAssaultTeams (2): the assault now pushes as two-man teams, each pair on its OWN forward point - pair one fights the current node while pair two stands on the next, so when the sweep advances, the pair already on the new node takes over and the old one flows past it, leapfrogging through the building instead of a single element filing point to point. Capped live by the points left in the building and by keeping at least two holders back; 1 restores the single advance pair. - New m_bCqbDoorNodes (on): the sweep now enters every reachable room. DCO's interior nodes come from the building's baked smart-action points, and buildings are uneven about them - the live test showed a sweep node sitting in the corridor AT a doorway with nothing inside the room behind it, so the room was never entered. Every door face without an existing node nearby now gets one projected past the frame, navmesh-snapped, ceiling-checked so an exterior door face cannot add an outdoor node, deduped against the existing path, capped per building, and added BEFORE entry pick and path ordering so the sweep weaves the new rooms in naturally. Debug logs how many door sides were added per building. - New m_bCqbFragBreach (on): one frag through the breach before entry. A CLOSED door throws the moment the door drill reads it open (any earlier bounces off the shut door); an OPEN doorway or a door already standing open throws as the file forms up, since the live sessions breached four buildings without the frag ever having a chance to exist on the closed-door path alone. Thrown by the nearest member actually carrying a frag, only when enemy is confirmed inside the building, only at a first room 3-10m past the threshold, and never with a friendly within 5m of the impact. The entry file freezes for the four second blast window, including the door timeout release, so nobody walks into our own grenade; a squad without frags breaches dry exactly as before, and it is one frag per building, a breach, not a barrage. With debug on, a breach that does NOT frag logs which gate stopped it (no enemy known inside, no node past the entry, a friendly near the impact, or no carrier), and every clear logs how many doors the node augment checked, so a silent run is readable. - New m_bCqbPushThrough (on): a clear order is now executed room by room until the building is taken. While a group's sweep job is live, a morale break no longer walks the squad out of the building (the broken flag keeps, and the flee runs the moment the sweep ends if morale is still gone), the contact drill is held to fire superiority instead of break-contact or a flank move that abandons the breach (the packed-building test fired break-contact drills mid-clear and the squad read as stuck), no DCO system can force a sweeping member prone (nobody breaches on his belly; the refusal sits in the single stance choke point, so suppression dig-in, cover adjust and the morale cower are all covered), and a sweep move stands a prone member back up through the same throttled pipeline, so there is no stance war. - No prone inside a building being taken, enforced for the whole job: the push-through refusal stopped DCO's systems, but vanilla's threat response and the surrounding AI stack's suppression write stance through their own paths and re-proned a full squad at the breach under heavy contact. The m_bCqbStandToClear rule is now a continuous patrol across approach, breach and sweep (the old rule ran only in the CLEAR state and never saw the breach), acts only on members actually prone (a combat crouch stays), and a member a Game Master explicitly pins PRONE stays down - the CRX stance attribute writes through the vanilla stance API and is read back from it, and DCO's scenario-wide Forced Global Stance counts too. An explicit order beats the rule. - Fixed grenade throws being cancelled mid-windup by our own orders: every CQB push goes out at the assault priority (1000) while the engine's throw behaviour runs at 112, so a re-push landing during the windup made the member put the pin back in, which is exactly what the live test saw with breach smoke. A member who has been handed a throw is exempt from CQB pushes for the throw window (5s for smoke, the blast hold for the frag), and the window clears itself; DCO's own lower-priority moves never outvoted a throw and are untouched. - New m_bCqbNoLaunchersInside (on): riflemen carrying AT tubes no longer breach with the launcher out. While a group has a live sweep job, the walking-around weapon pick runs against infantry at room range with rocket and grenade launchers blacklisted (the same native blacklist mechanism vanilla uses for frag grenades under threat), so the AT-utilization tuning of the surrounding AI stack stops reaching indoors. Only the fallback pick is touched, firing decisions against live targets are not, and a man whose only weapon is the launcher keeps it.
- Game Version
- 1.8.0.10
- Created
- Sun, 30 Aug 2026 14:03:30 GMT
- Last Modified
- Sun, 30 Aug 2026 14:03:34 GMT
2.2.0
Big Fix Patch, improving on the original mod and fixing bugs. FIXES: AMBUSHES AND KILL-ZONES - Ambush groups now freeze in place and lie in their stance (prone by default, with a new per-position stance option) while they hold fire, and only move again when the ambush springs, so ambushers no longer leave their positions to chase contact or flee while waiting. - Ambushers no longer break and flee while holding: a morale break or an approaching vehicle no longer pulls a waiting ambush group out of position. Once sprung the group fights normally and can break like any other. - The Ambush Position circle now springs its groups when an enemy walks into it, so an ambush still triggers when a frozen group cannot perceive the enemy itself. - Ambush stance is AUTO by default: ambushers drop prone as the sign the ambush is armed, a Forced Global Stance set on the unit is respected, and picking a specific stance per position overrides both. The stance is applied before the freeze, fixing ambushers that stayed standing instead of going prone. - Ambush stance now goes through the engine's own stance-change pipeline (the same call the base game AI and CRX's working group stance attribute use) instead of an instant snap, so frozen ambushers actually go prone and stay down; AUTO also respects a stance set on the unit's own menu. - Ambushers keep their stance through the spring (no stand-up blip to give the position away) and fight from where they were placed: the standoff floor no longer backs a close ambush out of its kill-zone or pins a far one at its weapon range. - A sprung ambush opens up instantly: the kill-zone now reveals the enemy it tripped to the ambushers' whole group decision stack the moment it springs, so attack orders go out immediately instead of waiting for the first soldier to visually spot the target. Line of sight is still needed to actually pull a trigger, which keeps the ambush honest. - Sprung ambushers skip the Reaction Speed no-fire hold (a pre-planned ambush is not a surprise contact) and their contact drill is pinned to hold-and-suppress, so they stay on the firing line the Game Master placed them on and put the fire-rate boost out instead of leaving the ambush to flank or break off. - An enemy vehicle that trips the kill-zone is handed to the ambushers as the vehicle, so AT troops pick their rockets and machine gunners their guns against the convoy instead of shooting rifles at passengers. - A sprung ambush now opens with a five second accuracy buff: the whole element's skill is raised to the engine's top grade, which zeroes aim error in the aim-offset node, so the pre-aimed opening volley lands on moving targets before each member's original skill is restored. The engine's shot-release tolerance still applies to fast movers, and the hold-and-suppress drill keeps the fire-rate boost. - Fixed a sprung ambush keeping its opening accuracy buff forever when the ambush was disarmed inside the five second window: disarming now restores each member's original skill on the spot, and a spring that could not read the world clock restores on the next tick instead of never. - The ambush spring now unfreezes the group before handing it the kill-zone target, so no failure in the reveal step can leave a sprung ambush frozen and latched, and the spring logs a DCOX debug line so a live test can confirm the moment it fires. - Fixed the typed Pair Tag not reaching the server: the number typed into the GM panel stayed on the client's copy of the zone, so a linked kill-zone never deleted its siblings when tripped and paired to the nearest ambush instead. The typed path now writes through the same client-plus-server link the Link Pair action uses, so linked kill-zone behaviour works however the pair was set. - Ambush Position and attribute hints updated to match the new behaviour. CQB: DOORS, STACKING AND ENTRY - Interior doors open during the sweep, so rooms behind closed doors actually get cleared: the entry drill fixed the breach door, but every clear move is per-member and per-member moves have no door recovery, so a member sent into a closed room walked against its door until the node dwell gave up and the sweep shuffled on, then came back, which read as the squad pacing between the same spots deciding nothing. Any closed door within reach of any sweeping member is now opened by that member on a per-door cooldown, the way a clearing team opens every door it passes. Same m_bCqbDoorDrill switch as the entry drill. - Squadmates are cleared out of the door's swing arc, not just the point man: while the drill works a closed door, any group member found inside the arc is pushed out along his own radial to his side of the frame, on a per-man cooldown so nobody is re-ordered mid-step. One body in the swing is enough to jam an outward door, and the live pattern was exactly that: the crowd by the frame, not the opener himself. - Doors that open toward the squad no longer jam on the point man's own body: the doorstep he walks to sits inside the swing arc of an outward-opening door, so he was blocking the swing he had just asked for. He now backs off outside the arc and to his own side of the frame before working the door, waits there while it swings, steps in once it reads open, and if the door still barely moves (a squadmate crowding the arc) the backoff widens once and the action is retried. The file hold for the following men doubles while the door is being worked, so nobody walks into the arc mid-swing. - CQB squads can now actually open closed doors: AI door-opening exists in exactly one place in the shipped game, the group-level move tree's failed-navlink recovery, and every move the CQB layer issues is per-member, so a member walking into a closed door had no recovery at all and the squad piled up against it. The door drill's point man now performs the door's own user action (the same call the vanilla door node makes, double doors included) the moment he is at the breach and the door is not already opening. This hole is in original DCO too, masked by buildings whose doorways ship open. - CQB door drill: the point man now opens the door alone while the squad holds its stack beside the wall, and each next man is released only once the man before him is physically through the door plane, with a 4 second per-man timeout if the point man dies on the threshold. The old fixed-interval file released everyone on a clock that ignored how long the door takes to open, so the squad arrived together and the bodies standing in the swing arc physically stopped the door from opening at all, which is the mass-at-the-door report from the live server. New m_bCqbDoorDrill, on by default; off restores the interval file. - The side stack no longer quietly rebuilds the fatal funnel: navmesh hugs wall faces, so the single wall-side snap often missed and every failed slot fell back to DCO's front-of-door line, or to the door point itself when that also failed. Wall candidates now walk outward in steps before giving up, the rear fallback starts clear of the door swing arc, and a building where the side stack has no entry to anchor on logs one debug line naming the front-line fallback instead of hiding it. - Clear Buildings sweeps move smoother: clear moves now carry the CQB assault priority for Clear Buildings waypoints exactly as they do for Search & Destroy, so members walk to the breach instead of shuffling in front of the building while other behaviour outvotes the approach. SEARCH & DESTROY AND GARRISON - Search & Destroy now owns the sweep: while the clear machine is working a building the hunt defers its investigation tiles, and the moment the sweep pauses the grid hunt resumes on its own. Clear moves carry the CQB assault priority, so members walk to the breach instead of their tiles, while a visible contact still outranks the sweep. The dedicated Clear Buildings waypoint is untouched. - Defenders now garrison buildings: a defender standing within 30 m of a building splits across its baked firing points (windows and corners) and holds them, with a navmesh ring as the fallback, and the idle spread and patrol layers now leave defenders alone so they keep their positions. Ships on by default; servers can turn it off with m_bEnableGarrison. CONVOYS AND GAME MASTER ORDERS - Convoys no longer back into each other under contact: the vehicle doctrine now yields its combat drills while a Game Master waypoint is current, so a force-moved column follows the order instead of re-issuing its own moves, and the drive-through drill keeps the column's direction of travel rather than reversing away from a threat ahead of it. - A Game Master force move now overrides morale: a group under a GM order no longer breaks and flees, or runs from an enemy vehicle, mid-order, which is what made overwhelmed groups ignore the force move while in contact. Normal breaking resumes the moment the order is gone. THE COMMAND BAR AND CLEAR BUILDINGS PLACEMENT - Fixed the Clear Buildings waypoint not appearing in the editor: the modded editor mode prefabs now carry the full editor component set again, and the command and systems registries are merged copies of the game's own, so the waypoint registers in the command bar and the placing list in both the world editor and Game Master mode. The command bar entry is also appended at editor init with a duplicate guard, so it still shows when another mod's editor mode file or command list wins the shared-file race. - The Game Master command strip is widened from 9 to 11 slots by a layout override, because the strip cannot page on mouse and keyboard: the pager arrows are hidden once at widget attach, before the bar has any content, and nothing ever shows them again, so every command past the ninth was simply unreachable on PC (this is why Clear Buildings showed on REAPER fleet servers, whose own override of the same layout already widens it to 11, and not on unit servers). 11 columns matches REAPER's file exactly, so on a shared server whichever override wins the result is identical, and all ten commands now fit on one page; Clear Buildings keeps its place at the far right and Artillery Fire returns to its vanilla sort position. - The Game Master command bar now ships as a short curated list: the nine vanilla waypoint commands plus Clear Buildings, with the objective task commands and the spawn point command dropped from the bar; the console command wheel gets the same short list. Wherever REAPER's own short list wins the shared command file the bar stays REAPER's three helicopter commands plus Clear Buildings, unchanged. - The Clear Buildings waypoint now sorts to the END of the waypoint commands, the far right of the Game Master command strip, with a high sort order so it sits after every vanilla waypoint instead of wherever the list sorting put it; the on-foot check also no longer hides it while a freshly placed group's leader is still registering. - Fixed the Recursive call of Invoke exception when placing a Clear Buildings waypoint on a group that already holds a waypoint chain with a cycle waypoint: the group's waypoint-added event re-parented the waypoint's editable entity, the parenting cascade re-added the same waypoint, and the event re-entered itself mid-broadcast. The editable parenting for our waypoint is now deferred by one frame, outside the event window, so the cascade terminates instead of recursing; every other waypoint keeps the vanilla synchronous path. The waypoint always worked despite the exception, but subscribers later in the aborted broadcast were silently skipped. TASK ZONES AND GM TOOLING - Task Zone circles now show in the Workbench world editor while placing and editing zones, so ambush positions, kill-zones and the other DCO markers show their radius before the game is running. - Task Zone circles now render in game as the same gradient circle boundary the base game AI waypoints use, replacing the wireframe cylinder; the kill-zone keeps the red Danger material so it still reads as the one zone that kills. - The gradient circle boundary now covers the whole DCO marker set: the QRF range preview, the commander Objective Zone and the Clear Buildings waypoint render the same waypoint-style disc as the Task Zones, replacing the old wireframe cylinder. - The Zone Role setting is now a proper dropdown row on the Task Zone placeable, hidden on the named placeables (Ambush Position, Kill-Zone, Convoy, Clear) where the role is baked in. - GM attribute tabs are cleaned up per zone: the Pair ID row (and with it the Ambush tab) now shows only on the Ambush Position and the Kill-Zone, the Defend and Reinforce zones lock their baked role like the other named placeables, the duplicate DCO Extensions Zone Role row is gone (the 25th DCO Zone Role row is the single picker on the generic Task Zone), and the unused Convoy Zone placeable is hidden from the Game Master browser. - Fixed the zone placeables losing their role on load: the role field lost its serialization attribute when the Game Master role row moved to a registered attribute, so the world loader rejected the stored role in every zone prefab and placed zones spawned with no role. The field serializes again, the Game Master row still comes from the registered attribute, and the role-lock flag is now serialized the same way. - Fixed the Zone Role and CQB assault priority dropdown rows loading their value lists: those attributes extended the slider attribute base, which has no value array, so the conf values were rejected at load and the rows rendered broken. They now extend the float-value-holder base that actually owns the list, and the unsupported buttons-per-row entries are gone. - Placeable names no longer depend on a string table that Workbench play mode cannot load: the names are plain text again, so they display properly in the world editor and in game, and the unused localization files are gone. - The 25th DCO Ambush tab now carries the DCO icon. LOGGING AND LOG NOISE - The per-frame tooltip texture error is silenced at its source: the vanilla text-and-icon tooltip row ships an authored placeholder texture that widgets refuse to load, so every tooltip rebuild logged the failure. The placeholder has never rendered for anyone (the error was its load failing), so the layout override simply clears it; tooltip icons set by code are untouched. - The kill-zone trip and the command-bar registration now write script-log lines, so a Workbench or server test can be read back afterwards: the trip line (under DCOX debug) carries the pair ID and how many sibling kill-zones were deleted, and the registration line always states whether Clear Buildings is on the bar.
- Game Version
- 1.8.0.10
- Created
- Sun, 30 Aug 2026 00:38:49 GMT
- Last Modified
- Sun, 30 Aug 2026 00:38:53 GMT
2.1.1
Fixes: - Force Move now wins over the standoff floor. A squad a Game Master orders somewhere keeps moving and fires on the move instead of stopping at its weapon's range to fight nearby contact. Only Game Master waypoints are affected; patrols, garrisons and defenders keep their standoff and still refuse to charge to knife range.
- Game Version
- 1.8.0.10
- Created
- Fri, 28 Aug 2026 12:20:04 GMT
- Last Modified
- Fri, 28 Aug 2026 12:20:07 GMT
2.1.0
Fixes - The published 2.0.0 packed the bundled resources under freshly generated IDs, so the 25th DCO Game Master tab and the placeable zones never registered. The original IDs are restored and verified in the packed build: the 25th DCO and 25th DCO Base tabs, the Task Zone placeables and the Objective Zone all appear in the Game Master again. - Every dropdown attribute layout pointed at an ID the current game build no longer carries, which would have left button-box settings like Troop Grade and Spawn Formation broken. Repointed to the live ID in the bundled and extension lists. - Task Zones are Game Master editable: radius and role change live on a selected zone, and changing a role first clears the old role from every group inside, so nothing keeps a stale flag. - Click-to-link pairing: select one Ambush Position and one Kill-Zone and use Link Pair in the context menu, and both zones take a fresh shared Pair ID. No more typing the same number into two zones. - The CONVOY and CLEAR zone roles existed in code with no way to place them; both are now Game Master placeables alongside the other DCO Task Zones. - The external commander digest no longer fills its 60-group cap with whatever the engine listed first: groups in contact sort first, then by threat, blank-faction noise is dropped, and the map name is included. - A junk commander objective at the world origin no longer appears.
- Game Version
- 1.8.0.10
- Created
- Thu, 27 Aug 2026 20:20:41 GMT
- Last Modified
- Thu, 27 Aug 2026 20:20:44 GMT
2.0.0
DCO EXTENSIONS 25th Direct Combat Overhaul, now built in, plus the extension layer that fixes the behaviours that stopped it doing what it was built to do. The original was pulled from the workshop, and it is MIT licensed, so the whole mod now ships inside this one: same systems, same Game Master tab, same config files. REQUIRES - CRX Enfusion A.I. FEATURES AI behaviour (bundled from 25th DCO) - Morale: groups break, surrender, rally, and a surrender can be a trap. - Suppression: pinned units keep their heads down, seek cover, pop smoke and dig in. - Tactical movement: flanking, bounding overwatch, cover-aware repositioning, weapon-aware standoff. - Urban combat: room-by-room CQB clearing, garrisons, ambushes, machine-gun emplacements. - Vehicles: convoy doctrine, armoured angling, hijacking, safe eject. - Commander: reserves, QRF responses, objectives, and an optional external bridge for a server owner's own brain. Extension fixes - QRF zones stop dragging their groups back to the centre past 30 m and yield to your orders. - The commander skips groups already under orders, and all ten objective scoring fields are settable. - The ADVANCE course of action is implemented, so a group pushes through contact instead of stalling. - Convoy columns close up behind an arrived leader, drivers stay on the road, vehicle crews stop doing infantry drills. - Standoff is close-only: AI never back away from a fight to hold their minimum range. - CQB stacks gate on the nearest man, sweeps cover every floor, and Clear Buildings sits on the GM command bar. - Zone placeables take a faction; zones and objectives render as map markers. - Stuck AI horn honking is silenced without killing the early-warning honks. CONFIGURATION One file, written fully populated on first boot: $profile:DCO_Extensions.json. Sits beside DCO_Settings.json. Any key removed keeps its default, and a file that cannot be parsed is never overwritten. SETUP Subscribe with CRX, start once, edit the config, restart. Server-side, nothing attaches to a mission. "[DCOX] DCO Extensions loaded" confirms it is running. CREDIT 25th Direct Combat Overhaul is by Playmaking, MIT licensed: https://github.com/25thplaymaking/25th-DirectCombatOverhaul. CRX Enfusion A.I. is by ATiM-.
- Game Version
- 1.8.0.10
- Created
- Thu, 27 Aug 2026 18:34:57 GMT
- Last Modified
- Thu, 27 Aug 2026 18:35:03 GMT
1.4.5
Changes: - The convoy stuck test kept re-asserting a move at mounted groups that had already arrived. Stopped, off throttle and under orders is also exactly what a group holding on its waypoint looks like, so it was ordered to the spot it was already sitting on, at priority 1500, which outranks fighting. It matters for a Move waypoint with a Defend queued behind it, where the group is meant to hold and shoot, and it ends by logging "this column needs a GM" about a group that was fine. Mounted groups only: a group that dismounts on arrival was never affected. The stall kick always stood down on arrival and the stuck test did not; it now does, and a column that arrived with its tail strung out is closure's case as before.
- Game Version
- 1.8.0.10
- Created
- Sun, 16 Aug 2026 23:03:59 GMT
- Last Modified
- Sun, 16 Aug 2026 23:04:02 GMT
1.4.4
Two new settings. No convoy, CQB or marker behaviour touched. - What the horn actually is, measured: 1 pressed, 0 released, -1 untouched. It is not held down - every press releases within 100ms, so continuous honking is a train of pulses. Trigger is civilians on the road, and it OUTLIVES them clearing, which is the part that is actually wrong. - m_bMuteAiHorn no longer blanket-mutes. A driver honking past m_fHornMutePatienceSec (8s) is silenced for m_fHornMuteHoldSec (30s), then released to prove whether it still needs to. Early warning honks survive, the stuck ones do not, and only flagged drivers cost anything. - The old mute wrote to the correct place and still failed: a 100ms timer against a 100ms press clears about half. Suppression now runs at frame cadence, for flagged drivers only. - Probe: logs how many crews it is watching, and any change in the raw value rather than only values above zero. Silence was ambiguous between "watched nobody" and "watched crews and saw nothing", and the old rule came from a single -1 reading that turned out to mean the opposite of what I assumed.
- Game Version
- 1.8.0.10
- Created
- Fri, 14 Aug 2026 12:01:23 GMT
- Last Modified
- Fri, 14 Aug 2026 12:01:25 GMT
1.4.3
Diagnostic changes, off by default. No convoy, CQB or marker behaviour touched. - The probe now logs how many crews it is watching, whenever that number changes. Silence used to be ambiguous between "watched crews and saw no horn" and "watched nobody", and only the first means anything. - It now logs any change in the raw horn value, printed as a number, instead of only values above zero. That rule came from a single -1 reading off a mortar and may have made the probe blind to the thing it exists to catch. - Why: a session with audible honking produced zero probe events. Either the horn is not on the input surface script can read, in which case m_bMuteAiHorn can never work and both settings should go, or it reads negative and the probe was filtering it out. The next session with honking answers it.
- Game Version
- 1.8.0.10
- Created
- Fri, 14 Aug 2026 11:41:56 GMT
- Last Modified
- Fri, 14 Aug 2026 11:41:58 GMT
1.4.2
One new setting, one changed default. - New m_iConvoyKickBudget (5). The stall kick and stuck test now share a cap per stretch of no progress, because a kick that has not worked five times running will not work. One column took 25 re-issues in 15 minutes with zero movement, each one an order to grind into a pile it could not clear. Resets when the column moves 15m or gets a new order. On exhaustion it logs once and stands down: that column needs a GM. - m_iConvoyOrderPriority default is now 1500, was 1000. Priority is base + level, and a move's base is only 30-50, so orders at level 1000 landed under attack at 1120 and combat won: that is why a rescued column in contact would not drive. 1500 beats every player-level combat behaviour and still yields to a GM's own commands. Convoys will now push through an ambush rather than stop and fight it. - EXISTING CONFIGS KEEP THEIR OLD VALUE. Migration never overwrites a key you already have, so edit m_iConvoyOrderPriority to 1500 yourself or the change does nothing.
- Game Version
- 1.8.0.10
- Created
- Fri, 14 Aug 2026 10:57:22 GMT
- Last Modified
- Fri, 14 Aug 2026 10:57:39 GMT
1.4.1
Eight new settings. m_fConvoySeparationSec and m_fConvoySeparationDist now do nothing. - DCOX was sometimes ignoring your config entirely. Everything boot-time hung off OnGameModeStart, which does not always fire; when it does not, the config is never read and the mod runs on compiled defaults. It hides itself, because the first casualty is m_bDebug and the logs go quiet with it. Boot is now idempotent with a second trigger on player join. Check for "[DCOX] DCO Extensions v1.4.2 loaded" after a restart: no line means the config was not read. - The convoy stuck test is now based on THROTTLE. It used to fire on proximity, but a convoy is vehicles deliberately close together, so it described a healthy column every time one compressed on a turn or queued at a junction, and each firing braked the whole column. A vehicle is now stuck only if it is stopped, not applying throttle, and has been for m_fConvoyStuckSec (45s). A vehicle asking for power is never touched, whatever its speed, which is what stops us braking a truck grinding uphill. - m_iConvoyStuckVehicles (1): how many must qualify, so a partial column wedge still counts. m_fConvoyStartGraceSec (12s): no judgement that soon after a new order, since a column just told to move is stationary and bunched. - Convoy destinations are snapped onto the road network before being ordered (m_bConvoyRoadSnap), using the call vanilla's resupply solver uses. Falls back to the raw position when no road is reachable. - New m_bEnableConvoy, in the Game Master panel: a master switch for the whole convoy layer. It acts ambiently on every mounted group including other mods' convoys, so this turns DCOX out of vehicle movement entirely, mid-session. See README.md, "Compatibility with other mods". - Fixed: Game Master panel sliders showed percentages and meaningless numbers. Wedge patience and CQB stagger now read in seconds; CQB assault priority is three labelled buttons.
- Game Version
- 1.8.0.10
- Created
- Fri, 14 Aug 2026 01:28:27 GMT
- Last Modified
- Fri, 14 Aug 2026 01:28:31 GMT
1.4.0
Changes - A crew mounted on a mortar reads as "in a vehicle", so convoy, wedge and horn logic all acted on them. Convoy re-asserted a group move order every 12s, which pulls the crew off the tube. That is why mortars did not fire. - All three now accept ground vehicles only. Wedge recovery also ignores waypoints that mean "hold position": artillery support, defend, smart action, animation, smoke cover. - m_bWedgeSkipAircraft is replaced by m_bWedgeGroundVehiclesOnly. The old key is dead and can be deleted; both default on, so nothing changes if you leave it. - Horn probe: a press is now value > 0. It was reading -1 from mortars, which have no horn. - Debug lines now log distance to the nearest road. Measurement only, nothing depends on it yet. - New "DCO Extensions" tab in Scenario properties: 3 marker settings, debug logging, 3 convoy recovery, 2 CQB. - Changes apply on the next tick but are SESSION ONLY. The config file remains the source of truth at boot; anything you want kept goes in the file. - Convoy and CQB entries are temporary, for the current testing, and come out later. - Settings that are only read at boot (commander tuning, horn mute, horn probe) are deliberately absent rather than offered as controls that do nothing until restart. - Players could see the GM markers. Both privilege checks asked whether the player had an editor manager, and vanilla gives every player one on connect, so both passed for everybody. Present since markers were added in 1.0.9. - Server now requires EPlayerRole.GAME_MASTER; the client requires a non-limited editor and drops markers if that changes mid-session. - m_bEnableMarkers stays off by default. Turning it on is now safe.
- Game Version
- 1.8.0.10
- Created
- Fri, 14 Aug 2026 00:21:55 GMT
- Last Modified
- Fri, 14 Aug 2026 00:22:01 GMT
1.3.2
Recovery for the one convoy failure nothing in the mod could previously see. Eight new settings, all on by default, no change to anything already working. THE PROBLEM - A vehicle physically jammed against another vehicle reports NO move error at all. In the 1.3.0 test one group sat at exactly 433m from its waypoint through three stall kicks over a full minute and never raised a single failure. As far as the engine's mover is concerned that vehicle is fine, so 1.3.0's deadlock recovery structurally could not see it, and re-issuing a move order cannot free a physical wedge anyway. A group that had merely stalled recovered normally in the same log (393m then 57m), so the discriminator is simply whether the distance changes. THE FIX - m_bEnableWedgeRecovery watches the leader's actual position instead of waiting for an error. A mounted group holding a live waypoint that has not moved m_fWedgeMoveToleranceM (5m) in m_fWedgeEscalateSec (90s) is treated as wedged. 90s is deliberately longer than the convoy stall kick so the cheap fix gets first refusal. - Escalation is physical, because the problem is physical: the crew is dismounted at vanilla's own high priority, and m_bWedgeDropVehicle removes the vehicle from the group's usable list so they cannot re-board the same wedged truck. The group continues on foot. Once per order; a new waypoint clears the lock. GUARDS A position sample cannot tell a jammed truck from a crew sitting still on purpose, and the escalation is destructive enough that a false positive is worse than a missed wedge. Four exclusions: - ARRIVED. Inside the waypoint's completion radius, they got where they were sent. A mounted defend or wait waypoint is stationary by design. m_fWedgeArrivedRadiusM (25m) is only a floor; the waypoint's own radius wins when larger. - AIRCRAFT. A helicopter holding a hover or parked on an LZ samples as motionless. m_bWedgeSkipAircraft excludes helicopters and planes, which no longer accumulate wedge time at all. - DOCTRINE. DCO holds crews still deliberately for overwatch and herringbone, and its own m_bVehDoctrineDismountStuck already owns the genuine stuck-transport debus. m_bWedgeSkipUnderDoctrine stands our watch down while DCO has an active vehicle intent. - REFUSED. A get out is a request and can be refused; CRX force-stay-in-vehicle refuses it at any priority. Worse, ActivityGetOut.bt has no timeout and completes only once the crew is actually out, so a refused order would sit on the group forever at the priority we gave it and stop it driving: the same deadlock this feature exists to remove, caused by us. m_fWedgeVerifySec (15s) after the order we check where the crew actually is. Out, and the vehicle is dropped as before. Still aboard, and the order is cleared off the group and the vehicle left alone. ALSO - DCO's safe-eject gate protects none of the above. It hooks AskOwnerToGetOutFromVehicle, but AI dismount runs through the native GetOutVehicle in SCR_AIChangeCompartment, and the only caller of the gated method anywhere in the game is the forced-eject path. Nothing upstream was going to veto an unsafe AI dismount, which is why the aircraft guard has to be ours. - The horn probe added in 1.3.0 still has not been exercised. Every test so far ran with m_bHornProbe off and m_bMuteAiHorn on, which is exactly backwards: it suppressed the thing it was meant to measure. Run with the probe on and the mute off.
- Game Version
- 1.7.0.54
- Created
- Thu, 13 Aug 2026 09:00:06 GMT
- Last Modified
- Thu, 13 Aug 2026 09:00:13 GMT
1.3.1
Adds recovery for the one convoy failure that nothing in the mod could previously see. Four new settings, no behaviour change to anything already working. THE PROBLEM - A vehicle physically jammed against another vehicle reports NO move error at all. In the 1.3.0 test one group sat at exactly 433m from its waypoint through three stall kicks over a full minute and never raised a single failure: no STUCK, no UNKNOWN, nothing. As far as the engine's mover is concerned that vehicle is fine. - That means it never reaches the move-failure path, so 1.3.0's deadlock recovery structurally could not help it. The only system that noticed was the convoy stall kick, and re-issuing a move order cannot free a physical wedge, which is why it kicked three times and nothing moved. - A group that had merely stalled recovered normally in the same log (393m then 57m), so the discriminator is simply whether the distance changes. THE FIX - New m_bEnableWedgeRecovery, ON. It watches the leader's actual position rather than waiting for an error. A mounted group that holds a live waypoint and has not moved more than m_fWedgeMoveToleranceM (5m) for m_fWedgeEscalateSec (90s) is treated as wedged. - Escalation is physical, because the problem is physical: the crew is dismounted with a get out activity at vanilla's own high priority, and with m_bWedgeDropVehicle (on) the vehicle is then removed from the group's usable list so they cannot simply re-board the same wedged truck. The group continues on foot. - 90s is deliberately longer than the convoy stall kick, so the cheap fix gets first refusal and this only fires once that has demonstrably failed. Escalation happens at most once per order, and a new waypoint clears the lock. ALSO - The horn probe added in 1.3.0 has not been exercised yet. The first test ran with m_bHornProbe off and m_bMuteAiHorn on, which is exactly backwards: it suppressed the thing it was meant to measure. Run with the probe on and the mute off.
- Game Version
- 1.7.0.54
- Created
- Wed, 12 Aug 2026 21:12:32 GMT
- Last Modified
- Wed, 12 Aug 2026 21:12:34 GMT
1.3.0
Root cause found for the stuck convoy that honks and never recovers. It is not DCO and it is not us: SCR_AIProcessFailedMovementResult, the vanilla group-tree node that handles a failed move, deliberately latches the group into a permanent RUNNING state. The shipped source says so in a comment: "As a result group will be stuck to allow us to debug it". A debugging convenience made it into the release build, and it locks an AI group in a live game. WHAT HAPPENS - A waypoint move fails with EMoveError.UNKNOWN, which does not mean "unclear" - it is specifically a navmesh or configuration failure. In tight streets that is routine, which is why it eased once convoys reached open terrain. - The node sets an internal latch and returns RUNNING. Every later tick returns RUNNING on the first line without doing anything. The group is wedged until the node is re-entered, and only re-entry clears the latch. That is why deleting and recreating the group was the only workaround: a new group means a new node instance. - The node's error print is one-shot, so the log shows a single line and then silence. That is why this hid for so long. THE FIX - New setting m_bEnableMoveRecovery, ON by default. It listens on SCR_AIGroupUtilityComponent.GetOnMoveFailed, a public invoker that fires BEFORE the deadlock branch. Vanilla consumes the same invoker in SCR_ResupplyTaskSolver, so this is a supported seam rather than a hack. - On the deadlock case only (UNKNOWN plus waypoint related), the current waypoint is removed and immediately re-added. That forces a re-path and re-enters the node, which clears the latch. Every other failure is left alone because vanilla already handles those correctly. - Attempts are capped by m_iMoveRecoverMaxAttempts (3) and spaced by m_fMoveRecoverCooldownSec (10s). The budget is keyed PER WAYPOINT, so a new order always gets a fresh budget and an unreachable one cannot retry forever. This is the same lesson as the 1.2.4 pass cap: a latch keyed to the group alone disarms itself for the rest of the mission. - On exhaustion, m_bMoveRecoverDropVehicle (on) removes the stuck vehicle from the group's usable list so the group continues on foot instead of standing in the road. That is exactly what vanilla's own SCR_AIRemoveStuckVehicle node does. HORN - No behaviour change, but the previous explanation was wrong and is worth correcting. Searching all 46 installed addon paks plus loose source, the only SetVehicleHorn caller anywhere is our own mute, so emission is native driver code. That part holds. - What does not hold is "the horn cannot be suppressed from script". SetVehicleHorn is a settable proto and the mute polls at 100ms against an engine running frames at 16 to 33ms, so it was never a fair test. Treat m_bMuteAiHorn as untested rather than proven ineffective. - Continuous honking while a vehicle is actively moving also rules out the simple blocked-driver story. The working theory is now that the driver gets blocked once, presses the horn, and never releases it. - New setting m_bHornProbe, OFF by default, with m_iHornProbeMs (100). Read-only telemetry that logs horn transitions and nothing else, plus one line when a horn is held past 20s. It answers one question: does the horn ever release. Run it with m_bMuteAiHorn OFF, or it measures our own writes rather than the engine's. NOTES - Six new settings. Existing config files are migrated in place at defaults and no existing value is touched, as always. - Nothing in the convoy, CQB or marker layers changed. 1.2.4 behaviour is intact.
- Game Version
- 1.7.0.54
- Created
- Wed, 12 Aug 2026 20:46:42 GMT
- Last Modified
- Wed, 12 Aug 2026 20:46:44 GMT
1.2.4
A follow-up to 1.2.2. That release let convoy closure run while a waypoint is still live, once the leader has arrived. This makes the safety limit on it work, and nothing else changes. - Closure's pass cap now actually caps. It re-arms its four passes per ORDER, keyed to the waypoint changing, instead of resetting every tick a waypoint happened to be live. - The old per-tick reset was harmless while closure required the group to have no waypoint at all, because the waypoint was always gone by the time closure ran. After 1.2.2 the waypoint IS live whenever closure runs on the new path, so the counter refilled faster than it could fill and the cap would never have fired. - Left alone, that meant closure could re-order a column every m_fConvoyClosureReissueSec (8s) indefinitely - the shuttling and horn behaviour the old strict gate existed to prevent. Each order now gets one budget of four passes and cannot refill it. - No new settings. m_bEnableConvoyClosure false still disables the whole feature.
- Game Version
- 1.7.0.54
- Created
- Wed, 12 Aug 2026 15:00:17 GMT
- Last Modified
- Wed, 12 Aug 2026 15:00:19 GMT
1.2.3
A follow-up to 1.2.2. That release let convoy closure run while a waypoint is still live, once the leader has arrived. This makes the safety limit on it work, and nothing else changes. Closure's pass cap now actually caps. It re-arms its four passes per ORDER, keyed to the waypoint changing, instead of resetting every tick a waypoint happened to be live. The old per-tick reset was harmless while closure required no waypoint at all, because the waypoint was always gone by the time closure ran. After 1.2.2 the waypoint IS live whenever closure runs on the new path, so the counter refilled faster than it could fill and the cap would never have fired. Left alone, that meant closure could re-order a column every m_fConvoyClosureReissueSec (8s) indefinitely — the shuttling and horn behaviour the old strict gate existed to prevent. Each order now gets one budget of four passes and cannot refill it. No new settings. m_bEnableConvoyClosure false still disables the whole feature.
- Game Version
- 1.7.0.54
- Created
- Wed, 12 Aug 2026 14:59:54 GMT
- Last Modified
- Wed, 12 Aug 2026 15:00:04 GMT
1.2.2
This reverses advice given in 1.1.2 and repeated in 1.2.1. That advice was wrong and it locked two convoys, so the correction is its own release rather than a quiet edit. WHAT WAS WRONG - Completion Type governs WHEN THE WAYPOINT COMPLETES and nothing else. It does not keep anyone driving. Trailing vehicles stop when the LEADER reaches the waypoint under every setting, because a group spread over several vehicles is one move order and that movement ends on the leader's arrival. - So ALL never brought a column in. It only stopped the waypoint completing - and that is strictly worse, because convoy closure stands down while the group holds a waypoint. ALL keeps one live forever, so closure never fired, and closure is the only thing that recovers trailing vehicles. Choosing ALL silently disabled the mechanism that would have saved the column. - Symptom: the column parks short of its own waypoint with the order still running, will not accept a new order, and only a delete-and-recreate frees it. Seen twice, both times about 19m short. Waypoint radius is not the cause - one case used 50m. WHAT TO DO - Leave convoy waypoints on ANY, the vanilla default, and leave m_bEnableConvoyClosure on. The waypoint completes on arrival and closure walks the trailing vehicles up to the leader. That is the working combination. FIXED - Closure no longer requires the group to have NO waypoint. A live waypoint stands it down only while the leader is still outside the completion radius. Once the leader has arrived, the move is over in every sense that matters and only the tail is late, which is exactly what closure is for. This also means a column that arrives under ALL now gets its tail recovered instead of locking, so an existing mission with ALL set is no longer unrecoverable.
- Game Version
- 1.7.0.54
- Created
- Wed, 12 Aug 2026 14:55:35 GMT
- Last Modified
- Wed, 12 Aug 2026 14:55:37 GMT
1.2.1
Two convoys stalled in one session, for two completely different reasons, and neither was what we had been fixing. Config gains 2 keys and self-migrates. AI NO LONGER MAN TURRETS WHEN THEY HAVE SOMEWHERE TO BE - m_bAssetUseRespectsOrders - DCO's asset use peels a squad member onto a nearby static weapon during contact and sends him back when it clears. That is good behaviour for a group holding ground and ruinous for one under orders, because of an interaction DCO documents itself: while a member mans the asset, IsGroupInVehicle() reads TRUE for the whole group. - So a convoy that stops for a distant contact anchors itself to a turret, reads as mounted to every other system, and cannot leave until the contact clears. One distant unresolvable enemy never clears. Measured: a group manned an asset and then moved SEVEN METRES in nine minutes while its move order was re-issued forty-five times. - Groups under orders (a waypoint, or a convoy id) no longer man assets. Untasked groups keep the feature, which is what it was written for. Leave DCO's own m_bEnableAssetUse on. - Known gap: this prevents a member starting on an asset, it does not recall one already there. A group caught mid-turret still needs deleting and recreating. GM MARKERS NOW ACTUALLY APPEAR - They never once ran. The client half was started from SCR_BaseGameMode.OnGameModeStart, which fires on a REPLICATED STATE CHANGE - so a client joining a server whose game mode is already running never sees it. On a live server that is everybody, so the code that draws the markers was never reached. - Started from the player controller instead, which is created for every client on join. Added server-side logging on the request path so a failure now says which link broke rather than showing nothing. A STUCK VEHICLE NO LONGER LATCHES - m_bVehClearDisabledUnderOrders - DCO's disabled flag latches, and the only thing that clears it is the vehicle moving. A crew being handled as disabled is not being driven anywhere, so it never moves, so the flag never clears. Raising the threshold (1.1.2) delayed the trip without breaking the loop. - While a group is under orders the latch is now cleared outright. An unordered group keeps DCO's behaviour, so a genuinely immobilised vehicle is still recognised. IF YOU USE COMPLETION TYPE "ALL", GIVE THE WAYPOINT ROOM - ALL holds a waypoint open until EVERY member is inside the completion radius, which is what keeps a column together on arrival. But if that radius is smaller than the space the column physically needs to park in, the vehicles cram toward the point, wedge on each other, and the waypoint can never complete - so the order never ends. - Use 50m or more for three or four vehicles. A tight radius with ALL is a trap.
- Game Version
- 1.7.0.54
- Created
- Wed, 12 Aug 2026 14:11:59 GMT
- Last Modified
- Wed, 12 Aug 2026 14:12:01 GMT
1.2.0
v1.2.0 - THE ASSAULT BUBBLE Everything on top of the live 1.1.2. Config gains 6 keys and self-migrates; the boot line should read "missing 6 setting(s)". SMOKE ON THE BREACH - m_bCqbSmokeApproach - The stack now pops smoke on the doorway as it moves up to it. Crossing the last stretch to a door is where a stack is most exposed, and screening it is what the movement looks like when it is done properly. - Vanilla owns the mechanism and we use its recipe unchanged: SCR_AIActivitySmokeCoverFeature builds an SCR_AIMessage_ThrowGrenadeTo with EWeaponType.WT_SMOKEGRENADE at PRIORITY_BEHAVIOR_THROW_GRENADE. This is that, aimed at the breach instead of at a retreat. - One screen per building, thrown by whoever is nearest the door and actually carrying smoke (EUnitRole.HAS_SMOKE_GRENADE). A squad with no smoke simply does not throw - that is the honest outcome, not a failure. Vanilla's own 40m thrower-to-target ceiling is kept, since past that the throw does not land. THE CLEAR WAYPOINT DELETES ITSELF - m_bClearWaypointSelfDelete - Once every building inside the radius is swept, the waypoint removes itself, so a GM is not tidying up after every house. - Uses DCO's own signal: when SELECT finds nothing claimable it resets, cancels so the standing order resumes, and idles. Scoped to a waypoint, that means the job the GM drew is finished. - Guarded on the group having actually cleared something under this waypoint. A squad can also find nothing claimable because ANOTHER squad holds the claims, and deleting on that would make a freshly placed waypoint vanish on the spot. THE ASSAULT BUBBLE - why squads engage from outside instead of going in - Standoff was the reason, and it is not a bug. The standoff floor holds a rifleman 35m off his target so he does not charge a room he will die in, which is correct and is why DCO's AI reads as competent rather than scripted. 1.1.2 tried to out-rank it with order priority, which buys tempo and pays for it in dead troopers. - It is now BOUNDED instead. Standoff keeps full authority everywhere except within m_fCqbAssaultYieldRange (default 40m) of the building the group was ordered to clear, where a clear order means the assault IS the plan and holding at a weapon's floor only means dying outside the door rather than inside it. A squad still crosses open ground to the objective like it values its life. - Measured from the building, so with a 10m waypoint it works out to about "the waypoint radius plus 30m", and it stays right if the waypoint is dragged bigger. m_bCqbAssaultYieldStandoff false, or a range of 0, keeps DCO's standoff everywhere. - 40m is the number this design turns on: too small and they still trade shots from 60m, too large and they commit from further out than you want. AI HORN MUTE - m_bMuteAiHorn, default OFF - A suppression, not a fix, and it ships off deliberately. Nothing in script presses the horn: SetVehicleHorn has ZERO callers across all 5776 vanilla scripts and all 106 of DCO's. The engine's own AI driver sounds it when it considers itself blocked, and vanilla ships only the other half of the interaction (SCR_AIDangerReaction_VehicleHorn, which makes infantry step aside). There is no call to remove and no behaviour to override. - So this holds the horn input at zero on mounted AI, ten times a second, and lets the engine press a button we keep clearing. Players are never touched. - Two costs, which is why it is opt-in: a recurring timer over every mounted AI crewman, and the loss of a real diagnostic, since a honking AI is the engine telling you a driver believes it is blocked. Muting does not unstick anything. - Unknown until it runs: if the engine holds the press this silences it; if it re-presses every frame, honks become short blips and the mute interval needs lowering. CONVOY - m_bEnableConvoyClosure is back ON by default. It was briefly flipped off on the theory that Completion Type ALL made it redundant; that was wrong. ALL governs when the waypoint COMPLETES, and a straggler wedged while the rest of the column arrived has nothing pulling it in afterwards - which is exactly the stuck-lead-car case seen on 2026-08
- Game Version
- 1.7.0.54
- Created
- Wed, 12 Aug 2026 12:13:13 GMT
- Last Modified
- Wed, 12 Aug 2026 12:13:15 GMT
1.1.2
1.1.1 got squads into buildings and clearing them properly, but slowly, and it found three more things. All of this is tuning and fixes on top of 1.1.1, no new mechanisms.
CQB
- The APPROACH now runs at assault tempo. 1.1.1 raised order priority for entry and the interior sweep but left the approach on DCO's own WALK order at priority 0, so the squad strolled to the building under the weakest order the AI has and anything that shot at them outranked it. That is the sluggish approach, and the losses that come from crossing open ground at walking pace during a firefight. Gated on m_bCqbAssaultApproach.
- A squad no longer abandons a building because it was shot at on the way in. DCO's approach watchdog calls MarkCleared on timeout, and that flag is permanent - so a pinned squad did not merely stall, it marked the building clear and could never select it again. The watchdog cannot tell "nothing can path here" from "we are in a fight". The timer is now held forward while the squad has a live contact; with no contact the timeout stands exactly as DCO wrote it. Gated on m_bCqbHoldBuildingUnderFire.
- Stacking on two doors at once is fixed. The stack ran along the wall at frameClear + spacing * (i + 1) with no bound, which at DCO's 1.5m default is about 7m of wall for four men and 12m for eight - longer than a village house. Slots ran past the corner, the navmesh accepted them, and the far men "stacked" at the second door because that is where their slot landed. The run is now bounded by the building's own footprint, and men beyond it fold into a second rank behind the first.
- The Clear Buildings waypoint defaults to 10m, down from 15m. NOTE: m_fClearWaypointMinRadius is a floor and your existing config still says 15.0 - edit it to 10.0 or the smaller waypoint gets pushed back up.
- The command bar button no longer vanishes after giving the squad a move order. Placing an order leaves the NEW WAYPOINT in the selection, so the gate found no group and hid the button until the GM deselected and reselected. It now hides only when every group it can identify is mounted, and defers to the base gate on a selection it cannot read.
CONVOY
- Every order this layer issues now goes out at m_iConvoyOrderPriority (default 1000, PRIORITY_LEVEL_PLAYER). DCO's OrderGroupMoveToPosition is the right primitive but leaves m_fPriorityLevel at 0, so closure, the stall kick, separation and the detour were all arguing with DCO's combat halt from the weakest position the AI has. That is why a column in prolonged contact ends up stuck rather than doing either thing well: two systems pulling at one group, ours unable to win any of it - all of the churn, none of the effect. Set it to 0 to restore DCO's exact behaviour, which is also the quickest way to test whether this layer earns its keep on your server.
- A STUCK VEHICLE IS NO LONGER TREATED AS A DISABLED ONE. This is why convoy crews bail out and pile into one vehicle, and it has nothing to do with damage. DCO's disabled watchdog flags a vehicle purely for not having moved while under a move order, and m_fVehDoctrineDisabledSec defaults to SIX SECONDS - which a column trips constantly just by waiting behind the vehicle in front. Vehicle doctrine then treats the crew as having lost their vehicle and dismounts them, and once on foot in contact they board whatever is nearest, so with hijack enabled the whole convoy ends up in one vehicle. Force Stay In Vehicle does not prevent it because that gate lives in CRX's get-out behaviour and this is DCO's own doctrine path going around it. DCOX now hands DCO a sane threshold instead: m_fVehStuckGraceSec, default 45s, used whenever it is larger than DCO's. The flag still works, so a genuinely immobilised vehicle is still recognised.
- CONVOY CLOSURE NOW SHIPS OFF, because vanilla already solves this and we did not know. A waypoint's Completion Type is EAIWaypointCompletionType { All, Leader, Any } and the move waypoint ships ANY, so the order completes when the FIRST vehicle reaches the radius and every other vehicle's move ends wherever it happens to be. That is the entire problem closure was built to chase after the fact. Set the waypoint to ALL and the whole column drives in, for free, with none of the shuttling or horn that chasing produced. Closure remains available for a GM who did not set it. If your config predates 1.1.2 it still says true - set m_bEnableConvoyClosure false and use ALL instead.
KNOWN, NOT FIXED HERE
- Followers take long detours in dense terrain and rejoin later, and it clears up in open ground. That is position-chasing: a follower is sent to where the lead IS, so an obstacle between them can make going the long way genuinely shorter. The fix is to follow the lead's PATH rather than its position (a breadcrumb trail, or the unused native AIBaseMovementComponent.RequestFollowPathOfEntity), and it is the next convoy job.
- Cross-group convoy linking still does not drive followers. One group of drivers remains the reliable way to move a column.- Game Version
- 1.7.0.54
- Created
- Wed, 12 Aug 2026 11:07:30 GMT
- Last Modified
- Wed, 12 Aug 2026 11:07:33 GMT
1.1.1
1.1.0's followers moved but could not keep up: folder-6 telemetry has them linking at 6m and 11m, bleeding out to 398m over two minutes, then sitting stationary for three more while separation re-asserted at them. The cause is not the recipe - it is that VANILLA'S FOLLOW WAYPOINT IS INFANTRY-ONLY. WP_Move.bt sets m_bUseVehicles 1 on its goal message. WP_Follow.bt sets neither that nor a movement type, so both take their attribute defaults: UseVehicles false, EMovementType 0 = IDLE. A mounted crew handed that goal has no way to drive to it. The player commanding menu's FOLLOW has the same limit; it is just never pointed at a vehicle. CHANGED - Followers now march on a MOVE waypoint - the waypoint vanilla actually builds for vehicles - positioned at the lead's vehicle and walked along behind it every m_fConvoyRehomeSec. Still at PLAYER priority, so the doctrine is intact, and still a real waypoint, which is what keeps followers out of reach of DCO's commander and the QRF leash (both gate on holding a waypoint). - m_fConvoySpacing is now the convoy gap for real: it sets the follow waypoint's completion radius, which is the distance a follower counts as "arrived" short of the lead. Previously nothing set it and vanilla's infantry default of 6m applied. ADDED - m_fConvoyRehomeSec (2.0s): how often the follow point is walked along behind the lead. A move waypoint is a fixed position, so this is what actually holds a column together. Deliberately a NEW key rather than a smaller default on m_fConvoyFollowReissueSec (8.0s, the health cadence): migration never overwrites a value your server already has, so re-using the old key would have left existing servers at the slow cadence that caused the bleed-out. MARKERS ARE NOW GM-LOCAL Markers kept reaching player maps because faction flags cannot do the job. The filter runs ONCE, when the marker replicates in (OnAddSynchedMarker), and reads the client's faction at that instant - a client that has not resolved one keeps the marker for good, and the only later sweep runs on faction CHANGE. The two vanilla filters also disagree about faction-less clients: the manager KEEPS a marker when the local faction is null (what a GM was relying on) while the map UI pass explicitly SKIPS it. "Visible to GMs, invisible to players" is not expressible in that mechanism. - Markers are now built on the Game Master's own client and NEVER replicate. Players cannot see them because they do not exist anywhere but the one client that drew them. This is structural, not a filter that can mis-fire. - They follow the GM camera: opening it draws them, closing it removes them. The editor manager only exists on a client with GM rights, so hooking it is itself the privilege check - and the server independently verifies the asker holds a Game Master session before answering. - All policy stays server-side. The client can only ask; a server with m_bEnableMarkers off simply does not answer. - REMOVED m_bMarkersGmOnly. It configured the faction-flag mask, which is gone. Migration drops the key from your config automatically. - Markers still ship OFF. If they are drawing on your server, your config predates that default (migration never overwrites a value the file already has); the boot log now says so explicitly instead of leaving you to read the profile JSON.
- Game Version
- 1.7.0.54
- Created
- Tue, 11 Aug 2026 21:26:29 GMT
- Last Modified
- Tue, 11 Aug 2026 21:26:42 GMT
1.1.0
The spike verdict (1.0.13 telemetry): message-based follows never turned a follower's wheels - gaps grew 25m to 116m at exactly the lead's road speed. Follower vehicles are moved by waypoint machinery, not mailbox messages. So the march layer now uses the mechanism a GM's own orders use. ADDED - Followers march on FOLLOW WAYPOINTS. Each follower gets vanilla's own SCR_EntityWaypoint (the player commanding menu's FOLLOW command, recipe copied verbatim), targeting the column lead's vehicle, at PLAYER priority - which is the GM-supremacy doctrine made mechanical, since player-priority waypoints outrank AI behaviours. No re-issue cadence needed: the waypoint IS the follow, standing until the column changes. - Splitting works the way a GM expects. A follower given its own orders KEEPS its convoy id and becomes a lead in that convoy; vehicles behind it re-home onto the nearest ordered id-mate on the next health check. Order the middle vehicle elsewhere and the column divides itself. - Rest formation: when the lead completes its waypoint, followers keep their standing follow and settle behind it - arrival needs no closure pass for linked columns. CHANGED - Auto-link unchanged (order a mounted group, adopt unordered unlinked mounted same-faction groups within m_fConvoyLinkRadius), but follower roles are now read from waypoints: real orders = lead, own follow waypoint = follower. - The stall kick ignores synthetic follow waypoints (their origin is just the spawn point); follow health belongs to the link layer. - m_fConvoyFollowReissueSec is now the health-check cadence (re-home on split, drop on lead-vehicle loss), not an order cadence.
- Game Version
- 1.7.0.54
- Created
- Tue, 11 Aug 2026 19:56:43 GMT
- Last Modified
- Tue, 11 Aug 2026 19:56:45 GMT
1.0.13
v1.0.13 CHANGED - The convoy layer now runs on one doctrine: A GM ORDER SUPERSEDES EVERYTHING. A group with a live waypoint, a convoy follow, or a convoy id keeps being served through contact - the stall kick and separation become the push-through engine, re-asserting the ordered move into whatever halted it - because a column that stops on its own initiative reads as broken. Groups WITHOUT orders are the opposite: DCO owns them completely, and the layer now stands down for them on mere PERCEIVED contact, not just high threat. The 1.0.11 spike froze precisely in the gap between those two rules: ambient garrison perception kept threat low, DCO halted the column, and nothing pushed back hard enough on the GM's behalf. - Follow telemetry: every follow reissue logs the gap to the lead vehicle. On a garrison-saturated map there is no clean route to test on, so the log itself is the instrument: a shrinking gap across reissues means the follow drives, a frozen one means something else owns the vehicle. NOTE - 1.0.11 spike readout: auto-link, follow issuance, detach-on-own-orders and adoption all verified working in the live log. The drive question is answered by the telemetry above on the next run - contact no longer stands the link layer down for ordered or linked groups.
- Game Version
- 1.7.0.54
- Created
- Tue, 11 Aug 2026 19:28:04 GMT
- Last Modified
- Tue, 11 Aug 2026 19:28:07 GMT
1.0.12
ADDED - Convoy Link, the spike for 1.1.0. One group per vehicle, marching as a column out of combat, on DCO's own convoy id - the same tag that forces those groups into one DCO combat section under fire, so both halves of convoy behaviour run off one number for the first time. Assignment is a one-shot at the moment a GM orders the column: when a mounted group receives a waypoint, mounted same-faction groups within m_fConvoyLinkRadius (40m) that have no waypoint and no convoy id join its convoy. That is exactly the column staged around the lead at order time; keep a group out of it with distance or its own orders. Followers hold a vehicle-aware GROUP follow on the nearest waypointed id-mate's vehicle - no per-agent orders, so Force Stay In Vehicle holds by construction - refreshed every m_fConvoyFollowReissueSec. Following the NEAREST waypointed id-mate means a convoy splits itself correctly when a GM orders part of it elsewhere. A follower given its own waypoint is detached on purpose (id cleared); park it near a lead at the next order to re-link. In contact everything stands down and DCO's section controller takes over, pre-clustered by the same id. This build exists to answer the 1.1.0 questions live: entity-follow's spacing and persistence, lead-loss behaviour (a dead or dismounted lead is simply not followable - the column holds until a GM re-orders), and the follow cadence. Requires one group per vehicle: GM-spawned crewed vehicles already are; a single group spread over several vehicles stays on the 1.0.x safety net. 1.1.0 adds the deliberate assignment mechanisms (Convoy Zone placeable, Convoy ID editor attribute) and real spacing on top of what this proves.
- Game Version
- 1.7.0.54
- Created
- Tue, 11 Aug 2026 19:08:29 GMT
- Last Modified
- Tue, 11 Aug 2026 19:08:31 GMT
1.0.11
ADDED - Convoy Link, the spike for 1.1.0. One group per vehicle, marching as a column out of combat, on DCO's own convoy id - the same tag that forces those groups into one DCO combat section under fire, so both halves of convoy behaviour run off one number for the first time. Assignment is a one-shot at the moment a GM orders the column: when a mounted group receives a waypoint, mounted same-faction groups within m_fConvoyLinkRadius (40m) that have no waypoint and no convoy id join its convoy. That is exactly the column staged around the lead at order time; keep a group out of it with distance or its own orders. Followers hold a vehicle-aware GROUP follow on the nearest waypointed id-mate's vehicle - no per-agent orders, so Force Stay In Vehicle holds by construction - refreshed every m_fConvoyFollowReissueSec. Following the NEAREST waypointed id-mate means a convoy splits itself correctly when a GM orders part of it elsewhere. A follower given its own waypoint is detached on purpose (id cleared); park it near a lead at the next order to re-link. In contact everything stands down and DCO's section controller takes over, pre-clustered by the same id. This build exists to answer the 1.1.0 questions live: entity-follow's spacing and persistence, lead-loss behaviour (a dead or dismounted lead is simply not followable - the column holds until a GM re-orders), and the follow cadence. Requires one group per vehicle: GM-spawned crewed vehicles already are; a single group spread over several vehicles stays on the 1.0.x safety net. 1.1.0 adds the deliberate assignment mechanisms (Convoy Zone placeable, Convoy ID editor attribute) and real spacing on top of what this proves.
- Game Version
- 1.7.0.54
- Created
- Tue, 11 Aug 2026 19:07:29 GMT
- Last Modified
- Tue, 11 Aug 2026 19:08:30 GMT
1.0.10
IXED - Convoy separation is rebuilt and back on by default. The 1.0.8/1.0.9 version ordered the wedged vehicle's driver away per-agent, and live logs (test 3) proved that mechanism dismounts crews: a per-agent move addressed to a seated crewman is executed as an infantry move, which also sails straight past CRX's Force Stay In Vehicle, whose gate lives in the behavior system that per-agent moves never enter. Research closed every per-vehicle alternative - the vehicle behavior family is only GetIn/GetOut, and follower vehicles are not driven by orders at all, they formation-follow their leader - so the engine offers no safe way to move one vehicle of a multi-vehicle group. The rebuild keeps the fast per-vehicle detection (stationary 5s, wedged on a sibling inside 7m or against an unknown blocker) and changes the response to the one safe primitive: re-issuing the group's own move, which is idempotent for vehicles already underway and re-engages the formation-follow that pulls the stuck one free. The stall kick remains as the slow backstop. - Force Stay In Vehicle is now honoured by construction: after the rebuild this mod sends NO per-agent orders to vehicle crews anywhere, so there is no code path left that can take a flagged crewman out of a vehicle. No guard setting needed. REMOVED - m_fConvoyBackOffDist and the reverse-out branch (per-agent, superseded by the group-level response). The key disappears from configs on first load. NOTE - Servers still on 1.0.9 or earlier with m_bEnableConvoySeparation: true in the config are running the dismount-prone version - set it false until this update is installed. From 1.0.10 on, true is the safe default again.
- Game Version
- 1.7.0.54
- Created
- Tue, 11 Aug 2026 18:37:05 GMT
- Last Modified
- Tue, 11 Aug 2026 18:37:11 GMT
1.0.9
FIXED - Convoy crews no longer dismount and wander between vehicles after arriving. Closure ordered each trailing vehicle's driver to a spaced slot per-agent, and live testing showed the engine executes a per-agent move addressed to a seated crewman as an INFANTRY move: the driver dismounted, walked toward the slot (which sits between the vehicles, hence "moving to the other car"), and remounted when the order lapsed. DCO itself only ever moves vehicle crews with group-level broadcasts, and that distinction is load-bearing. Closure is now one vehicle-aware group move to the leader's position: the leader no-ops, the followers drive in, the engine settles them. Neat spacing is traded for correct behaviour; m_fConvoySpacing is now the trigger tolerance. - Convoy separation and unknown-blocker back-off are EXPERIMENTAL and off by default for the same reason: both issue per-agent moves to seated drivers. They need their own validation before being trusted. The stall kick keeps its default (on) - it always used the group primitive. ADDED - CQB breaches anchor to real doors. DCO picks the interior navmesh node nearest the group as its entry - not an aperture - which is why squads form up against walls and stand in the doorway. Door entities are discoverable (DoorComponent), and the door answers everything the stack needs: its origin is the breach point, its lateral axis is the wall direction, and its bounds give the frame width, so a double door pushes the stack further aside than a single one automatically. The sweep path restarts from the real entrance. Buildings without door entities keep DCO's behaviour unchanged. (m_bCqbDoorBreach) - CQB squads stand up to clear. Members are stood at file-in and kept upright through the interior sweep via DCO's own throttled stance choke point, and DCO's ambient cover-stance - which fits members to cover in contact and is what put breachers on their bellies, since it never consults the clearing state - now yields to a clearing squad. Suppression's dig-in is deliberately not fought: going down under actual fire is not the silly case. (m_bCqbStandToClear) CHANGED - CQB squads file into buildings one member at a time. DCO's ENTER orders every member to the first interior node in one pass, so the squad converges on the doorway as a crowd. Orders are now staggered (m_fCqbEntryStaggerSec, 0.7s, nearest member first); each deferred order re-checks the sweep is still live before it fires. Set 0 for DCO's original all-at-once behaviour. - Clear Buildings waypoint default radius is 15m (was 30m). Drag it larger for multi-building sweeps. - Debug logging is off by default (m_bDebug). The per-event lines are for test sessions; on an ops server they are log spam. DCO's own m_bDebug in DCO_Settings.json is the other spam source and is separate. - Markers are off by default (m_bEnableMarkers). The GM-only faction mask did not filter for slotted players in live testing - they still saw commander markers - so until that is understood the safe default is none. The mask setting remains for investigation. NOTE - Existing configs keep their saved values: the migration only adds missing keys, it never changes ones already set. To pick up the new defaults either edit m_bDebug / m_bEnableMarkers / m_bEnableConvoySeparation manually, or save your m_sConvoyObstacles line and delete DCO_Extensions.json to have it regenerated fresh.
- Game Version
- 1.7.0.54
- Created
- Tue, 11 Aug 2026 18:06:06 GMT
- Last Modified
- Tue, 11 Aug 2026 18:06:09 GMT
1.0.8
FIXED - The Clear Buildings waypoint (third attempt, root cause procedural this time). The 1.0.7 GUID fix was correct on disk but the publish shipped a stale resource database: Workbench builds its resource DB by scanning meta files at STARTUP, and the instance that published had been open since before the metas changed, so the pak still mapped both confs to the old inert GUIDs. Verified by reading the published pak's database directly. No code change - close Workbench fully, reopen, republish. ADDED - Vehicles wedged on each other back off quickly. The engine resolves vehicle-on-vehicle contact eventually, but slowly enough to read as stuck. A vehicle stationary for m_fConvoySeparationSec (5s) with another column vehicle inside m_fConvoySeparationDist (7m) now gets a short move directly away from it. Only the vehicle farther from the objective yields, so a pair cannot order each other into a new collision, and the standing waypoint re-asserts the moment the way is clear. - Vanilla Search & Destroy also clears buildings in its radius. S&D's own hunt only engages enemies the group has DETECTED, so an enemy hiding unseen inside a building was never found. A group taking an S&D waypoint is now also marked as a clearer, scoped to the waypoint's radius, released when it moves off. S&D never overrode its waypoint state, so nothing of the vanilla behaviour is replaced - the hunt runs exactly as before, the sweep runs beside it. m_bSearchAndDestroyClears to disable. - Markers are Game-Master-only by default (m_bMarkersGmOnly). They are flagged with a faction bit no real faction can match, so the engine's own filter removes them for every slotted player of either side, while faction-less clients - a GM without a player slot - keep them. Verified single edge: the filter re-runs only when a player's faction CHANGES, which never happens to a client that never holds one. Caveat, engine mechanism not ours: a GM who also holds a player slot is filtered like any player. Set false for the old everyone-sees-them behaviour. - Vehicles wedged on things we cannot identify back straight out. The sibling separation above knows the escape direction exactly; against a wall, an empty vehicle or checkpoint blocks there is no reliable way to identify the blocker, and no need: a vehicle stationary past the separation time with a live waypoint it wants to reach reverses m_fConvoyBackOffDist along its own rear axis and lets the waypoint re-path from the new position. Only with a live waypoint - a parked group has every right to sit still.
- Game Version
- 1.7.0.54
- Created
- Tue, 11 Aug 2026 17:35:31 GMT
- Last Modified
- Tue, 11 Aug 2026 17:35:35 GMT
1.0.7
FIXED - The Clear Buildings waypoint finally appears, and the root cause explains every earlier failure. Adding to the Game Master's registries is not done by creating a conf at the right path: the file must OVERRIDE the vanilla resource, meaning it carries the vanilla GUID in its .meta. Registering our confs in Workbench assigned them fresh GUIDs, making them standalone resources nothing in the game ever loads - both the placeable registry and the command action list have been inert in every build so far, which also corrects the 1.0.4 claim that the waypoint was visible in the Edit-mode browser. REAPER's helicopter waypoints ship exactly this way (their conf .meta carries vanilla's GUID), which is what confirmed the mechanism. Both metas now carry the vanilla GUIDs. - Convoy closure caused the post-arrival shuttling and the horn. Three causes, all ours: slots were re-dealt by distance each pass so nearby vehicles swapped targets and shuttled between them; a half-spacing deadband re-ordered vehicles sitting on the boundary forever; and the trigger accepted "leader inside the waypoint's completion radius", which fires at every hand-off in a chain of force moves, ordering followers into parking slots mid-route - at exactly the waypoints, which is where the sharp turns are. Slots are now assigned once and kept, the deadband is a full spacing, closure requires the move to be fully over, runs only within 60s of the group last holding a waypoint, and gives up after 4 passes per arrival so a column blocked by geometry stops being told to try. The horn is the tell for a blocked driver, so bounding the passes also bounds the honking. - Obstacle detours only fire when the obstacle is actually in the way. A convoy merely clipping the trigger circle - or already past the blocks - was yanked to the via point, which read as it ignoring its force move. The nudge now requires the straight line to the waypoint to cross the circle, and skips groups closer to the waypoint than the obstacle is. ADDED - CQB squads stack BESIDE the breach. DCO lays the stack single file on the line from the door back toward the group - directly in the fatal funnel, exactly where anything coming out of the door is aimed. Slots now run along the wall next to the opening, on whichever side has more navmesh, and fall back to DCO's line per slot where the wall will not snap. Entry timing is unchanged. - The command-bar entry is gated to groups on foot. The clearing state machine is on-foot only, so for a mounted group the button would silently do nothing. Same mechanism REAPER uses to show its waypoints only for helicopter groups. NOTES - Vehicles reversing or turning away while in contact is DCO's vehicle doctrine (its drive-through drill deliberately exits the kill zone away from the enemy), not this mod - armour angling (m_bEnableVehicleArmor) is off by default and not in the server config. Tame it with m_bVehDoctrineBounding or the doctrine master switch if unwanted.
- Game Version
- 1.7.0.54
- Created
- Tue, 11 Aug 2026 17:06:53 GMT
- Last Modified
- Tue, 11 Aug 2026 17:06:59 GMT