EXPBG CDF GM Save Compat

by M.Pac

Contributors

K.Edgar

0.2.5

Lower startup script budget for large mod lists on game 1.9 (#InitGlobals); safe with the InitGlobals
Budget Fix mod; no gameplay change. For EXPBG Gamemaster Tools 0.6.3 or later (pin unchanged at `v0.6.3`).

- **Startup budget (#InitGlobals) checked; nothing in this pack costs it.** On game 1.9 every statically
  initialized value of all loaded mods runs in one start-up function with an instruction limit, and the
  owner's 138-mod Linux server stops there. A probe (20000 declarations of each form on that list) showed
  that `static const` numbers and texts are folded where they are used and cost nothing at start. All 205
  class-level statics of this pack with a value are such constants (157 int, 7 float, 40 string, 1
  ResourceName); it has no other start-time statics, so no declaration was changed and every constant
  keeps its name, type and value. A new portable check keeps it that way.
- **Safe with the InitGlobals Budget Fix mod (B8ED52DBF80F518C).** That mod leaves 363 vanilla static
  fields empty until first use. This pack reads none of them, with or without the mod; the portable check
  fails on a future read so it can be made null-safe first.
- **Lighter script start-up (no gameplay change), ready for Gamemaster Tools 0.6.7.** Internal lists are
  kept in container types the base game already has, lowering the #InitGlobals start-up load that crashes
  servers with large mod lists: the Intel restore groups its items by GUID in a shared map type instead of a
  type of its own. Gamemaster Tools 0.6.7 creates its cache zone list on first use instead of at script start;
  the Unit Caching bridge now reads it null-safe. Saves and behaviour are unchanged, and the pack still works
  with Gamemaster Tools 0.6.3 to 0.6.6.
Game Version
1.9.0.37
Created
Sat, 07 Nov 2026 15:50:02 GMT
Last Modified
Sat, 07 Nov 2026 15:50:19 GMT

0.2.4

Game 1.9 compatibility (game 1.9.0.37). For EXPBG Gamemaster Tools 0.6.3 or later (pin moved to `v0.6.3`):
publish and load them together; this version does not load next to Gamemaster Tools 0.6.2 or older, and
Gamemaster Tools 0.6.3 does not load next to 0.2.3 or older.

- **Game 1.9.0.37: fewer engine template types.** The full campaign modset stopped at script init on
  game 1.9 because the loaded mods together instantiated too many distinct generic container types.
  This compat now keeps its own runtime lists (prisoner, inventory and crew restore queues, load runs,
  empty-group report, validated intel payloads, kept cleanup records) in container types the game
  already uses and casts on read: 14 -> 5 own instantiations. The saved intel, lock and drive payloads
  keep their typed arrays (their JSON format is unchanged). It also follows the matching EXPBG
  Gamemaster Tools change (its garrison, destruction and paradrop lists now hold `Managed`), so it
  needs Gamemaster Tools 0.6.3. Saved data (intel, lock and drive payloads, crew and prisoner records) is
  unchanged, so saves made with 0.2.3 load.
Game Version
1.9.0.37
Created
Fri, 06 Nov 2026 00:56:46 GMT
Last Modified
Fri, 06 Nov 2026 01:50:51 GMT

0.2.3

Audit 2026-11-04: fixes for loads, saves and the crew seating pass, older saves with Unit Dialog
lines, and a smaller download; full-modset test 2026-11-05: intel on dead soldiers. For EXPBG
Gamemaster Tools 0.4.2+ (pin unchanged at `v0.4.2`); compiled and tested against Gamemaster Tools
0.5.10, and the intel fix against Gamemaster Tools 0.6.1.

- **Intel on dead soldiers is saved and comes back.** A soldier of a Game Master's squad who died
  carrying an Intel item (a document, notebook, laptop or tablet) or a USB drive was left out of
  every CDF save, and his intel with him: a soldier who dies leaves his squad, and CDF saves only
  what a Game Master placed. After a load the body and the intel were gone. And a body or wreck
  that CDF did save came back without its intel, because CDF never restores the inventory of
  something destroyed. Now a body that carries intel is saved, and after a load that body, or a
  wreck that had intel in its cargo, holds its intel again with its title, text and lock. The body
  comes back with its default equipment, as CDF restores bodies, and lies where it lay (a body in
  a vehicle seat is put on the ground beside the vehicle). A load replaces such a body instead of
  leaving the old one next to the new one, so the intel is never doubled. Bodies without intel
  are still not saved. The server log names them: `[EII CDF] Bodies with intel: found=N
  savedByCdf=N added=N withoutIntel=N` when a save finds one, `[EII CDF] Bodies and wrecks with
  intel: queued=N unreadable=N` when a load puts intel back. Found in the full-modset test: a
  soldier killed with a notebook came back without body and notebook after a server restart.
- **Older saves with Unit Dialog lines keep the rest of each soldier.** A save that holds Unit
  Dialog lines (made with 0.1.17, or with EXPBG CDF Ambient Units Compat) could be loaded on a
  server without EXPBG CDF Ambient Units Compat, and then every soldier with dialog lines came
  back with his default loadout and full health. He also lost his prisoner state and the intel he
  carried, and (saves made with the companion) his Hold, Freeze, Stay mounted or animation.
  Nothing warned about it. Now only the dialog lines are lost: loadout, health, prisoner state,
  intel and unit scripts come back. The server log says how many dialog entries were left out,
  once per load: `[EXPBG CDF] dialogDropped=N` (WARNING). To keep the dialog lines as well, load
  EXPBG Ambient Units with EXPBG CDF Ambient Units Compat. The load is not refused, unless such
  a dialog entry is damaged or the intel data inside it is invalid: then, as for every other
  damaged entry, the load is refused before the scene is cleared and the Game Master sees why
  (`Invalid Unit Dialog envelope on record N` or `Intel Items state ... failed Intel Items
  validation`), instead of that soldier coming back with his default loadout.
- **Module checks no longer pass by mistake.** With two or more Ambient Destruction or Unit
  Caching modules in a save, a module that did not come back could pass the load check by
  reusing the previous module's result, so a broken import went unnoticed. Each module is now
  checked on its own, and a load where one is missing fails safe. The same applies to the save
  check: a save that CDF wrote without any of the Ambient Destruction modules (not only the
  first) is refused. EXPBG Cleanup's "Never auto-clean" flags that match no record are no
  longer counted as kept in the `[ECL CDF LOAD]` line.
- **A load that never started no longer pauses EXPBG Cleanup.** A load request that CDF answered
  busy (for example during a save), a slot that could not be read, or a load refused before the
  scene changed (a missing prefab's first click, a garrison or Ambient Destruction refusal, a
  player in a seat the load needs) used to stop body and wreck cleanup for the full 30 s load
  grace. The hold is now dropped as soon as the request ends, without the grace. New log line:
  `[ECL CDF HOLD] dropped after N ms (...): the load did not start, so deletions resume without
  the load grace`. A load that runs keeps the hold and the grace as before.
- **Player-controlled soldiers are left alone by the crew seating pass.** The pass that puts
  saved crews back into their vehicles and static weapons can keep retrying for a while after
  the load. If a player or a Game Master takes over (possesses) one of those soldiers meanwhile,
  he is no longer moved, woken, given Stay mounted or stood up. The `[EXPBG CDF CREW]` line
  counts these seats as `playerControlled=N`; they are not failures.
- **Faster crew save.** The crew save checks whether a soldier sits in a seat before it runs
  the more expensive keep rule. The saved data is the same.
- **CDF's inventory switch is put back after a script error.** The EXPBG Save loadout feature
  switches CDF's `saveCharacterInventories` for a moment for each marked or dropped unit. If a
  script error stopped that save or load step, the switch could stay in the wrong position for
  the rest of the session. It is now put back the next frame, with a WARNING
  (`[EXPBG CDF INV SAVE] a capture stopped on a script error; ...` or
  `[EXPBG CDF INV] an apply stopped on a script error; ...`).
- **3.6 MB smaller download.** An unused, uncompressed copy of the Intel Items banner was packed
  into the mod (about 96 % of its size). It is removed; nothing used it, and saves are not
  affected. The Workshop preview image is unchanged.
- **Load timing.** A throttled load logs how long CDF's deep-state pass (inventories, damage,
  group repair) takes: `[CDF TIMING] deep-state states=N ms=M`. That pass still runs in one
  server frame: the paced deep-state pass (CDF-B3), announced for 0.2.1, did not ship and stays
  deferred until this line from a production-size load shows how much it costs.
- Tests: new portable guards in `tests/Test-CleanupCdf.ps1`, `tests/Test-VehicleCrewCdf.ps1`,
  `tests/Test-InventoryCdf.ps1`, `tests/Test-ThrottledLoad.ps1`, `tests/Test-CompanionSeam.ps1`,
  `tests/Test-UnitScriptsCdf.ps1` and `tests/Test-PackProvenance.ps1`; the native fixture
  `tests/ECL_CDFCleanupRoundTrip.c` also loads a slot that does not exist and checks that the
  hold is dropped without the grace, and `tests/EUS_CDFScriptsRoundTrip.c` loads a save with Unit
  Dialog entries without the companion and has four damaged ones refused before the clear; the
  new native fixture `tests/EII_CDFBodiesRoundTrip.c` saves and loads two bodies with intel, a body
  without and a wreck with intel, and `tests/Test-IntelCdf.ps1` guards the intel-on-bodies code;
  native results in docs/TESTING.md.
Game Version
1.8.0.13
Created
Wed, 04 Nov 2026 21:04:05 GMT
Last Modified
Wed, 04 Nov 2026 21:04:13 GMT

0.2.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 0.2.1.
Game Version
1.8.0.13
Created
Tue, 03 Nov 2026 17:44:04 GMT
Last Modified
Tue, 03 Nov 2026 17:44:25 GMT

0.2.1

Owner report 2026-10-24 playtest (Stay mounted gunners stood next to their guns after the CDF load).
For EXPBG Gamemaster Tools 0.4.2+; the pin stays at `v0.4.2`. Native round run against Gamemaster
Tools 0.4.4; update together with Gamemaster Tools 0.5.0, which re-seats gunners of older saves.

- **Stay mounted gunners are saved again.** CDF saves left out every AI soldier whose squad ran a
  Gamemaster Tools unit script (Stay mounted, Hold, Freeze, a pose) or night discipline. After a
  load such gunners stood next to their guns, and their Stay mounted order gave up after 90 s.
  Unit scripts no longer count as another module owning the squad: these soldiers keep their
  seats in every save, and a scripted vehicle crew is saved and cleared with its vehicle like any
  other. Unit Caching, ambient traffic and garrison squads stay excluded, as before.
- **Saves made before 0.2.1** hold no seat for those gunners (the playtest's saves among them).
  Gamemaster Tools 0.5.0 puts a saved Stay mounted gunner who stands next to a free static weapon
  (within 3 m of his post) back on it after the load; with an older Gamemaster Tools, or where the
  gun is gone, seat them by hand once and save again.
- **No silent losses.** The `[EXPBG CDF CREW SAVE]` line now ends with counts of the seated
  soldiers left out and why (`refusedCache`, `refusedGarrison`, `refusedCaptive`,
  `refusedTransition`, `refusedOther`) and `keptHolders`.
- **No doubled static weapons in compositions.** A static weapon CDF does not save is saved with
  its gunner only when it stands on its own. A static weapon inside a composition (for example a
  sandbag M2 emplacement) comes back with its composition, and its gunner is put back on it, with
  no second gun on top.
- **Mission restarts on a running server.** A restart keeps the same world object, so the crew
  seating pass, the EXPBG Cleanup load hold and the Ambient Destruction import state now reset when
  the world is cleaned up. Before, a hold left over from the old mission could leave the new
  mission's first load unprotected, or keep its Ambient Destruction zones paused.
- Tests: new native fixture `tests/EVC_CDFStayMountedRoundTrip.c` (48 checks, three passing runs)
  and the 15 existing fixtures passing against the new build; results in docs/TESTING.md.
Game Version
1.8.0.13
Created
Sun, 25 Oct 2026 02:21:00 GMT
Last Modified
Sun, 25 Oct 2026 02:21:05 GMT

0.2.0

Deep dive 2026-10-18, batch B. For EXPBG Gamemaster Tools 0.4.1+ (EXPBG Cleanup); pinned to
`v0.4.2` (`7feb7c9`, live; its EXPBG Cleanup API equals 0.4.1). The server updates both
together.

- **CDF loads and EXPBG Cleanup** (CDF-B1, new module `cleanup-cdf`). A CDF load never deletes a
  body or wreck while it runs and for EXPBG Cleanup's load grace after it (30 s by default):
  EXPBG Cleanup's hold `cdf-load` starts with the load request (throttled or instant, and any
  direct Restore) and lasts while the load, CDF's deferred state pass and the Ambient Destruction
  building replay run; then one reconcile adopts loaded remains EXPBG Cleanup did not see die, and
  one tick later the hold ends into the grace. Remains a load restores register as loaded
  (`FROM_LOAD`), their age counts from the load, and they leave by EXPBG Cleanup's normal timers.
  Log lines: `[ECL CDF HOLD]` (start, release with the counts of loaded bodies and wrecks and the
  removals while held).
- **EXPBG Cleanup state in CDF saves.** The Game Master overrides of the Cleanup settings (Game
  Properties > EXPBG Cleanup) and the "Never auto-clean" flags travel in a new world-state layer
  `eclCleanup` (the flagged record's prefab and saved position). A load restores both; a load with
  clearBeforeLoad of a save without the layer (no overrides when saved, or an older save) clears
  the current overrides, so the mission header applies. A flagged destroyed body or wreck (a Game
  Master's decor wreck) always loads, also with `loadDestroyed=skip`
  (`keptNeverAutoClean=N` in the skip line), and gets its flag back. The layer is written only
  when there is something to save; an unreadable layer refuses the load before CDF changes the
  scene. Older packs (0.1.x) loading a 0.2.0 save that carries the layer lose that save's
  mission attributes (time, weather); load such saves with 0.2.0. An append load (no
  clearBeforeLoad) of a save whose layer holds no overrides keeps the current ones.
- **Restored remains are not Game Master kills.** CDF recreates a destroyed record and destroys it
  through the editor, so EXPBG Cleanup took every restored body and wreck for a Game Master kill,
  and with "keep GM-destroyed wrecks" (on by default) every wreck a load brought back stayed for
  good (native fixture F17). The layer also lists the remains that were Game Master kills when
  saved (prefab and saved position); after a load only those are Game Master kills again, every
  other restored body or wreck leaves by the normal timers. Log lines: `[ECL CDF SAVE] ...
  gmKills=N`, `[ECL CDF HOLD] released ... gmKillsSet=N gmKillsCleared=M`.
- **Faster saves with many AI** (CDF-B2). The Intel layer walked the inventory of every saved
  soldier, crate and vehicle to find carried intel. A save now builds the holders of every intel
  item and USB drive in play once (a new drive registry next to Gamemaster Tools' intel
  registry) and walks only their inventories; records, payloads and refusals are unchanged.
  Outside a save capture, or when a holder cannot be resolved, every inventory is walked as
  before. One `[CDF TIMING] intel-items capture ... walks=N skipped=M` line per save.
- Not in this release: the paced CDF deep-state pass (CDF-B3, high risk) moves to 0.2.1.
- Tests: `tests/Test-CleanupCdf.ps1` (new), the dependency overlap check now also resolves EXPBG
  Cleanup (`ECL_`) symbols against the pin; native fixtures `tests/ECL_CDFCleanupRoundTrip.c`
  (F17, now also the Game Master kill state) and `tests/EII_CDFCarriersRoundTrip.c`; results in
  docs/TESTING.md. `tests/Run-CdfRoundTrip.ps1` takes an engine slot (two test servers may run
  at once; the server listens on the slot's ports), accepts a fixture's deliberate ERROR lines
  (`-AllowedErrorPattern`) and runs the retail server (`-ServerKind Retail`) for the
  deliberate-fault fixtures, which the Diag server halts on; `tools/Build-Addon.ps1` and the
  release take the slot lock's Workbench record. Fixture fixes: the deliberate-fault cases report
  `continued` where the retail server goes on after the fault, and the prisoner abort fixture
  makes AI Surrender refuse through a real path (its static override was never called).
Game Version
1.8.0.13
Created
Wed, 21 Oct 2026 00:33:36 GMT
Last Modified
Wed, 21 Oct 2026 00:34:04 GMT

0.1.20

Deep dive 2026-10-18, batch A (CDF-A1..A14): stability of loads and saves over long sessions,
and old bodies and wrecks no longer carried from save to save. For EXPBG Gamemaster Tools 0.3.6
(no API newer than 0.3.0 is used); released together with it. Compiled against the Gamemaster
Tools 0.3.5 line so far; the compile against a 0.3.6 build is pending.

- **Destroyed bodies and wrecks are not loaded any more (owner decision D9).** New
  `expbg_load.json` key `loadDestroyed`: `skip` (default; files without the key use it) or
  `restore` (CDF's own behaviour). With `skip`, a destroyed character or vehicle root record with
  nothing attached to it (no child, no crew link to it, no link of its own) is not recreated, on
  the throttled and the instant path: CDF spawned each one and destroyed it again, so every load
  brought the last session's corpses and wrecks back and every save kept them. Destroyed records
  that something hangs on, and other destroyed props, load as before. A destroyed body or wreck
  whose own state carries intel or USB drives (Intel Items CDF) always loads, so no intel is lost
  with it (owner decision D2). One line names the counts
  (`[EXPBG CDF LOAD] loadDestroyed=skip skipped=N keptForIntel=M`); the "Load completed" window
  counts the skipped records in neither number. On the instant path CDF's own load line counts
  them among its failures ("echecs"); a second line says so. When the instant restore stops on a
  script error, the abort guard gives the skipped records their prefabs back.
- **A script error in CDF's deferred state pass no longer blocks saving for the session**
  (UCCDF-S2). The shared poller resumes a stopped pass once, in its own callback: the states
  already applied stay, the faulting entity's state is skipped and logged with its prefab and
  position, the rest are applied (a stop in CDF's group repair or release runs the repair again
  before the release, so no group whose members were not attached yet dissolves, and applies them
  all). Unit Caching's Apply layer names the entity being applied; a fault outside it skips the
  entity after the last finished one and logs that it was assumed. Unit Caching fails closed only
  if the resume stops too.
- **Throttled loads keep each squad's saved members from its spawn frame** (UCCDF-S3): the
  captured-roster rule (no prefab top-up) is applied right after the group spawns instead of
  after the whole spawn phase; the rule after the chain stays as the backstop.
- **Load documents are released** (M2): a finished throttled load drops its document; a parked
  load (world change, abort) releases its records unless a bridge still holds the document, and
  drops Vehicle Crew's Clear state only when it is its own (a newer load in its Clear phase keeps
  it).
- **Garrisons: a lost deferred signal no longer locks garrisons and loads for the session**
  (GCDF-S1): a queued garrison import has its own 25 s watchdog (re-armed while the shared poller
  runs) and is finished like a timed-out poller. When Gamemaster Tools already ended the import
  itself (its queue timeout), the next load resets the stale bridge state instead of refusing
  ("still being placed"). Also: an abort while the bridge waits for the Ambient Destruction
  replay keeps one wait; a world change no longer ends the new world's import; garrisons skipped
  by a refused read are forgotten; a confirmed load without garrisons is used up only by the
  import it confirmed.
- **Prisoners** (EPR-STAB-3, EPR-STAB-4): a capture that stops on a script error resets the
  prisoner capture flags the next frame, so the next load document never gets live prisoners
  injected; an EXPBG prisoner whose restore failed (held, no record, no author) is tracked, so
  the next load's Clear removes him instead of leaving him for the session. The load summary adds
  `heldFailed=N`.
- **Ambient Destruction: one failed import no longer stops EAD and every save until a mission
  restart** (EADCDF-LS-1). A load with CDF `clearBeforeLoad` is the recovery; a load refused
  before anything changed keeps the latch, with its reason and import world. A deferred pass reported as timed out fails the import
  only when a module is missing its snapshot.
- **Intel Items: a Workbench-placed (modified) Intel item no longer refuses every save**
  (IIC-S1): Intel prefabs resolve like CDF's record (prefab ancestor; no prefab data gives an
  empty name instead of a null dereference). The Intel restore depth is reset when CDF's deferred
  pass ends and when a load starts (IIC-S3), so one interrupted Apply cannot stop laptop startup
  for the process.
- **Vehicle crews: no duplicates on reload** (VC-1, VC-3, VC-LS-1). An adopted default crew
  group names its original (`evcCrew` token of this session), and a load in the same session
  clears that original with its vehicle even when the crew dismounted; a group with a player in
  it is never cleared. An unsaved vehicle or static weapon is cleared wherever the loaded save
  recreates a non-destroyed vehicle record of its prefab at its spot, no seat needed, so an
  adopted holder whose crew is gone no longer comes back twice after every restart. A load is
  refused before anything changes while a player sits in such a holder (the notice names the
  player, the holder and its spot). The Clear state is also dropped on world cleanup.
- Tests: new native fixtures `tests/EXPBG_CDFLoadSafetyRoundTrip.c`,
  `tests/EXPG_CDFGarrisonWatchdog.c`, `tests/EPR_CDFPrisonerAbort.c`,
  `tests/EAD_CDFRecoveryRoundTrip.c`, `tests/EII_CDFPrefabRoundTrip.c` (with
  `tests/EII_CDFPrefabRoundTrip.layer`) and `tests/EVC_CDFCrewDuplicates.c` (commands in
  docs/TESTING.md); `tests/Run-CdfRoundTrip.ps1` gained `-LayerPath` and `-AllowFixtureFaults`
  (deliberate `EXPBG_FixtureFault` script errors only) and stops the server it started at once on
  a compile error or an assertion in the logs (`FATAL=<line>`); new portable
  `tests/Test-DeepDiveFixtures.ps1`; the bridge guards pin every change above.
- **Save loadout: the modded `SCR_AttributesManagerEditorComponentClass` keeps vanilla's
  `[ComponentEditorProps(...)]`** (`addon/inventory-cdf/.../EINV_SaveLoadout.c`). The engine's config
  loader drops entries of a modded class that does not restate its original class attribute
  ("Unknown class"); the 2026-10-14 full-modset e2e logged no such error for this companion and the
  Game Master attribute window worked, so the visible change is that the class keeps vanilla's
  Workbench metadata (category, description, icon). Gameplay and save format are unchanged.
- Tests: `tests/Test-AttributeDecorators.ps1` also requires every modded `*Class` companion to
  restate its `[ComponentEditorProps(...)]` / `[EntityEditorProps(...)]`, and every modded
  `SCR_AttributesManagerEditorComponentClass` to restate vanilla's exact attribute.
Game Version
1.8.0.13
Created
Sun, 18 Oct 2026 18:42:16 GMT
Last Modified
Sun, 18 Oct 2026 18:42:22 GMT

0.1.19

Owner request 2026-10-15: "no saving and loading of destroyed buildings".

- **CDF saves and loads never carry destroyed map buildings.** A save no longer reads the world's
  building ledger: its `eadBuildings` envelope holds an empty list (same format, so 0.1.18 reads it).
  Loading a save made with 0.1.18 or earlier ignores its building list (one `[EAD CDF LOAD]` line)
  and replays no collapse. A restored Ambient Destruction module comes back with "Supported buildings
  selected for destruction" at 0 %, so its building scan finds dressing sites only and collapses
  nothing; its wrecks, bodies and dressings still come back exactly. A Game Master can raise the
  value again in the running mission. The save refusal "Exact map ledger cannot include CDF-managed
  buildings" is gone with the ledger, and so is the load refusal "Older save would lose permanent
  building history": buildings a module collapsed in the running mission simply stay as they are (the
  new native round trip found that refusal for every load into such a world).
- Only the public Ambient Destruction API is used (`EAD_ZoneSnapshot.Settings`); no Gamemaster Tools
  class is modded.
- Tests: new native round trip `tests/EAD_CDFBuildingsRoundTrip.c` (live collapses, empty building
  envelope, an older save with real collapses loaded without replay, nothing collapses during or 45 s
  after either load, scenery exact); `tests/Test-DestructionCdf.ps1` pins the new behaviour.
Game Version
1.8.0.13
Created
Wed, 14 Oct 2026 19:47:40 GMT
Last Modified
Wed, 14 Oct 2026 19:48:01 GMT

0.1.18

Targets EXPBG Gamemaster Tools 0.3.0 (pinned: `v0.3.0`, `dcc52d5`): it moves Ambient Civilians,
Ambient Unrest (protest zones) and Unit Dialog to the new EXPBG Ambient Units
(`29CFD45254FAEAC3`).

- Unit Dialog CDF moved out: `addon/unit-dialog-cdf` (class `EUD_CDF`, saved key `eudDialog`)
  is now part of the new companion **EXPBG CDF Ambient Units Compat**, unchanged, which saves
  everything of EXPBG Ambient Units in CDF saves. `tools/pack.json` records the move (`moved`:
  destination, file blob, last commit here).
- New neutral companion seam `EXPBG_CDFCompanion` (unit-caching-cdf, `EAA_CDFLoad`): a lazy
  singleton with overridable instance methods that a companion mods. The shared refusal notice
  asks it for the companions' refusal lines (`TakeRefusals`, where the Unit Dialog line was) and
  Vehicle Crew asks it whether the records it adds to a save pass the companions' save checks
  (`ValidAdded`). Without a companion it behaves as if no Unit Dialog state exists: no line, every
  added record passes.
- This pack names no EXPBG Ambient Units class or identity and does not depend on it. Animation
  states need no bridge: the Unit Scripts bridge carries `EUS_UnitState` as Gamemaster Tools'
  own text, so version 2 rows (Gamemaster Tools 0.3.0: the pose companion's `"x"` playlist; version
  1 still read) travel unchanged; the poses themselves are EXPBG Ambient Units'.
- With Gamemaster Tools 0.2.x this version loads but saves no Unit Dialog lines (stay on 0.1.17
  there). Without the companion, a save holding Unit Dialog state loads those soldiers with their
  prefab loadout and health.
- Tests: `tests/Test-CompanionSeam.ps1` (new); the provenance, throttled load and vehicle crew
  guards follow the seam; `tests/Test-DependencyOverlap.ps1` checks the pinned Gamemaster
  Tools 0.3.0 commit; `tests/Test-UnitScriptsCdf.ps1` checks `EUS_UnitState` version 2 at that commit.
  The native full-carry fixture no longer sets Unit Dialog lines and the Unit Scripts fixture no
  longer plays an animation (the runner loads no EXPBG Ambient Units; a pose code without its
  addon is checked as refused by the save check). Their result lines drop `dialogs`,
  `dialogRestored` and `posed`. Native runs pending.
- Workshop listing: Unit Dialog points to the companion.
Game Version
1.8.0.13
Created
Tue, 13 Oct 2026 18:41:43 GMT
Last Modified
Tue, 13 Oct 2026 18:41:50 GMT

0.1.17

- Renamed: EXPBG CDF Compat is now **EXPBG CDF GM Save Compat** (same Workshop item
  07BC942D90324CD9 and addon; repository ExpBG-Tech/mod-compat-cdf-gamemaster-save). It requires EXPBG
  Gamemaster Tools (formerly EXPBG GM Tools) 0.2.2 and CDF Game Master Save.
- Gamemaster Tools 0.2.2 depends only on EXPBG Gamemaster Data (formerly EXPBG Data), which now also
  carries its sounds, so this pack no longer pulls in EXPBG Ambient Sounds Data. No save format change.
Game Version
1.8.0.13
Created
Tue, 13 Oct 2026 07:29:36 GMT
Last Modified
Tue, 13 Oct 2026 07:29:58 GMT

0.1.16

Requires EXPBG GM Tools 0.2.1 (AI Surrender password override slot).

- Prisoners: per-squad/per-soldier override rows now hold five values (GM Tools 0.2.1 added
  "reveal password"); rows from earlier saves (four values) still load, and a row is saved with
  four values while its password slot is unset, so earlier releases keep reading it.

- Save window (new): manual Game Master saves and autosaves through CDF show the same centered
  EXPBG window as a load to every Game Master ("Saving <name>", or "Automatic save"), with the
  phase, a progress bar and the elapsed time; other players get a small "Mission is being saved"
  banner (`savePlayerBanner`). Phases are reported as they happen: Preparing (the window opens;
  the capture waits `saveShowDelayMs`, default 250 ms, and at least one server frame, so the
  window is on screen before the server pauses), Capturing (announced one frame before CDF's
  capture runs), Writing (CDF's write runs in the next frame), then "Save completed" with the
  entity count and the duration for 4 s, or "Save failed" (capture refused, file not written,
  save stopped) followed by the reasons in the EXPBG notice. One owner RPC per player and
  phase; nothing per frame. The editor is not blocked during a save.
- The capture is not spread over frames: CDF captures the whole scene, every EXPBG bridge
  included, in one frame, so the save stays one consistent moment, and the file is exactly the
  one CDF writes (CDF 1.4.1's Save step for step: capture, refusal, write, write failure, log
  line, result). Only the write moved to the next frame; the document is detached data by then.
- Busy: a save or a load while a save runs answers busy, as a save during a load already did;
  autosaves are postponed by CDF meanwhile. The requesting Game Master gets CDF's result once
  the file is written, and the save list is refreshed then. A script error in the capture or
  the write ends the save and frees CDF (it no longer stays busy for the session).
- End of mission: CDF's `endgame` save stays synchronous; a save still pending when the mission
  ends (or CDF stops) is captured and written at once first, so neither is lost.
- Load window: a finished load now shows "Load completed" with the records restored (of the
  saved records) and the duration for 4 s instead of just closing; a refused or stopped load
  shows "Load failed", then the reasons. Players' banners say "Mission loaded" / "Mission was
  not loaded".
- Settings (`$profile:CDF_GMSave/expbg_load.json`, all optional): `saveMode` `progress`
  (default) or `instant` (CDF's own one-frame save, no window), `saveShowDelayMs` (0-2000,
  default 250), `savePlayerBanner` (default true). Existing files keep working; missing keys
  use the defaults.
- Logs: `[EXPBG CDF SAVE] phase=<prepare|capture|write> ...`, one `[EXPBG CDF SAVE] progress save
  done: result=... entities=N totalMs captureMs writeMs phases=prepare>capture>write>done` line
  and `[CDF TIMING] save phase=... ms=...` per phase.
- Tests: `tests/Test-SaveProgress.ps1` (portable); the native full-carry fixture
  (`tests/EBG_CDFFullCarryRoundTrip.c`) now also runs a progress save and checks its phases,
  busy answers and the written slot.
Game Version
1.8.0.13
Created
Mon, 12 Oct 2026 23:27:47 GMT
Last Modified
Mon, 12 Oct 2026 23:27:53 GMT

0.1.15

Requires EXPBG GM Tools 0.2.0 with its spawn gate and end-of-mission settle APIs
(`fix/open-issues-20261012`; still pinned to 0.1.22 in `tools/pack.json` until that release is
tagged); the overlap check also runs against GM Tools 0.2.0 with `EXPBG_GM_TOOLS_COMMIT`.

- Load (#18): after CDF's deferred pass the throttled load waits for the Ambient Destruction
  building replay and shows it in the centered Game Master window as its own phase,
  "Destroyed buildings: zone N of M (n of m)" (zones of the loaded save, each saved building
  counted with its nearest zone; the bar follows the buildings). Game Masters get the editor back,
  and the load result, once the buildings are down.
- Load (#18): while a load runs (its building replay included) the server also refuses Game Master
  moves (transform confirm), attribute edits and regrouping (moving a unit into another group),
  with the same "Editor action refused" notice as placing and deleting. A refused move fails like
  a vanilla failed move; a refused attribute edit changes nothing.
- Load (#18): GM Tools garrison spawns (module spawns, Random Garrison generation and clearing)
  wait while a load, CDF's deferred pass or the building replay runs, and 10 s after, through GM
  Tools' own `EXPG_GarrisonSpawner.Paused`; GM Tools resumes its queued work itself. Ambient
  Civilians (pedestrians and traffic) and Ambient Unrest crowds are held the same way through GM
  Tools 0.2.0's `EBG_SpawnGate` (modded instance method `IsHeld`; admissions already under way
  finish).
- End-of-mission save (#10): before CDF writes the `endgame` save in `OnGameEnd`, GM Tools 0.2.0
  settles Unit Caching (`EBG_CacheSnapshot.SettleForCapture`: wake and release requests cancelled,
  unfinished Simulation restores and scalar rollbacks completed in place, a Prepare for Save pause
  that is not Ready ended; nothing spawned) and checks the garrisons
  (`EXPG_GarrisonPersistence.SettleForCapture`), so a pending wake no longer loses the last save of
  a session. Only on the first call while CDF runs with `saveOnGameEnd`; one
  `[EXPBG CDF SAVE] end of mission` line with both results; the game end is never blocked.
  Saved-ownership issues and failed Full transactions still refuse the capture with their reason.
- Needs the GM Tools 0.2.0 APIs above (`EBG_SpawnGate`, both `SettleForCapture`); the overlap check
  names them as pending while the checked GM Tools commit lacks them (`Test-DependencyOverlap`),
  and verifies their declarations once it has them.
- Save reminder (#10, optional): `saveReminderMinutes` in `$profile:CDF_GMSave/expbg_load.json`
  (default 0 = off) reminds every Game Master after that many minutes without a successful save
  or load, once per period.
- Refusals (#15): the six bridges' own CDF-style refusal dialogs (Ambient Destruction, Garrison,
  Prisoners, Unit Dialog, Unit Scripts, Vehicle Crew) are gone; every refusal of a save or load,
  Unit Caching and Intel Items included, is shown in the one EXPBG notice, one line per bridge.
- Vehicle Crew (#15, optional crew rule): a soldier already sitting in another seat of his saved
  vehicle or static weapon after a load stays there and counts as seated instead of standing next
  to it; the load summary adds `otherSeat=N`.
- Vehicle Crew (#14): default crews and unsaved holders added to a save are built by CDF's own
  record capture (shared with the prisoner bridge, `EPR_CaptureRoot`), so they carry CDF's save
  flags (destroyed), slot link and attributes exactly like CDF's own records.
- Unit Caching (#14): the saved-roster rule (a restored squad keeps exactly its saved members)
  moved from the prisoner bridge to the Unit Caching bridge; it runs for every successful load as
  before.
- GM Tools 0.2.0 (EXPBG Data): native builds and the CDF round-trip fixture stage GM Tools'
  dependencies transitively by GUID (EXPBG Data `AE27DCE212F2C44D`, EXPBG Audio Data
  `198987BE7BAC4C84`, and theirs; `tools/Find-AddonDependencies.ps1`); the overlap check also
  covers the resources GM Tools lists in EXPBG Data; nothing here names the Ambient Sounds module
  GM Tools 0.2.0 moved to EXPBG Ambient Sounds.
- Not changed: the nested `cdfState` envelopes (#14.1) are kept; flattening them is a save-format
  redesign.
Game Version
1.8.0.13
Created
Mon, 12 Oct 2026 08:36:53 GMT
Last Modified
Mon, 12 Oct 2026 08:37:08 GMT

0.1.14

Requires EXPBG GM Tools 0.1.22.

- Throttled CDF load (#18): loads spread Clear and Spawn over frames (3 ms, 2 records per frame,
  25 records/s, 1.5 s between phases, back-off after slow frames; settings in
  `$profile:CDF_GMSave/expbg_load.json`, `loadMode` instant = CDF's own load). Game Masters see a
  centered EXPBG "Loading save" window with phase, progress and elapsed time that blocks the editor
  until done; other players see a small banner. Saves, autosaves and other loads answer busy
  meanwhile, and the server refuses Game Master placing and editor actions such as delete.
- Ambient Destruction (#12): every load replays saved building collapses after the load, one at a
  time (at most one per 100 ms, about 4 ms per tick), instead of all of them inside CDF's load
  frame; restored soldiers, vehicles and props next to a collapsing building are left unharmed.
  Garrisons are created after the replay, so no guard is posted next to a building about to
  collapse. Expected holds log as warnings.
- Vehicle Crew (#11): saves written by 0.1.11 no longer teleport static weapon gunners to one spot
  next to an unrelated group. A crew link is used only when its record has the seat's holder prefab
  and spot (2 m); otherwise it is ignored (`[EXPBG CDF CREW] legacy link ignored count=N`) and the
  gunner is re-seated in the static weapon found by prefab and position, or stays where CDF
  restored him. Saves check the same rule.
- Vehicle Crew (#11): static weapon seats are taken first after a load, and a gunner back on a
  static weapon gets the EXPBG Unit Scripts Stay mounted script unless he restores his own. Game
  Masters get one notice per load listing static weapon gunners that could not be re-seated. A
  static weapon CDF did not save that cannot be found ends after the fast attempts instead of 10
  minutes of retries.
- Vehicle Crew (#13): a load no longer deletes a mission vehicle or static weapon just because a
  saved soldier sits in it. An unsaved holder is cleared only where the loaded save recreates it
  (same prefab within 0.5 m), also when that soldier's crew link was ignored (0.1.11), never with a player in any seat, so after a restart exactly one
  tripod is left at an adopted post.
- Vehicle Crew (#15): the restored group's faction replicates to clients; a seat the engine refuses
  twice is given up and the soldier stands; the AI pin lasts at most 60 s per soldier.
- Inventory (#17): new "EXPBG Save loadout" checkbox in a single AI soldier's or civilian's
  Character tab (never offered for players, playable characters or prisoners). Server setting
  `loadoutMode` in `CDF_GMSave/EXPBG_CDF_Compat.json`: `allAI` (default, unchanged behaviour; the
  mark is only remembered) or `markedOnly` (only marked units keep their saved loadout and get it
  back exactly, Arsenal changes included; other AI load with their prefab loadout). The mark
  survives saves and loads. Saved inventory lists are parsed after CDF's load frame.
- Intel Items: locked laptops (state, password, attempts, lockout, the owner who knows the password)
  and rack download settings (USB and laptop failure chances, laptop download time) are saved and
  restored, carried laptops included. Payload version 2; older saves still load (unlocked).
- Garrison: saves and loads garrison ledger schema 2 (post roles, door stance, frags, stored
  building plans) and still loads schema 1 saves; the schema is named in the save and load lines;
  a refused load no longer leaves skipped garrisons in a later notice.
- Unit Scripts: Stay mounted and Sit on a chair are kept through CDF saves.
- Prisoners (#14): records of prisoners added to a save are built by CDF's own capture (no copy, no
  obsolete Serialize warning); a CDF update that moves the capture hook is reported once.
- AI Global Skills (#14): the saved combat mode uses the public GM Tools accessor.
- Missing prefabs (#15): only Unit Caching modules, Ambient Destruction zones and the records above
  them refuse a load. Any other missing prefab is listed once; loading the same save again within
  two minutes loads it without those entities.
- Robustness (#15): every bridge waits for CDF's deferred pass through one shared poller; a load
  that stops on a script error resets every bridge's import state and CDF's busy flag; Intel Items
  refusals and the reason for any refused autosave or end-of-mission save reach the Game Masters
  (#10); eager static initializers are created on first use.
- Unit Caching (#5): the capture no longer re-parses every zone snapshot after CDF's capture and
  logs `[CDF TIMING] unit-caching capture`.
- Vehicle Crew: soldiers a Game Master sat in a chair or other sittable prop (for example Heine's GM
  chairs) are no longer saved as crew seats; that re-seat logic never worked in production (0 chair
  seats captured in every save). CDF saves such a soldier like any other, and a chair seat in an older
  save is not re-entered. Vehicles, turrets and static weapons are unchanged, and EXPBG Unit Scripts
  animations (including Sit on a chair) still save and restore. The save summary adds
  chairsNotSaved=N.
Game Version
1.8.0.13
Created
Mon, 12 Oct 2026 02:43:45 GMT
Last Modified
Mon, 12 Oct 2026 02:43:52 GMT

0.1.13

- Vehicle Crew: each seat move-in keeps the soldier's AI out of its maximum LOD until he sits, so
  vehicle crews far from every player take their seats after a load (production save replay: 8 of
  8 vehicle seats, was 0). The pin is released once he sits or stands.
- Vehicle Crew: a vehicle or static weapon added to the save with its crew (no author) is cleared
  with that crew before a load, so a load in the same session no longer leaves a second, empty
  tripod next to the restored one.
- Fixtures: EBG_CDFFullCarryRoundTrip (Hold/Freeze scripts and dialog of a Full-cached squad
  through CDF); the crew round trip now uses a tripod without an author.
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 11:32:14 GMT
Last Modified
Sat, 10 Oct 2026 11:32:21 GMT

0.1.12

- Vehicle Crew: gunners of static weapons (tripods, emplacements) are restored to their seat. A
  holder that CDF did not save (no author, e.g. a Game Master tripod) was linked to the wrong record
  (Enforce map.Find leaves 0 when the key is missing), so the gunner always stood up; such a vehicle
  or static weapon is now saved with its crew. Every soldier left standing after a load is logged
  once with the seat and the reason ([EXPBG CDF CREW STAND]).
- Vehicle Crew: a seat move-in the engine accepted but did not finish (vehicle crews far from every
  player after a load) is retried every 5 s for up to 10 minutes instead of standing the soldier up
  after 2 s. A seat that is gone, taken or of another type still stands him up at once.
- Unit Caching: after a CDF load every cache zone starts disabled, whatever it was when saved; the
  Game Master enables them with the global controller.
Game Version
1.8.0.13
Created
Sat, 10 Oct 2026 08:16:34 GMT
Last Modified
Sat, 10 Oct 2026 08:17:03 GMT

0.1.11

- New Vehicle Crew module: AI soldiers sitting in vehicles, static weapons and sittable props
  (for example the chairs of Heine's asset pack) keep their seat through a CDF save and load.
  Each saved soldier stores his seat (type and index, plus prefab and spot for a prop CDF does
  not save) under an extra `evcSeat` key and CDF's own crew link; the default crews of saved
  vehicles that CDF skipped are added as ordinary CDF records with the vehicle's author. After a
  load each crew member is moved straight into his saved seat (no walking, nothing spawned);
  a seat that is gone or taken leaves him standing beside it. Players, prisoners, garrison
  guards, reserved groups and ACE animation helpers are never touched. Older readers ignore
  the key. Each load logs one `[EXPBG CDF CREW]` summary.
- Prisoners are saved with CDF: EXPBG AI Surrender prisoners and ACE Captives surrendered or
  handcuffed soldiers carry an `eprPrisoner` envelope (prisoner record, interrogation progress,
  dossier, ACE flags, held weapons; their squad an `eprSquad` token). A load holds them passive
  from the moment CDF spawns them, then surrenders them again with their saved record and
  re-applies the ACE state. A damaged envelope is refused before CDF clears the scene. Saves
  without envelopes load as before. Each load logs one `[EXPBG CDF PRISONERS]` summary. This
  replaces the 0.1.4 rule that released prisoners on load.
- A squad saved with fewer members than its prefab (prisoners taken out, casualties) loads
  with exactly its saved members. Before, the squad prefab topped itself up to its full roster
  next to the restored soldiers. Squads saved without member records are unchanged. Each load
  that keeps rosters logs one `[EXPBG CDF ROSTER]` line.
Game Version
1.8.0.13
Created
Fri, 09 Oct 2026 10:36:07 GMT
Last Modified
Fri, 09 Oct 2026 10:36:22 GMT

0.1.10

- New Unit Scripts bridge: CDF saves now keep each AI soldier's Hold position, Freeze or ambient
  animation together with his held spot and heading, and a CDF load restores them after CDF's
  deferred state pass, once the soldier's AI is ready. A damaged script envelope is refused before CDF
  clears the scene; an unreadable script only loses that soldier's script. Character inventories pass
  through unchanged. Requires EXPBG GM Tools 0.1.18 (unit script state API).
- New Inventory CDF module: after a CDF load, restored AI characters, vehicles and crates get back
  the saved items CDF's own inventory restore lost (mostly spare magazines and grenades its
  fallback swapped into an occupied weapon or grenade slot, where they replaced the equipped item).
  Only missing items are added: back into their saved pouch or any storage with room, never by
  replacing an item, never more than were saved, never items CDF itself refused, never on players.
  Existing saves load unchanged; each load logs one `[EXPBG CDF INV]` summary.
- Expected Unit Scripts refusals (a damaged save, one unreadable script) log as warnings.
Game Version
1.8.0.13
Created
Fri, 09 Oct 2026 03:58:16 GMT
Last Modified
Fri, 09 Oct 2026 03:58:22 GMT

0.1.9

- Built against EXPBG GM Tools 0.1.16 (pinned in `tools/pack.json`), which now depends on EXPBG Audio Data.
- Workshop listing: a short feature list, licence Arma Public License (APL).
Game Version
1.8.0.13
Created
Thu, 08 Oct 2026 07:47:48 GMT
Last Modified
Thu, 08 Oct 2026 07:47:54 GMT

0.1.8

- Built against EXPBG GM Tools 0.1.15 (pinned in `tools/pack.json`).
- Intel Items CDF: CDF saves cost less. Each captured entity allocates nothing
  until it holds intel, a server rack or a USB drive, and a captured inventory
  is walked once for carried intel and carried drives instead of twice. The
  saved records, their order and the refusals (more than 400 intel items or
  drives in one inventory) are unchanged. The intel, rack and drive prefab
  checks skip their prefab lists for any record that is not an EXPII prefab.
- Unit Caching CDF: the `[EBG CDF AUTHORS]` warning about deletes of entities
  whose author is not registered sums up to 30 s (it was one line per frame,
  about one per entity under Full caching) and says so; world cleanup prints
  any pending summary at once.
- Portable guard `tests/Test-CdfPerformance.ps1`: the prefab-check shortcut
  matches every whitelisted path and GUID, the single inventory pass keeps
  its order and refusals, and the warning window is flushed at world cleanup.
Game Version
1.8.0.13
Created
Thu, 08 Oct 2026 05:00:46 GMT
Last Modified
Thu, 08 Oct 2026 05:00:53 GMT

0.1.7

- Built against EXPBG GM Tools 0.1.14 (pinned in `tools/pack.json`).
- AI Global Skills CDF: with this pack loaded, the vanilla "Set combat mode"
  attribute was missing from a group's Edit properties, and CDF did not save or
  restore the AI Global Skills module's global values. The modded attribute
  classes lacked `[BaseContainerProps()]`, so `Edit.conf` logged "Unknown class
  'SCR_AIGroupCombatModeAttribute'" and "'EGS_SavedGlobalAttribute'" and dropped
  them. Restored.
- Workshop description without the version number.
- Portable guard `tests/Test-AttributeDecorators.ps1`: every modded editor
  attribute keeps its container decorator.
Game Version
1.8.0.13
Created
Wed, 07 Oct 2026 12:41:10 GMT
Last Modified
Wed, 07 Oct 2026 12:41:17 GMT

0.1.6

- Built against EXPBG GM Tools 0.1.11 (pinned in `tools/pack.json`).
- Garrison (new bridge, replaces the guard): garrisons are saved in CDF files
  and loaded back. The CDF document carries the EXPBG GM Tools garrison ledger
  (`expgGarrisons` around CDF's world state): every garrison's building, posts
  and patrol stops, cache state, settings, casualties and overrides. CDF never
  captures a garrison squad or soldier itself, and Full caching works under CDF
  again. A load with `clearBeforeLoad` clears the scene's garrisons and restores
  the saved ones once CDF has finished (no duplicates); their soldiers' AI stays
  held until they are bound to their posts, and Full garrisons stay cached with
  nobody in the world. Refused before anything changes, with the reason in a
  dialog: an append load (`clearBeforeLoad` off) of a save with garrisons, and a
  save whose garrison ledger cannot be read (wrong world, missing prefab or
  faction, damaged data); loading the same save again within two minutes loads
  it without its garrisons. CDF saves and autosaves no longer need Unit Caching
  Prepare for Save while garrisons are active.
- Tests: `tests/Run-CdfRoundTrip.ps1` and `tests/EXPG_CDFGarrisonRoundTrip.c`,
  a native in-process CDF round trip (capture, file, refusals, restore).
Game Version
1.8.0.13
Created
Wed, 07 Oct 2026 04:27:19 GMT
Last Modified
Wed, 07 Oct 2026 04:27:47 GMT

0.1.5

- Built against EXPBG GM Tools 0.1.8.
- Garrison: GM Tools 0.1.8 caches garrisons set to Full in Simulation while CDF
  is loaded ("Simulation cached (CDF loaded)"), so the Garrison guard no longer
  fires with it. Next to an older GM Tools (0.1.7) the pack still loads and the
  guard still holds Full, now saying to update GM Tools, or choose Simulation
  or Off. The Workshop description says the same.
- Tests: the GM Tools overlap check also requires every method this pack
  overrides in a GM Tools class to exist there with the same signature.
Game Version
1.8.0.13
Created
Tue, 06 Oct 2026 15:34:29 GMT
Last Modified
Tue, 06 Oct 2026 15:34:58 GMT

0.1.4

- Built against EXPBG GM Tools 0.1.7.
- Unit Dialog (new module `unit-dialog-cdf`): each AI's speaker name, dialog
  lines and talking gesture are saved with the CDF-saved character and restored
  on load. Invalid dialog data is refused before CDF clears the scene ("Save/Load
  refused by EXPBG Unit Dialog: <reason>", `[EUD CDF HOLD]`). Units inside a
  Full-cached squad do not keep their dialog through CDF.
- Intel Items: server racks and USB drives keep their title, text, download time
  and drive contents through CDF save/load (also racks placed in the world
  editor). Saves with intel only are unchanged.
- AI Global Skills (new module `ai-global-skills-cdf`): a load restores exactly
  the saved settings (the session's newer values no longer leak in), a load
  without a module resets to vanilla, and each group's original combat mode is
  kept so Vanilla ROE or deleting the module restores it.
- AI Surrender (new module `ai-surrender-cdf`): prisoners removed by a CDF load
  are released from the surrender bookkeeping (`[ESR CDF] N prisoners removed by
  the CDF load`).
- Release housekeeping: after a successful publish, old heavy build and release
  payloads move to the configured archive (`ArchiveRoot` in `.local/config.json`);
  receipts and logs stay. Nothing is deleted except by an explicit `-Purge`.
Game Version
1.8.0.13
Created
Tue, 06 Oct 2026 12:32:03 GMT
Last Modified
Tue, 06 Oct 2026 12:32:14 GMT

0.1.3

- Built against EXPBG GM Tools 0.1.5.
- Unit Caching: restored AI characters now count for their saved Game Master
  author, so clearing or deleting restored AI no longer logs
  `AuthorEntityRemovedServer - This should not happen` or lowers another
  entity's count. `[EBG CDF AUTHORS]` lines summarise each restore and name any
  delete whose author is not registered.
- Unit Caching: after a CDF load, every group that ended without AI is listed
  (`[EBG CDF EMPTY GROUP]`) with the reason (`never-saved`, `spawn-failed`,
  `saved-dead`, `not-in-group`) and whether the save held a Unit Caching
  snapshot for it.
- Intel Items: restoring carried intel is matched per inventory by prefab (one
  scan before and one after spawning missing items) and reuses the load's
  validation instead of parsing every payload twice.
- All three adapters print `[CDF TIMING]` lines once per load for Restore and
  Apply, separating their own time from CDF's.
Game Version
1.8.0.13
Created
Tue, 06 Oct 2026 00:47:53 GMT
Last Modified
Tue, 06 Oct 2026 00:48:01 GMT

0.1.2

- Ambient Destruction: when a CDF save or load is refused, the Game Master now
  sees a dialog with the reason instead of only a server log line (CDF itself
  reports results as hints, which are invisible with hints disabled). A load
  started while a previous Ambient Destruction import is still running or failed
  now says so.
- Requires EXPBG GM Tools 0.1.4, which also lets a saved destroyed building load
  after a server restart when native mission persistence already removed it.
Game Version
1.8.0.13
Created
Mon, 05 Oct 2026 19:35:24 GMT
Last Modified
Mon, 05 Oct 2026 19:35:30 GMT

0.1.1

Game Version
1.8.0.13
Created
Mon, 05 Oct 2026 13:41:29 GMT
Last Modified
Mon, 05 Oct 2026 13:41:37 GMT

Showing 1 to 26 of 26 results

Rows per page