0%
Loading...
NolimitHost

Arma Reforger 1.9 Modding Changes — Script Renames, Editor Improvements, Magazine Repacking & A New AI Spawning System

Arma Reforger Update 1.9 is coming with a set of changes that matter a great deal to anyone who builds or runs custom content. Bohemia Interactive published a dedicated breakdown of the modding-facing changes on September 24, 2026, and the short version is: 1.9 may break existing mods, with renames, removals and two systems that have been rewritten beneath you.

Below is what changed, and what server owners and mod authors need to check.

The full technical breakdown comes from Bohemia Interactive — read the official Changes and Improvements in 1.9 article.

🧩 Script Changes — Renames And Removals

Bohemia describes the scripting changes as "only a few", but several of them are breaking:

  • A new engine-level Timestamp API with three classes — Timestamp (wall-clock time, millisecond precision), DateTimeView (an immutable calendar snapshot with time-zone offset) and Duration (signed, millisecond precision). These class names can conflict with existing mods — a likely culprit for compile errors on update.
  • New Debug.ErrorFormat(), replacing the Debug.Error(string.Format(...)) pattern.
  • The character loitering system was reworked, and SCR_ELoiterItemID is renamed to SCR_EAnimationItemID.
  • Inventory system rework: SCR_InventoryStorageManagerComponent.ValidateStorageRequest() is renamed to ValidateItemRequest(), and SCR_InventoryStorageBaseUI.GetAllItems() is now public — some mods will need to drop the private keyword from their modded classes.
  • Mission header parsing moved out of SCR_GameModeCampaign into SCR_BaseGameMode.ParseHeaderFile(), called for every game mode inheriting from SCR_BaseGameMode when a mission header is present.
  • Wheeled vehicles reworked — the biggest scripting change is that SCR_WheelSlotInfo now has its own GetWheelIndex() method, so custom getters can go.
  • SCR_EditableEntityComponentClass.SetAuthor() takes a new bool isGM argument, and SCR_EXPRewards.SQUAD_KILL_ASSIST is now available in vanilla.
  • Removed: the WorldEditorAPI methods ModifyHeightMap, ModifyHeightMapUserShape, ModifyLayers and ModifyLayersUserShape.
  • Moved: ElideText() from RichTextWidget to TextWidget, so lighter elements can use it. Plus DbgUI.Separator was added for organising debug UI.

🛠️ Editor Improvements

  • Log console text selection actually works now: more accurate selection, double-click selects a whole word like a normal text editor, copying is reliable, and the misleading dashed rectangle that appeared after a double-click is gone.
  • Animation Editor graph navigation history: the graph view recalls where you've been, so you can jump backward and forward instead of retracing by hand — via toolbar buttons or Alt+Left / Alt+Right. A location is recorded when the active sheet changes or selection moves to another node, and history is scoped to the workspace session.
  • World Editor: when a config object is inherited from another config file, that's now visible in child configs and prefabs too — inherited config objects appear dimmed.
  • Script Editor: with nothing selected, Ctrl+C and Ctrl+X copy or cut the entire line.

🔫 Magazine Repacking

A new infantry quality-of-life feature with real implications for how firefights play out on a server: players can combine partially loaded magazines by dragging one onto another, turning a pocket of nearly-empty mags into fewer full ones — and discarding the empties to save weight.

It's server-authoritative: the client requests, the server validates, rounds transfer one at a time, and the server replicates progress to nearby proxies so everyone in earshot hears the repacking.

Constraints worth knowing:

  • Rounds transfer one at a time, with transfer time per round equal to the source magazine's extraction time plus the target's insertion time.
  • Both magazines are locked for the duration and can't be moved or transferred, and you can't repack a magazine attached to a weapon.
  • The character must stay still unless in a vehicle. Repacking is interrupted by changing stance, raising the weapon or using a gadget — and in a vehicle also by changing seats or aiming. Closing the inventory stops it.
  • Empty magazines can be deleted once repacking finishes (Delete if empty, true by default).
  • Repacking finishes when the source runs out of rounds or the target is full.

Three repacking rules decide what can reload what:

  • CAN_WHEN_OTHER_CONTAINS_THIS_AMMO_TYPES (default) — the source must contain all bullet types in the target. A source holding extra types (say M995 AP on top of M855 ball and M856 tracer) is still accepted.
  • CAN_WITH_SAME_AMMO_COMPOSITION — the source must have exactly the same composition of bullet types as the target. Only types matter, not ratios.
  • CAN_WITH_SAME_AMMO_CONFIG — only checks the ammo config, so a source using the same config but different types can still load, with its rounds converting into the target's projectiles.

