Changelog
Version history and release notes
Version 1.8.1
Latest May 25, 2026Per-Side Doctrine: NATO / Eastern Bloc / Guerrilla
AI Zeus now runs three distinct tactical playbooks depending on which side it commands, instead of using a single Western combined-arms doctrine for all sides. Doctrine is selected automatically from AIZEUS_controlledSide and is overridable via Eden Init module Combo, CBA Settings, or admin command.
The default AIZEUS_controlledSide is still east, and AIZEUS_doctrineStr defaults to "AUTO". That means a fresh install commanding OPFOR now uses Eastern Bloc doctrine instead of NATO. If you depend on the v1.7.9 NATO-flavored behavior on an East-side mission, set AIZEUS_doctrineStr = "NATO" in the Init module or CBA Settings. Missions commanding WEST or INDEPENDENT continue with their previously-implicit doctrine (NATO / Guerrilla).
Doctrines
- NATO — Combined-arms, AirLand Battle. Default for
west. PINCER assaults, 3-round precision artillery, 200m dismount, upper-floor garrisons, 90° / 0.7 flank geometry. Values bit-for-bit identical to v1.7.9. - EASTERN_BLOC — Soviet motor-rifle (FM 100-2.1, Grau & Bartles "Russian Way of War"). Default for
east. ECHELON 2-wave assault with tanks forward, optional 30s artillery preparation barrage, infantry dismount 400m, wider frontages, reverse-slope / basement garrisons, sticky commitment, 70° / 0.9 deep envelopment, 6-round mass-fires artillery. - GUERRILLA — Mao's axiom + Giap's protracted-harassment doctrine + modern insurgent practice. Default for
independent. Never assaults — HARASS pattern only: brief suppress from 300m standoff for 10-15s then immediate fall-back. Ambushes break on first volley. No CAS / no organic arty / no idle helicopter patrols. Ground-floor garrisons for quick egress. 45° / 0.5 escape-preserving flank. Lower aim, higher courage, +10% spot distance.
Architecture
- Profile table —
fn_initDoctrinebuildsAIZEUS_doctrineProfileshashmap with 25 parameters per doctrine. NATO values = the constants the codebase previously hardcoded. - Live transitions —
fn_doctrineTransitionre-applies skill biases to surviving controlled units when doctrine flips so a NATO → Guerrilla switch actually lowers their aim. - HC-safe getter —
fn_getDoctrineActivewhitelisted inCfgRemoteExec(allowedTargets = 0) so client and headless decision code can fetch the active doctrine without inline code blocks across the network. - Skill bias —
fn_applyDoctrineSkillBiasmultiplies the EASY / MEDIUM / HARD / VETERAN preset before randomization. Existing difficulty preset still drives overall skill ceiling — doctrine just shifts the band.
Tactical Wiring
- State thresholds —
fn_evaluateTacticalStatepulls offensive / defensive / retreat ratios and casualty rates from doctrine.AIZEUS_baselineStancestill composes cleanly on top. - Assault dispatch —
fn_coordinateAssaultdispatches onassault_pattern: PINCER (NATO) / ECHELON (Soviet 2-echelon) / HARASS (Guerrilla shoot-and-scoot). - Smoke discipline —
fn_useGrenadesreads smoke chance from doctrine. Newsmoke_onRetreatgate: Guerrilla never deploys retreat smoke (signature discipline trumps cover). - Ambush behavior —
fn_ambushBehaviorbreak-casualty threshold and polling cadence from doctrine. Newambush_breakAfterFireflag for Guerrilla volley-and-fade. - Garrison floor —
fn_garrisonBuildingspicks upper / lower / ground based on doctrine (overwatch / reverse-slope / quick egress). - Transport dismount —
fn_transportToPositionusesdismount_distancefrom doctrine (NATO 200m, Eastern Bloc 400m, Guerrilla 50m technicals-to-target). - Idle heli patrol gate —
fn_idleHelicopterPatrolskipped entirely under Guerrilla doctrine. - Fire support gates — Guerrilla cannot request CAS or artillery. Eastern Bloc artillery defaults to 6 rounds (mass fires), NATO to 3 (precision).
UI & Configuration
- Eden Init module — New
AIZEUS_doctrineStrCombo attribute (AUTO / NATO / EASTERN_BLOC / GUERRILLA). - CBA Settings — AI Zeus › Sides › Doctrine list.
onChangere-resolves doctrine without restart. - Admin commands —
#aizeus doctrine_nato,#aizeus doctrine_east(ordoctrine_soviet/doctrine_eastern_bloc),#aizeus doctrine_guerrilla,#aizeus doctrine_auto. Existingside_*commands also re-resolve doctrine since AUTO mapping changes with side.
Backward Compatibility
- NATO doctrine values are bit-for-bit equal to v1.7.9's hardcoded constants. Any mission running on WEST keeps its v1.7.9 behavior.
- No existing CBA settings renamed or removed. Only
AIZEUS_doctrineStris added. - Saved games and HC distribution work without explicit save/load hooks — doctrine state is recomputed at postInit from
AIZEUS_controlledSide+AIZEUS_doctrineStrandpublicVariable'd on every resolve.
Version 1.7.9
May 13, 2026Per-Side Baseline Stance
A new AIZEUS_baselineStance setting controls how AI Zeus behaves when no explicit objectives (markers or modules) exist. Three values: DEFENSIVE (hold ground, no auto-attack), PROBING (default — investigate contacts via escalation), OFFENSIVE (auto-generate ephemeral ATTACK directives at known threat clusters). Configurable via the AI Zeus Init module attribute or CBA Settings › AI Zeus › Sides.
- Stance evaluator bias —
fn_evaluateTacticalStatereadsAIZEUS_baselineStanceand shifts the OFFENSIVE / DEFENSIVE thresholds. OFFENSIVE missions go to OFFENSIVE state at force ratio 1.4 (vs default 2.0); DEFENSIVE missions need 3.5 to go OFFENSIVE and tilt to DEFENSIVE even at 1.2. - Auto-attack loop — New
fn_baselineStanceLoopruns every 30s. When stance is OFFENSIVE, walksAIZEUS_threatClustersand registers ephemeralAIZEUS_MOD_ATTACK_*directives at each cluster center, capped at 3 simultaneous (configurable). Skips clusters within 250m of an existing designer marker / module. - Ephemeral lifecycle — Auto-attacks expire after 300s OR when their threat cluster vanishes. Designer-placed directives are never pruned — only those flagged
ephemeralin metadata. - Priority isolation — Ephemerals get priority 60; designer modules default to 50. Explicit objectives always win group-assignment priority.
Live Assignment Overlay
Toggleable in-game panel showing every group AI Zeus is managing — directive, state classification (ROUTED / TRANSPORT / ENGAGING / HOLDING / EN_ROUTE / IDLE), and strength. Bound to a CBA keybind so admins or Zeus curators can monitor the entire battlefield assignment at a glance.
- State classification — New
fn_classifyGroupStateresolves each group based on AIZEUS group flags + behavior + waypoint state. - Server-rendered —
fn_publishOverlayContentbuilds the structured-text content every 3s on the authoritative server and broadcastsAIZEUS_overlayContent. Clients just write the string into theirRscStructuredTextcontrol. - Color-coded — Engaging red, en-route blue, holding green, routed orange, transport purple, idle gray. Tally header + footer with tactical state, baseline stance, and total managed groups.
- CBA keybind — "AI Zeus: Toggle Status Panel" under CBA Settings › Addons (no default key). Admin or Zeus curator only.
First-Run Hint + Workshop FAQ
- In-mission hint —
fn_firstRunHintshows 25-30s after init to admins / Zeus curators if no objectives are configured. Lists the three workflows (module / marker / OFFENSIVE stance). Mission-scoped — once per mission. - Workshop description FAQ — "How Do I Tell My AI to Attack?" pinned at the top of the Steam Workshop description and the README.
Vanilla Zeus "Attack" Module Hook
A Zeus operator can now place the vanilla "Attack" / "Search and Destroy" module from the Zeus interface and have it transparently translated into an AI Zeus attack directive — no need to know about the bundled AIZEUS_ModuleZeusAttack.
- Curator EH hook —
CuratorObjectPlacedevent handler on every curator detects vanilla attack-type modules (matched by class listAIZEUS_zeusAttackHook_classesdefault["ModuleSearchAndDestroy_F"], or bydisplayNamecontaining "Attack" / "Search and Destroy"). - Server-side execute — Named, whitelisted
AIZEUS_fnc_zeusAttackExecutedeletes the vanilla module and registers an ATTACK directive at the same position. Whitelisted underCfgRemoteExecfor defaultmode=0— no inline anonymous code blocks crossing the network. - AIZeus modules untouched — Hook explicitly skips any class whose name starts with
AIZEUS_. - Late-curator polling — 10s loop installs the hook on any curator added mid-mission.
Bug Fix — Water-Aware Retreat
- Retreating AI no longer gets stuck wading and smoke-spamming — Three retreat helpers (
fn_orderRetreat,fn_leapfrogRetreat,fn_groupCasualtyRetreat) computed rally and bound positions viagetPos [distance, dir]with zero water validation. When the threat direction put the rally point on a lake or beyond a river, AI marched in, failed each 15s bound timeout, and compounded withfn_useGrenades's 70% retreat-smoke chance (20s cooldown) became continuous smoke factories. Fix: newfn_findLandPositionhelper snaps any desired position away from water using a directional ring-search; all three retreat helpers now route their targets through it;fn_leapfrogRetreatadditionally redirects to nearest land when the leader is already wading;fn_useGrenadessuppresses smoke deployment when the unit is over water.
Version 1.7.8
May 4, 2026Helicopters Always Moving
Helicopters used to hover or sit on the deck whenever they weren't actively transporting troops — the post-mission "RTB" waypoint was placed at the helicopter's current position with a 500m completion radius (already-complete the moment it was issued), and mission-start helis with no AI Zeus waypoints had nothing to do. Both cases are now fixed.
- RTB after dropoff goes home, not nowhere —
fn_transportToPositionrecordsAIZEUS_homePos(the heli's position before pickup) and routes the post-dropoff RTB through a new helper,AIZEUS_fnc_helicopterRTB. RTB radius dropped from 500m to 80m so the heli actually arrives. Both paradrop and landing-insertion branches use the same path. - Patrol cycle around home —
fn_helicopterRTBclears existing waypoints, adds a tight MOVE waypoint at home, then 3 ring waypoints 600-900m around home, then a CYCLE waypoint pointing back at home. Speed FULL, behavior AWARE. The heli loops indefinitely instead of hovering. - Idle helicopter patrol loop — New
fn_idleHelicopterPatrolruns every 30s, scansvehiclesfor controlled-side AI-piloted helicopters, and applies the same patrol cycle to any heli that doesn't already have one. Skips vehicles flaggedAIZEUS_transportBusy,AIZEUS_CAS_active,AIZEUS_blacklisted,AIZEUS_vehPreserving, dead, or player-piloted. Mission-start helis record their spawn position as home automatically. - Cycle re-establishment —
fn_transportToPositionclearsAIZEUS_idlePatrolActivewhen a transport mission starts;fn_helicopterRTBsets it true after building waypoints. The idle scanner won't fight the RTB helper but will rebuild the cycle within 30s if anything else clears the heli's waypoints.
Version 1.7.7
April 22, 2026First-Class Defend Markers
ELLIPSE and RECTANGLE markers named AIZEUS_DEFEND_AREA_* now have their own geometric size read as the defend radius. Mission designers can draw a zone on the map in Eden (or create one at runtime via Zeus) and the mod respects its extent directly — no editor module required, no nearestLocations guesswork. This makes the marker path a true first-class equivalent to the AIZEUS_ModuleDefendArea workflow, which is especially useful when running AI Zeus as -serverMod only (clients don't need the mod loaded to see the markers).
- Marker geometry → defend radius —
fn_scanMarkerDirectivesnow readsgetMarkerShapeandgetMarkerSize; when the marker is ELLIPSE or RECTANGLE,max(a,b)is stashed in a new server-side hashmapAIZEUS_markerAreaRadius. Oblong ellipses get a bounding radius large enough to cover their full extent. - New radius precedence —
fn_executeMarkerDirectivesresolves the DEFEND_AREA radius as: (1) marker geometry, (2)AIZEUS_moduleDirectiveMeta["areaRadius"]module attribute, (3)nearestLocationsauto-detect, (4)AIZEUS_defendArea_defaultRadius. The module path is unchanged for backward compatibility, just demoted to second priority. - Stale-marker cleanup — The existing
fn_init.sqfDEFEND_AREA cleanup loop now also prunesAIZEUS_markerAreaRadiusentries for deleted markers, so Zeus-runtime-created ELLIPSE markers are cleaned up when the curator removes them. - Debug log radius annotation — The
[AI Zeus Markers] Found %1 markerdiag_log entry now includes a trailing(radius: %1m)when marker geometry was read, so mission designers can confirm their ELLIPSE size is being respected.
Backward Compatibility
- Module-based missions (
AIZEUS_ModuleDefendArea) keep working — the module metadata path is untouched. - Plain icon-shape markers named
AIZEUS_DEFEND_AREA_*continue to fall through tonearestLocationsor the 200m default. - Zeus-runtime-placed ELLIPSE markers with
AIZEUS_DEFEND_AREA_*text labels now get geometric radius on the next 10s scan cycle.
Version 1.7.6
April 19, 2026Bug Fixes
inRangeOfArtillerysyntax error — Fixed runtime error "Type Object, expected Array" infn_executeCounterBattery.sqfandfn_requestArty.sqf. The Arma command requires[vehicle, magazine]on the left-hand side, not just the vehicle object. Before the fix, the check threw on every candidate gun, silently disabling counter-battery and artillery range selection.
Version 1.7.5
April 12, 2026Self-Preservation Systems
Four configurable self-preservation systems controlled by AIZEUS_preservation_enabled master toggle with 12 CBA settings.
Vehicle Preservation
- Damage withdrawal — Vehicles with damage > 50% withdraw 300m from contact (skips loaded transports)
- Crew bailout — Vehicles with damage > 80% have cargo dismounted first, then crew bails and joins nearest infantry group
- Immobilized defense — Vehicles that can't move switch to static defense (turret active, combat mode RED)
- Low fuel RTB — Vehicles with fuel < 20% return to rear area
Per-Group Casualty Retreat
- Individual groups fall back when losing 50%+ of original members, independent of global tactical state
- Clears waypoints and marker assignments, falls back 200m from nearest enemy
- 60-second cooldown before accepting new orders
- Tracks original group strength via
AIZEUS_origGroupStrength
Remnant Unit Regrouping
- Groups with 2 or fewer survivors merge into the nearest friendly group within 300m via
joinSilent - Prevents lone soldiers from continuing suicidal missions
- Skips garrisoned, transported, ambushing, counter-attacking, and player-led groups
- Receiving group capped at 12 members
Ambush Break-Contact
- Replaced fixed 30-second combat timer with a 3-second polling loop
- Breaks contact when own casualties reach 30% or enemy count doubles
- Pop smoke, bound back 100-200m opposite to approach direction, set AWARE
New Functions (3)
AIZEUS_fnc_vehiclePreservation— 4-tier vehicle damage/fuel/mobility preservationAIZEUS_fnc_groupCasualtyRetreat— Per-group fallback on heavy casualtiesAIZEUS_fnc_remnantRegroup— Merge remnant groups into nearest friendly
Bug Fixes
- Eden modules not appearing — Rewrote module config to use
CfgFactionClasses(side 7) instead ofCfgEditorCategories. Attributes now inherit from base classes (:Combo,:Edit,:CheckboxNumber) instead of the oldcontrol = "string"format. Triple-quoted defaultValues. - Unicode characters breaking config — Removed em-dashes and other non-ASCII from 23 source files that silently broke ArmA 3's config parser
- Module function type error — Module functions now handle string-type first argument from the engine's config compilation pass
- Missing module icon textures — Fixed icon paths to use
\A3\Modules_F\data\iconModule_ca.paa - CfgWaypoints Attributes error — Removed unsupported
Attributessub-classes from waypoint definitions
Version 1.7.4
March 29, 2026Eden Editor & Zeus Module System
AI Zeus now supports Eden Editor modules, Zeus curator modules, and custom waypoint types. Modules provide a visual drag-and-drop workflow for configuring AI Zeus — the standard UX for ArmA 3 mods. The existing marker directive system remains as a parallel option.
Eden modules require -mod=@AIZeus (not -serverMod) so clients can see module classes in the editor.
Eden Modules
- AI Zeus - Init Settings — Singleton configuration module. Sets controlled/enemy side, skill preset, and 12 subsystem toggles (CAS, artillery, reinforcements, escalation, medics, transport, garrison, patrol, suppression, vision limiter, night ops, debug). Place one per mission — AI Zeus auto-starts.
- AI Zeus - Attack — Place at position. Sync to groups for direct assignment, or leave unsynced for automatic range-based assignment. Priority attribute (1-99).
- AI Zeus - Defend — Place at position. Up to 3 groups assigned. Optional radius override. Supports counter-attack sorties.
- AI Zeus - Defend Object — Sync to an object (building, vehicle, crate). Adaptive defense: garrison+perimeter for buildings, close guard ring for vehicles/crates. Dynamic tracking if the object moves.
- AI Zeus - Defend Area — Distributes groups: ~40% garrison, ~30% perimeter (threat-oriented), ~30% patrol. Auto-detects town boundaries or uses a custom radius.
Zeus (Curator) Modules
- AI Zeus - Attack Position — Place during gameplay to create live attack directives
- AI Zeus - Defend Position — Place to create live defend directives with optional radius
- AI Zeus - Defend Object — Attach to an object for adaptive defense
- AI Zeus - Patrol Area — Assign patrol behavior to attached or nearby groups
Custom Waypoint Types
- AI Zeus: Patrol Area — Group patrols area around the waypoint with configurable radius
- AI Zeus: Garrison Buildings — Group garrisons nearby buildings, then continues to the next waypoint
- AI Zeus: Garrison & Hold — Garrison buildings permanently (PATH AI disabled)
Integration
- Module directives use a parallel array (
AIZEUS_moduleDirectives) merged with marker directives in the scan loop — same priority sorting, multi-group assignment, and counter-attack logic - Zeus modules include a
Deletedevent handler for automatic cleanup when the curator removes them - All module functions are HC-compatible (server-only execution,
groupOwnerchecks)
New Functions (15)
AIZEUS_fnc_moduleInit— Init/Settings moduleAIZEUS_fnc_moduleAttack— Attack directive moduleAIZEUS_fnc_moduleDefend— Defend directive moduleAIZEUS_fnc_moduleDefendObject— Defend Object directive moduleAIZEUS_fnc_moduleDefendArea— Defend Area directive moduleAIZEUS_fnc_moduleZeusAttack— Zeus Attack moduleAIZEUS_fnc_moduleZeusDefend— Zeus Defend moduleAIZEUS_fnc_moduleZeusDefendObject— Zeus Defend Object moduleAIZEUS_fnc_moduleZeusPatrol— Zeus Patrol moduleAIZEUS_fnc_moduleRegisterDirective— Central directive registrationAIZEUS_fnc_moduleCleanupDirective— Directive removal and group releaseAIZEUS_fnc_waypointPatrol— Patrol waypoint scriptAIZEUS_fnc_waypointGarrison— Garrison waypoint scriptAIZEUS_fnc_waypointGarrisonHold— Garrison & Hold waypoint script
Version 1.7.3
February 11, 2026Area Defense System
- Area Defense markers (
AIZEUS_DEFEND_AREA_*) — Defend entire towns/villages by distributing groups across three roles:- Garrison (~40%): First groups occupy buildings via garrison system
- Perimeter (~30%): Hold positions on area edge facing outward
- Patrol (~30%): Patrol within area bounds
- Area auto-detection — Uses
nearestLocationsto find town/village boundaries. Falls back to configurable default radius. - Fallback mechanism — When surviving groups drop below 40% of peak, remaining groups retreat to a linked
AIZEUS_DEFEND_*marker (e.g.,AIZEUS_DEFEND_AREA_Alphafalls back toAIZEUS_DEFEND_Alpha). - Threat-oriented perimeter — Based on US Army defensive doctrine (FM 3-90), perimeter groups concentrate in a 120-degree arc facing the nearest threat cluster, creating an engagement area with massed fires and mutual support. Falls back to even 360-degree distribution when no threats detected.
- Counter-attack integration — Only PATROL-role groups are eligible for counter-attack sorties; garrison and perimeter groups stay put.
Debug Logging Improvements
- AIZEUS_debug conditional logging — Added debug output to 15 functions that were previously silent:
- Tactical Orders:
fn_orderGroupAttack,fn_orderGroupDefend,fn_orderGroupFlank,fn_orderGroupSuppress - Suppression:
fn_suppressionReturnFire,fn_suppressionBoundBack - Awareness:
fn_clusterThreats,fn_detectCombatZones,fn_calculateForceRatio - Tactical:
fn_clearFriendliesFromZone - Doctrine:
fn_evaluateCombinedArms,fn_applyFriction,fn_checkOperationalReach,fn_assessLogistics,fn_getStrategicPosture
- Tactical Orders:
Bug Fixes
- AI seeing through smoke — Smoke detection logic in
fn_visionLimiter.sqfwas broken due to triangle inequality check failing when smoke was near target but AI was far away. Rewrote with 3 methods: smoke near target, smoke near AI, and smoke in line-of-sight using perpendicular distance. Added_smokeEffectRadius(20m) for realistic blocking. - Vehicles seeing through smoke — Vehicle crews could still see through smoke because only the crew member forgot targets, not the vehicle itself. Now calls
forgetTargeton vehicle object and all crew members. - Reinforcement waypoints fail with HC — Waypoints in
fn_spawnReinforcements.sqfwere added after HC transfer, causing a race condition. Moved waypoint creation before HC transfer. - CAS waypoints fail on HC-owned aircraft —
fn_executeCAS.sqfdidn't check group ownership for real aircraft. AddedgroupOwnercheck withremoteExecpath and newfn_addCASWaypointsHC.sqfhelper. - HC locality check wrong pattern — 8 files used
_owner == 0instead of_owner <= 2for server locality, missing listen server (owner 2). Fixed in:fn_orderGroupAttack,fn_orderGroupMove,fn_orderGroupDefend,fn_orderGroupFlank,fn_orderGroupSuppress,fn_deployATTeams,fn_protectInfantryFromArmor,fn_remoteCommand. - Missing setVariable broadcasts — visionLimiter — 5
setVariablecalls missing broadcast parameter forAIZEUS_visionLimiterActive,AIZEUS_vehTargetingDisabled,AIZEUS_targetingDisabled. HC-owned units had stale targeting state. - Missing setVariable broadcasts — suppression — 3
setVariablecalls missing broadcast infn_suppressionSkillDegradation.sqfforAIZEUS_currentlyDegradedandAIZEUS_lastSuppressionTime. - Missing setVariable broadcasts — patrol — 8
setVariablecalls missing broadcast infn_patrolSystem.sqfforAIZEUS_patrollingandAIZEUS_patrolType. Groups were stuck or re-assigned on HC. - Blacklist check missing in HC load balancing —
fn_balanceHCLoad.sqfincludedAIZEUS_blacklistedunits in group selection. - Invalid mission event handler types —
addMissionEventHandler ["Fired"]and["Explosion"]caused "Unknown enum value" errors on startup. Replaced with per-unit event handlers.
Transport System — NoEscape Pattern Improvements
- State machine boarding — Replaced
waitUntilloops infn_boardVehicle.sqfwith explicit state machine: INIT → VEHICLE_APPROACH → BEGIN_MOUNT → MOUNTING → COMPLETE/FAILED with individual timeout tracking. - allowGetIn control — Added
AIZEUS_allowGetIngroup variable, setfalseinitially andtrueonly when mounting begins to prevent premature boarding. - NoEscape dismount pattern — Replaced
leaveVehiclewithunassignVehicle+orderGetIn falsesequence infn_transportToPosition.sqffor reliable dismount. - Waypoint completion flags — Added
setWaypointStatementsto set flag when waypoint reached, replacing distance-only checks. Fallback to distance for HC compatibility. - Enemy detection during transit — Ground transport uses
findNearestEnemyon driver during transit, enemies revealed to all cargo. - Graduated approach speed — Ground transport slows: FULL → NORMAL at 100m → LIMITED at 30m.
- Config-based capacity check —
fn_findTransportVehicle.sqfusestransportSoldierconfig value with fallback toemptyPositionsthen minimum 4. - Mount/dismount helpers — Added
_fnc_isMounted(80% threshold) and_fnc_isUnMountedfunctions for reliable verification. Dismount waits for confirmation (30s timeout) instead of fixed sleep.
Version 1.7.0
January 16, 2026New Systems
- Building Assault with Heavy Weapons — AI uses heavy weapons against buildings with confirmed enemies:
- Armor within 400m engages fortified positions with main guns
- AT infantry within 300m fires rockets at occupied buildings
- AT teams prioritize armor threats over buildings
- Infantry clearing follows after assault completes
- Configurable via
AIZEUS_buildingAssault_enabledandAIZEUS_buildingAssault_cooldown
Performance Optimizations
- O(n²) loop elimination — Replaced
forEach allUnitswithnearEntitiesspatial query in contact reports - Hashmap command validation — O(1) command lookup instead of switch cases in remote commands
- Hashmap threat clustering — Replaced array
inoperator (O(n)) with hashmap (O(1)) - Consolidated iterations — Merged 3 separate loops into single pass in HC monitor
- Event-driven smoke tracking — Replaced 1-second polling with
Firedmission event - Bounded array limits — Added 500-entry cap on
pendingContacts,intelDatabase,incomingImpacts
Bug Fixes (30+)
- Vehicle doMove errors — Changed from
[_vehicle, "doMove"]to[driver _vehicle, "doMove"](9 occurrences) - Garrisoned units stuck — PATH AI was never re-enabled after garrison; added
fn_releaseGarrisonedUnits.sqf - AI not hearing gunfire — Sleep was at top of loop; new enemies in first 30s had no Fired handler
- Artillery rounds ignored — Round count parameter passed but unused; now properly applied
- Transport fails on HC — Waypoint clearing didn't check HC ownership
- setVariable broadcast missing — Variables not synced to HC-owned units (20+ instances fixed)
- Null dereference crashes — Fixed in CAS execution, resupply, suppression response
- applySkill type error — Function expected array but received single unit
- Skill preset variable mismatch — Vision limiter used wrong variable name
- Medic healing double effect — Removed duplicate healing application
- Dead groups leak — Destroyed squads not removed from escalation tracking
New Helper Functions
fn_clearGroupWaypoints.sqf— Centralized waypoint deletion with HC supportfn_getSafeKnownEnemies.sqf— Safe wrapper with nil/type validationfn_releaseGarrisonedUnits.sqf— Re-enables PATH AI when leaving DEFENSIVEfn_assaultBuilding.sqf— Heavy weapons building assault coordination
Version 1.6.9
January 2026Bug Fixes
- Vehicle support crash — Fixed crash with empty enemy array (added validation checks)
- Cascading undefined param error — Fixed in remoteCommand function
Version 1.6.8
January 2026New Features
- Terrain-aware smoke grenades — OPEN/HILLS terrain uses smoke; FOREST/URBAN skips smoke (already has concealment)
Bug Fixes
- Debug markers not showing (Part 1) — Debug loop wasn't spawning if debug started as false; extracted to separate function with guard variable
- Debug markers not showing (Part 2) — Marker functions only existed on server; moved to XEH_postInit so clients can use them
- Removed ineffective admin detection check
Version 1.6.7
January 2026Bug Fixes
- Skill preset admin commands — Fixed variable name mismatch
- remoteExec syntax error — Fixed for orderGetIn command
- Missing function registration — Added addEnemyAudioHandlers to config
- HC ownership edge case — Fixed in artillery system
- remoteExec inline code block error — Fixed in static weapon manning
New Helper Functions
AIZEUS_fnc_assignGunnerHC— Helper function for HC-compatible gunner assignment
Version 1.6.6
December 26, 2025New Systems
- Transport System — AI commander can order units into APCs, trucks, and helicopters for tactical repositioning
- Paradrop Support — Helicopters can paradrop troops over target positions with automatic parachute deployment
Commander Logic Integration
- Doctrine Layer — Strategic posture now overrides tactical state when appropriate
- Logistics Assessment — Commander checks ammo levels before committing to major operations
- Operational Reach — Prevents overextension by checking distance limits
- Terrain Analysis — Defensive perimeters adapt to available cover
- Movement Prediction — Artillery now leads moving targets based on velocity
- Intel Quality — Stale intel triggers cautious approach (STEALTH behavior)
- Fog of War — System properly initialized at startup
Fixes
- CAS helicopters now orbit with MOVE waypoints instead of hovering (LOITER issue)
- Aircraft type detection for appropriate post-attack behavior (fixed-wing vs rotary)
Documentation
- Blacklist Variable — Added Mission Makers guide section for
AIZEUS_blacklistedvariable to exclude specific units/vehicles from AI Zeus management
Version 1.6.5
December 22, 2025New Systems
- Marker Directives System — Mission makers can place map markers to direct AI Zeus:
- Attack Markers: Name markers
AIZEUS_ATTACK_*to assign nearby groups to attack that position - Defend Markers: Name markers
AIZEUS_DEFEND_*to assign groups to hold positions - Priority System: Add priority number (1-99) like
AIZEUS_ATTACK_1_hillsidefor order of execution - Groups automatically released when markers are deleted
- Attack Markers: Name markers
- Environment-Aware Tactics — AI automatically detects terrain and adapts behavior:
- FOREST: FILE formation, LIMITED speed, shorter engagement ranges
- URBAN: COLUMN formation, quick reactions, building-aware movement
- OPEN: WEDGE formation, spread out, long range engagement
- HILLS: STAG COLUMN formation, seeks high ground advantage
- Detection based on trees, buildings, and elevation variance
- Results cached for performance (100m grid, 60 second cache)
- Counter-Battery Fire — AI detects and responds to enemy artillery:
- Monitors incoming explosions for artillery patterns
- Clusters 3+ impacts within 150m in 30 seconds = detected barrage
- Calculates estimated artillery origin position
- Returns fire on detected artillery positions
- Adds artillery contacts to intel database
Improvements
- Debug visualization now shows environment type markers for each group
- Startup banner displays environment and counter-battery status
- Improved group tracking for marker-assigned units
Version 1.6.3
December 18, 2025New Systems
- Vision Limiter — AI can't see through grass/smoke, difficulty-scaled
- Escalation System — Proportional response ladder (4 levels), prevents overreaction
- Drone Reconnaissance — UAV scouting before committing ground troops
- Hearing System — Weapon-based detection ranges, terrain occlusion, explosion deafness
Bug Fixes
- Fixed
_lastUpdateundefined error in contact reports - Fixed
targetsQuerytype check error in vision limiter - Fixed
AIZEUS_skillPresetundefined error in vision limiter
Improvements
- Drone integrated into escalation response (levels 1-2)
- Fire support requires escalation level 4 AND 6+ clustered enemies
- Comprehensive nil/type checks added to Headless Client system
- HC detection now validates owner IDs before transfer
- HC monitor properly handles disconnection and reconnection
- HC load balancer validates all objects before processing
Version 1.6
December 18, 2025New Systems
- Vision Limiter System — Prevents AI from seeing through grass and smoke, creating realistic concealment:
- Grass Concealment: AI detection reduced when targets are prone or crouched in grass
- Distance-based reduction: 90% at 150m+, 60% at 75m+, 30% at 30m+
- Stationary bonus: 50% harder to spot if not moving
- Grass surface types provide additional 40% reduction
- Smoke Concealment: AI properly blinded by smoke grenades
- Multiple smoke grenades stack for better concealment
- Distance to smoke affects effectiveness (90% at 15m, 60% at 30m, 30% at 50m)
- AI gets suppressed when trying to see through smoke
- Difficulty-Based Vision Settings — Vision limiter scales with difficulty:
- EASY: Longer update intervals, larger smoke radius, AI sees less through grass
- MEDIUM: Balanced settings (default)
- HARD: Faster updates, smaller smoke radius, AI sees better
- VETERAN: Most responsive, smallest smoke radius
Improvements
- Optimized package size (compiled PBO only, 237KB vs 587KB)
- Included server key (.bisign) for signature verification
- Performance optimizations - only processes targets within 1000m
- Dead units automatically removed from vision processing
Version 1.5.6.6
December 16, 2025New Systems
- Escalation System — Proportional response to contacts that escalates gradually based on threat persistence and casualties:
- Level 1: Drone recon (if available) + nearest squad investigates cautiously
- Level 2: QRF (Quick Reaction Force) dispatched with flanking approach
- Level 3: Reinforcement squad spawned + reserve squads committed
- Level 4: Fire support authorized (artillery/CAS) + all forces committed
- Dynamic Escalation Triggers — System escalates based on:
- Contact persistence (enemy still present after time threshold)
- Enemy count thresholds (3+ contacts, 5+ contacts, 8+ contacts)
- Friendly casualties during engagement
- Loss of responding squads
- De-escalation — AI returns to normal posture after 2 minutes of no contact, freeing committed squads.
- Drone-Infantry Coordination — At Level 1, if drone recon is deployed, the investigating squad holds briefly while drone scouts ahead before advancing.
Improvements
- Better squad commitment tracking prevents over-committing forces
- QRF selection prioritizes squads at ideal distance (200-500m)
- Fire support now requires minimum 3 contacts to authorize
- Escalation cooldown prevents rapid level jumping (45 seconds between levels)
Version 1.5.6.5
December 16, 2025New Systems
- Audio Detection / Hearing System — AI can now detect enemies by sound. Gunshots generate audio contacts that are added to the intel database:
- Realistic range based on weapon caliber (pistols 350m, rifles 700-900m, launchers 1500m, vehicle weapons 2000m+)
- Suppressor detection with 80% range reduction
- Environmental modifiers (rain, wind, forest, indoor, night)
- Terrain and building occlusion affects both range and accuracy
- Vehicle engine noise masks incoming sounds
- Urban echo causes direction errors in cities
- Quality degrades with distance (precise → general direction → vague → just heard shots)
- Explosion Deafness — Nearby explosions temporarily deafen AI units, preventing them from hearing gunshots for several seconds. Creates tactical opportunities.
- Drone Reconnaissance — AI operators with UAV backpacks and terminals can deploy reconnaissance drones:
- Automatic deployment based on tactical need (stale contacts, defensive posture, no intel, pre-assault)
- Autonomous flight to target area at configurable altitude
- Circling observation pattern with enemy detection
- High-quality visual intel reported to database
- Return-to-base behavior after observation complete
- Configurable max active drones and cooldown
Improvements
- Intel database now supports multiple contact types (VISUAL, SOUND, DRONE)
- Better integration between fog of war systems
- Improved contact report quality tracking
Version 1.5.5
December 14, 2025New Systems
- Suppression Skill Degradation — AI accuracy dynamically decreases when under suppressive fire. Units recover accuracy over time when no longer suppressed. Creates more realistic firefights where suppression actually works.
- Vehicle Support System — Complete vehicle coordination framework:
- Armor provides overwatch at 300-500m, seeks hull-down positions
- APCs/IFVs dismount infantry at safe distance, provide fire support
- Technicals use hit-and-run tactics with frequent repositioning
- Convoy Operations — Multi-vehicle movement with lead scout, 50m spacing, rear security, and automatic ambush reaction drills.
- Enhanced Patrol System — Four patrol types when no enemies detected:
- AREA — Random movement within zone
- PERIMETER — Circles around center position
- RANDOM — Unpredictable movement pattern
- SECTOR — Methodical grid-based search
- Ambush Behavior — AI sets L-shaped ambushes with coordinated trigger. Units hold fire until optimal moment, then spring trap simultaneously.
- Night Operations — Specialized behavior in darkness including flare deployment, tighter formations, slower movement, and reduced detection ranges.
- Leapfrog Retreat — Organized bounding withdrawal under fire. One element provides cover while another falls back, then alternates.
- Resupply System — AI tracks ammunition levels, shares ammo between squad members, and spawns resupply crates when critically low.
Improvements
- CQB Building Clearing — Room-by-room tactics with proper grenade usage, stack-and-clear procedures, and corner checking.
- Suppression Response — Enhanced reaction to incoming fire including smoke deployment, bounding back to cover, and calling fire support.
- Fire Support Priority — Artillery and CAS now prioritize real in-mission assets before falling back to virtual spawning.
Version 1.5.0
December 13, 2025New Systems
- Building Garrison — AI occupies buildings during defensive posture, positioning units at windows and doors for optimal fields of fire.
- Static Weapon Emplacements — AI identifies and mans HMGs, GMGs, mortars, and AT positions within their area.
- Medic System — Wounded AI call for help, nearby medics respond with proper healing animations. Medics prioritize casualties and manage multiple wounded.
- Tactical Grenades — Context-aware grenade usage:
- Smoke for cover when advancing, retreating, or suppressed
- Frag grenades against enemies in cover or buildings
- 30-second cooldown and inventory checking
Improvements
- Improved suppression detection and response
- Better coordination between garrison and patrol behaviors
- Enhanced debug visualization for garrison positions
Version 1.3.0
November 2025New Systems
- Headless Client Support — Automatic detection and load balancing across multiple headless clients. Units transferred seamlessly for better server performance.
- AI Skill Presets — Configurable skill levels (EASY, MEDIUM, HARD, EXTREME) with randomized values within ranges. Accuracy capped at 0.5 for fair gameplay.
- Admin Debug Visualization — Map markers showing AI Zeus's knowledge state, combat zones, and tactical decisions. Only visible to server admins.
Improvements
- Performance optimizations for large unit counts
- Better handling of unit death and group reorganization
- Improved logging for troubleshooting
Version 1.2.0
October 2025New Systems
- Fog of War Intelligence — AI only knows what units can actually see. No more omniscient AI awareness.
- Contact Reports — Information gathered through line-of-sight, rated as CONFIRMED, PROBABLE, or POSSIBLE. Intel degrades over time.
- Military Doctrine — Clausewitz friction implemented (15% chance orders fail or delay). Combined arms coordination principles.
- CBA Settings Integration — Full settings menu when CBA_A3 is loaded. Configure all options in-game.
Improvements
- Tactical decision engine now considers intel quality
- Better force ratio calculations
- Improved terrain analysis for positioning
Version 1.1.0
September 2025New Systems
- Close Air Support — AI commander calls in CAS strikes on high-value or concentrated targets. Side-appropriate aircraft with proper attack runs.
- Artillery Support — Coordinated artillery barrages on groups of 5+ enemies. 120-second cooldown, realistic dispersion.
- Reinforcement Spawning — When casualties exceed 30%, infantry reinforcements spawn and move to reinforce the main force.
- Coordinated Assault — Multi-group attacks with suppression element, left flank, right flank, and smoke cover.
Improvements
- Better group coordination during attacks
- Improved retreat behavior
- More responsive tactical state changes
Version 1.0.0
August 2025Initial Release
- Situational Awareness — Continuous battlefield monitoring tracking friendly positions, health, ammo, and combat status.
- Tactical State Machine — Dynamic switching between OFFENSIVE, DEFENSIVE, BALANCED, and RETREAT states based on force ratios.
- Group Movement Orders — Coordinated group commands: Move, Attack, Defend, Flank, Suppress.
- Threat Clustering — Groups nearby enemies for targeting decisions and force concentration.
- Combat Zone Detection — Identifies areas where fighting is occurring for tactical decisions.