🤖 The New AI Spawning System

The largest system-level change in 1.9, and the one server owners should watch most closely.

  • Spawning now runs through a queue, serving requests by importance — CRITICAL, then HIGH, NORMAL, LOW. The queue spawns at most four members every half second across the whole world, so a group fills up over a few seconds rather than popping in instantly. Groups below full strength that aren't dormant are topped up automatically, one member at a time.
  • There's now only one AI limit that matters, and the default is 128. It's set either by the CLI parameter -activeAILimit X or the AIWorld property Active AI limit. Dormant groups don't count against the limit, but unconscious characters do (so the queue won't spawn replacements for them). Game modes can split the limit per faction.
  • Eviction instead of hard failure. When a request doesn't fit under the limit, the world tries to free room by despawning one group — putting it to sleep, not killing it. The candidate must be lower importance than the requester, not dormant, and farther than 800 m from every player. Among candidates it picks lowest importance first, then farthest away. Two useful consequences: a LOW group can never evict another group, and a group within 800 m of any player is safe from eviction.
  • Proximity lifecycle lets a group manage itself: set the policy once and leave it. Roughly once a second the group checks for a nearby observer (a player or a Game Master camera), asks the queue for members when one is within the spawn distance, and despawns and goes dormant when all observers are beyond the despawn distance. A 600 m / 800 m split prevents on/off flapping, and a pop-in guard means fresh members don't spawn in front of a player who has gradually approached within 150 m.
  • Ambient patrols are the clearest example, using AmbientPatrolSpawnpoint_Base.et plus faction variants, with attributes for group type (or a probability-weighted random pick), spawn/despawn distance overrides and importance (default LOW). A patrol wiped out in combat doesn't come back, and one whose empty spot a player reaches is retired permanently.
  • What saves and what doesn't: the dormant alive/dead counts and the spawn point's eliminated flag persist — but importance, lifecycle policy and spawn/despawn distances are not saved. Whoever creates a group must set importance and policy again after a save is loaded.

🖥️ What This Means For Your Server

  • Test your mod set before 1.9 goes live on your server. This is the most mod-breaking update in a while: class renames, removed WorldEditorAPI methods, changed method signatures, and new engine classes whose names may collide with your mods. Compile and load your collection on a 1.9 build before pushing it to a populated server.
  • The AI limit is now a one-knob performance decision. A single default of 128 active AI, set via -activeAILimit or the AIWorld property, replaces whatever juggling you did before. On a heavily-populated milsim server with Game Master spawning, this is the number that decides whether your simulation stays smooth.
  • Dormant groups not counting is a genuine server win. Groups beyond their despawn distance stop costing you active-AI budget, and the 800 m eviction floor means combat near players is never evicted out from under them.
  • Magazine repacking slightly changes the infantry economy. If your server runs limited-loadout or supply-focused rulesets, players can now consolidate ammo in the field — worth reviewing if scarcity is a deliberate part of your balance.
  • Update your mission scripts for the AI lifecycle. If you spawn groups by hand, nothing changes by default (the default policy is Manual) — but adopting the ProximityDriven policy is how Bohemia intends ambient AI to run from now on.
  • Track the Feedback Tracker. Bohemia points modders at their issue tracker for 1.9 problems, and reporting compile breaks early is what gets them fixed before release.

Running an Arma Reforger milsim server? NolimitHost Arma Reforger hosting gives you the CPU headroom and network stability that large-scale operations and AI-heavy scenarios demand.

Conclusion

The 1.9 modding update is a mix of small conveniences and structural change: a new Timestamp API that can collide with existing mods, a pile of renames and removals across inventory, loitering, mission headers and WorldEditorAPI, genuinely useful editor fixes (log console selection, animation graph history, dimmed inherited configs, Ctrl+C line copy), the server-authoritative magazine repacking system with its three ammo-compatibility rules, and a rewritten AI spawning pipeline built around an importance queue, an active-AI limit of 128, eviction with an 800 m player-safety floor, and self-managing proximity-driven groups.

Read Bohemia's own article for the code-level detail and the full list of API changes: Changes and Improvements in 1.9.

Protect your Arma Reforger milsim server

Get Arma Reforger Hosting Visit Help Center