Skip to content

Configuration Reference

cjcarw edited this page Jul 17, 2026 · 6 revisions

⚙️ Configuration Reference

Every setting in a preset file (presets/<name>.json).

Important

Booleans use 1 / 0 in this config (not true / false). 1 = on, 0 = off.

Each preset file has this top-level shape:

{
    "Difficulty": "normal",
    "Settings": {
        "Event": { ... },
        "Health": { ... },
        "Movement": { ... },
        "Turret": { ... },
        "Grenade": { ... },
        "Combat": { ... },
        "Faction": { ... },
        "Markers": { ... },
        "Notifications": { ... },
        "Effects": { ... },
        "SmokeScreen": { ... },
        "Loot": { ... },
        "Defenders": { ... }
    },
    "PatrolRoutes": [ ... ]
}
Top-level field Description
Difficulty Base template: easy, normal, hard, or boss. See Difficulty Templates. Your Settings values override it.
Settings All the BTR's behavior (documented below).
PatrolRoutes One or more named routes with waypoints. See Patrol Routes.

Tip

Want a complete, filled-in file to copy? See Example Preset. Ammo and item class names? See Ammunition and Class Names.

🔗 Jump to a section

⚙️ Event ❤️ Health 🚜 Movement
🎯 Turret 💣 Grenade ⚔️ Combat
🏴 Faction 🗺️ Markers 🔔 Notifications
✨ Effects 💨 Smoke Screen 📦 Loot
🛡️ Defenders 🧭 PatrolRoutes

⚙️ Event

"Event": {
    "BTRClassName": "BS_BTR_Patrol",
    "WreckClassName": "BS_BTR_Wreck",
    "MinPlayersToSpawn": 1,
    "SpawnCheckInterval": 60.0,
    "RespawnDelay": 900.0,
    "PatrolDuration": 3600.0,
    "WreckLifetime": 900.0
}
Field Default Description
BTRClassName BS_BTR_Patrol Which BTR skin spawns. Must be a valid class — see BTR Skins.
WreckClassName BS_BTR_Wreck Wreck class spawned on death. Leave as-is unless you have a custom wreck.
MinPlayersToSpawn 1 Per-preset minimum players (the global file also has one).
SpawnCheckInterval 60.0 Per-preset spawn check interval (seconds).
RespawnDelay 900.0 Per-preset respawn delay (seconds).
PatrolDuration 3600.0 Max event lifetime (seconds). After this the BTR despawns even if never killed.
WreckLifetime 900.0 How long the wreck (and its crates) lasts before despawning (seconds).
💡 Example — Autumn-camo BTR that despawns after 30 min, wreck lasts 10
"Event": {
    "BTRClassName": "BS_BTR_Patrol_Camo2",
    "PatrolDuration": 1800.0,
    "WreckLifetime": 600.0
}

The BTRClassName must be one of the exact strings from BTR Skins (e.g. BS_BTR_Patrol_Urban). A typo here = nothing spawns.


❤️ Health & Armor

"Health": {
    "MaxHealth": 5000.0,
    "ArmorMultiplier": 1.0,
    "BulletDamageMultiplier": 0.0,
    "ExplosionRadius": 15.0,
    "DeathExplosionAmmo": "Explosion_40mm_Ammo"
}
Field Default Description
MaxHealth 5000.0 Total HP of the BTR.
ArmorMultiplier 0.3* Global damage-taken multiplier. 1.0 = full damage, 0.3 = takes 30%, 0.0 = invulnerable. The single armor knob.
BulletDamageMultiplier 0.0 Bullet (FIRE_ARM) damage multiplier. 0.0 = immune to bullets (explosives/grenades only), 1.0 = bullets do full damage.
ExplosionRadius 15.0 Radius (m) of the explosion when it dies.
DeathExplosionAmmo Explosion_40mm_Ammo Ammo class used for the death explosion. See Ammunition and Class Names.

* The shipped example presets override ArmorMultiplier to 1.0. See Difficulty Templates.

Note

Want every weapon to damage it? Set BulletDamageMultiplier to 1.0 and keep ArmorMultiplier at 1.0 (default 0.0 makes it immune to bullets).

💡 Examples — squishy vs. explosives-only

Squishy tank any rifle can take down:

"Health": {
    "MaxHealth": 2500.0,
    "ArmorMultiplier": 1.0,
    "BulletDamageMultiplier": 1.0
}

Explosives-only armored beast:

"Health": {
    "MaxHealth": 12000.0,
    "ArmorMultiplier": 1.0,
    "BulletDamageMultiplier": 0.0
}

More setups in Recipes.


🚜 Movement

"Movement": {
    "PatrolSpeed": 8.0,
    "CombatSpeed": 5.0,
    "MaxSpeed": 12.0,
    "Acceleration": 3.0,
    "Deceleration": 5.0,
    "TerrainSampleDistance": 15.0,
    "MaxSlopeAngle": 35.0,
    "EnableObstacleAvoidance": 0,
    "ObstacleCheckDistance": 20.0,
    "WaypointReachDistance": 20.0,
    "PlowThroughVegetation": 1,
    "CrushEntities": 1,
    "CrushMinSpeed": 2.0
}
Field Default Description
PatrolSpeed 8.0 Speed while patrolling (m/s).
CombatSpeed 5.0 Speed in combat (m/s).
MaxSpeed 12.0 Absolute speed cap (m/s).
Acceleration 3.0 Acceleration (m/s²).
Deceleration 5.0 Braking (m/s²).
TerrainSampleDistance 15.0 How far ahead it samples terrain height (m).
MaxSlopeAngle 35.0 Max traversable slope (degrees).
EnableObstacleAvoidance 0 0 = drives straight at waypoints (best performance; keep routes clear). 1 = tries to steer around obstacles.
ObstacleCheckDistance 20.0 Obstacle detection distance (m), only used if avoidance is on.
WaypointReachDistance 20.0 How close (m) counts as reaching a waypoint.
PlowThroughVegetation 1 Drives through bushes and trees without slowing or steering.
CrushEntities 1 Roadkill — kills players/infected/animals driven over at speed.
CrushMinSpeed 2.0 Minimum speed (m/s) for roadkill to be lethal.
💡 Example — slow, menacing patrol that flattens everything
"Movement": {
    "PatrolSpeed": 5.0,
    "PlowThroughVegetation": 1,
    "CrushEntities": 1,
    "CrushMinSpeed": 1.5
}

🎯 Turret

"Turret": {
    "YawSpeed": 60.0,
    "PitchSpeed": 40.0,
    "MaxYaw": 180.0,
    "MaxPitch": 90.0,
    "MinPitch": -10.0,
    "FireCooldown": 0.3,
    "Accuracy": 0.5,
    "MissAngle": 3.0,
    "MaxRange": 400.0,
    "CoaxAccuracy": 0.35,
    "CoaxMissAngle": 4.0,
    "CoaxMaxRange": 250.0,
    "AmmoClass": "Bullet_762x39",
    "DamageMultiplier": 1.5,
    "BurstSize": 8,
    "ReloadTime": 3.0,
    "StopToShoot": 1,
    "CoaxOnly": 0,
    "ExplosiveCannon": 1,
    "CannonExplosionAmmo": "Explosion_40mm_Ammo",
    "FellTreesRadius": 6.0
}
Field Default Description
YawSpeed 60.0 Turret rotation speed (deg/s).
PitchSpeed 40.0 Turret elevation speed (deg/s).
MaxYaw 180.0 Rotation range (± degrees).
MaxPitch 90.0 Max elevation (degrees).
MinPitch -10.0 Min depression (degrees).
FireCooldown 0.3 Time between cannon shots (s). Lower = faster fire.
Accuracy 0.25* Cannon hit probability (0.0–1.0).
MissAngle 3.0 Cannon spread of a missed shot (degrees).
MaxRange 300.0* Cannon max range (m). Also sets the overall engagement/suppression range.
CoaxAccuracy 0.35 Coaxial MG hit probability (0.0–1.0), independent of the cannon.
CoaxMissAngle 4.0 Coaxial MG spread of a missed shot (degrees).
CoaxMaxRange 250.0 Coaxial MG max range (m).
AmmoClass Bullet_762x39 Ammo class for direct-hit damage. See Ammunition and Class Names.
DamageMultiplier 1.5 Damage multiplier vs. players.
BurstSize 8 Shots per burst (reference).
ReloadTime 3.0 Pause between bursts (s).
StopToShoot 1 Brake the BTR when it has line of sight to fire.
CoaxOnly 0 1 = the BTR only ever fires the coaxial machine gun — the cannon never fires. For a lighter, less lethal patrol. Note: this does not disable the grenade (see Grenade.Enabled).
ExplosiveCannon 1 1 = cannon explodes on impact (splash damage, blast FX/sound, fells nearby trees). 0 = direct-hit only — no splash, no explosion visual/sound, no tree felling (impacts show a bullet ricochet instead).
CannonExplosionAmmo Explosion_40mm_Ammo Explosion on environment impact — only when ExplosiveCannon is 1.
FellTreesRadius 6.0 Radius (m) a cannon impact fells vegetation. 0 = off. Only applies when ExplosiveCannon is 1.

* The shipped presets override Accuracy and MaxRange per difficulty (e.g. normal = 0.50 / 400m).

Warning

Setting CannonExplosionAmmo to a bullet class does not stop the explosion — only ExplosiveCannon: 0 does.

💡 Examples — precise non-explosive vs. hard-hitting explosive

Precise, fast-firing 7.62 cannon, NO explosion (pure direct hits):

"Turret": {
    "AmmoClass": "Bullet_762x39",
    "Accuracy": 0.65,
    "FireCooldown": 0.2,
    "MaxRange": 450.0,
    "ExplosiveCannon": 0
}

Hard-hitting explosive 40mm cannon (default style, more punch):

"Turret": {
    "ExplosiveCannon": 1,
    "CannonExplosionAmmo": "Explosion_40mm_Ammo",
    "DamageMultiplier": 2.0,
    "Accuracy": 0.5
}

Deadly-accurate cannon, but a sloppy short-range coaxial:

"Turret": {
    "Accuracy": 0.8,
    "MaxRange": 500.0,
    "CoaxAccuracy": 0.2,
    "CoaxMaxRange": 150.0
}

The cannon and coaxial now have fully independent accuracy and range.


💣 Grenade

Indirect-fire lob. Off by default — turn it on only if you want it.

"Grenade": {
    "Enabled": 0,
    "Cooldown": 4.0,
    "Range": 150.0,
    "MinRange": 30.0,
    "Speed": 700,
    "ExplosionAmmo": "Explosion_40mm_Ammo",
    "FellTreesRadius": 6.0
}
Field Default Description
Enabled 0 Master switch for the grenade system. 0 = off, 1 = on.
Cooldown 4.0 Cooldown between grenades (s).
Range 150.0 Max range (m).
MinRange 30.0 Min range, to avoid self-damage (m).
Speed 700 Grenade projectile speed.
ExplosionAmmo Explosion_40mm_Ammo Explosion ammo for the grenade. See Ammunition and Class Names.
FellTreesRadius 6.0 Radius (m) the grenade fells vegetation. 0 = off.

Note

The grenade and the cannon are separate weapons. If you're getting explosions with Grenade.Enabled: 0, those are the cannon (ExplosiveCannon / CannonExplosionAmmo), not the grenade.

💡 Example — enable lobbed grenades to flush out campers
"Grenade": {
    "Enabled": 1,
    "Cooldown": 6.0,
    "Range": 180.0,
    "MinRange": 40.0,
    "ExplosionAmmo": "Explosion_40mm_Ammo"
}

⚔️ Combat

"Combat": {
    "DetectionRadius": 250.0,
    "EngageRadius": 200.0,
    "DisengageRadius": 350.0,
    "LostSightTimeout": 15.0,
    "OrbitRadius": 80.0,
    "OrbitSpeed": 4.0,
    "AggroWhilePatrolling": 1,
    "PatrolAggroRange": 150.0,
    "PatrolScanInterval": 1.0,
    "EnableSuppression": 1,
    "SuppressionSpread": 6.0,
    "SuppressionDuration": 4.0,
    "ChasePlayers": 0,
    "CloseRangeAutoLOS": 0.0,
    "IgnoreGodmodePlayers": 1,
    "SnapDistance": 4.0
}
Field Default Description
DetectionRadius 250.0 Player detection radius (m).
EngageRadius 200.0 Radius to enter combat (m).
DisengageRadius 350.0 Radius at which it loses the target (m).
LostSightTimeout 15.0 Seconds without seeing the target before disengaging.
OrbitRadius 80.0 Combat orbit radius (m).
OrbitSpeed 4.0 Speed while orbiting (m/s).
AggroWhilePatrolling 1 1 = proactively attack players/bots seen while patrolling. 0 = passive until shot (still defends itself). Note: enemy BTRs are always detected regardless of this setting — see Faction System.
PatrolAggroRange 150.0 Aggro range while patrolling (m).
PatrolScanInterval 1.0 Scan frequency while patrolling (s).
EnableSuppression 1 Fire near a player even without clean line of sight.
SuppressionSpread 6.0 Spread of suppression fire (degrees).
SuppressionDuration 4.0 Seconds it suppresses after losing LOS (then stays alert until LostSightTimeout).
ChasePlayers 0 1 = drives after the player. 0 = holds position and fires from where it is.
CloseRangeAutoLOS 0.0 0 = off. If >0: within that distance (m) it "sees" you through cover (will fire through walls at close range).
IgnoreGodmodePlayers 1 1 = ignores players in godmode/invincibility (admins in invisibility usually have godmode).
SnapDistance 4.0 Bullet snap — if a shot passes within this distance (m) of a player, a bullet fly-by/crack sound plays right next to them (that "under fire" feel). 0 = off.
💡 Examples — passive patrol vs. relentless hunter

Passive — only fights back when attacked:

"Combat": {
    "AggroWhilePatrolling": 0,
    "ChasePlayers": 0
}

Aggressive hunter that chases and never lets go:

"Combat": {
    "AggroWhilePatrolling": 1,
    "ChasePlayers": 1,
    "DetectionRadius": 300.0,
    "LostSightTimeout": 30.0
}

🏴 Faction

Controls who this BTR treats as an enemy — players, Expansion eAI bots, and other BTRs. This is what powers BTR-vs-BTR warfare. Full guide with examples: Faction System.

"Faction": {
    "Name": "Hostile",
    "AttackPlayers": 1,
    "AttackOtherBTRs": 1,
    "Enemies": ["ALL"],
    "Allies": []
}
Field Default Description
Name Hostile This BTR's own faction (free text). Give two presets different names to make their BTRs fight each other. For eAI, use the Expansion faction name (e.g. East).
AttackPlayers 1 1 = plain players (no eAI faction) are enemies. 0 = ignores factionless players.
AttackOtherBTRs 1 1 = attacks enemy-faction BTRs. 0 = never fights other BTRs (still attacks enemy players/bots).
Enemies ["ALL"] Factions this BTR attacks. Empty [] or ["ALL"] = every faction that isn't its own or an ally. Or list specific names, e.g. ["East","Bandits"].
Allies [] Factions it never attacks — applies to both bots and BTRs of that faction (its own name is always allied).

Important

Two BTRs only fight if their Name values differ. Two presets both named Hostile are the same faction and ignore each other. Also confirm AttackOtherBTRs reads 1 after the config self-heals a new field (it can land as 0 — see How the Config Works).

💡 Examples — BTR-vs-BTR, and allied convoys

Two warring factions (put in two different presets):

// preset A
"Faction": {
    "Name": "East",
    "Enemies": ["ALL"],
    "Allies": []
}
// preset B
"Faction": {
    "Name": "West",
    "Enemies": ["ALL"],
    "Allies": []
}

Different factions that do NOT fight each other (allied convoy), but still hunt players:

"Faction": {
    "Name": "East",
    "AttackPlayers": 1,
    "Allies": ["West"]
}

Attacks enemy bots but never other BTRs:

"Faction": {
    "Name": "East",
    "AttackOtherBTRs": 0,
    "Enemies": ["ALL"]
}

🗺️ Markers

"Markers": {
    "EnableMapMarker": 1,
    "Enable3DMarker": 1,
    "Enable2DMarker": 1,
    "ShowHealthOnMarker": 1,
    "Name": "Hostile BTR-82A",
    "IconName": "BTR BS",
    "IconPath": "BTR_82A/icon/iconbtr.paa",
    "KeepMarkerOnWreck": 0,
    "MarkerColor": "255,255,50,0",
    "WreckMarkerColor": "255,140,140,140"
}
Field Default Description
EnableMapMarker 1 Master switch for the map marker.
Enable3DMarker 1 3D world marker (needs Expansion-Navigation).
Enable2DMarker 1 2D map marker (needs Expansion-Navigation).
ShowHealthOnMarker 1 1 = append the BTR's remaining health % to the marker label, e.g. Hostile BTR-82A [67%], so players can see how worn-down it is. 0 = name only.
Name Hostile BTR-82A Marker label shown on the map.
IconName BTR BS Expansion icon name (registered in the mod).
IconPath BTR_82A/icon/iconbtr.paa .paa path for LBmaster-style maps.
KeepMarkerOnWreck 0 1 = the marker stays on the map over the wreck until it despawns, so players can find the remains. 0 = marker is removed when the BTR is destroyed.
MarkerColor "255,255,50,0" Patrolling marker color. Accepts three formats — see below. Default red.
WreckMarkerColor "255,140,140,140" Wreck marker color, same formats. Default grey. Only used when KeepMarkerOnWreck is 1.

Color formats — all three are accepted, use whichever you like:

Format Example Notes
Hex "#FF3232" or "#FF3232CC" Web-style. Copy straight from any color picker. Without alpha = fully opaque.
RGBA "rgba(255,50,50,1.0)" Standard web order. Alpha as 0.0–1.0 (CSS style) or 0–255.
Legacy "255,255,50,50" "alpha,red,green,blue", each 0–255. Kept for backward compatibility with existing configs.

ShowHealthOnMarker in action — the label updates live as the BTR takes damage:

Fresh spawn After taking hits
Marker at full health Marker at 83% health
💡 Examples — rename & recolor the marker

Rename per preset (e.g. for a boss):

"Markers": {
    "Name": "⚠ BTR-82A BOSS — Airfield"
}

Purple patrol marker + green wreck marker that stays on the map (hex format):

"Markers": {
    "MarkerColor": "#A000FF",
    "KeepMarkerOnWreck": 1,
    "WreckMarkerColor": "#00C800"
}

Same thing in rgba:

"Markers": {
    "MarkerColor": "rgba(160,0,255,1.0)",
    "KeepMarkerOnWreck": 1,
    "WreckMarkerColor": "rgba(0,200,0,1.0)"
}

All three color formats (hex / rgba / legacy ARGB) work in both fields.


🔔 Notifications

Requires @CF. Uses localization keys (#STR_...); you can replace them with plain text.

"Notifications": {
    "Enable": 1,
    "Title": "#STR_BS_BTR_notif_title",
    "SpawnMsg": "#STR_BS_BTR_spawn",
    "DestroyedMsg": "#STR_BS_BTR_destroyed",
    "DespawnMsg": "#STR_BS_BTR_despawn",
    "Icon": "BTR_82A/icon/iconbtr.paa",
    "EnablePlayerKilled": 1,
    "ShowVictimName": 1,
    "PlayerKilledMsg": "#STR_BS_BTR_player_killed",
    "PlayerKilledNoNameMsg": "#STR_BS_BTR_player_killed_anon",
    "ShowKillerName": 1,
    "DestroyedByMsg": "#STR_BS_BTR_destroyed_by"
}
Field Default Description
Enable 1 Master switch for notifications.
Title #STR_BS_BTR_notif_title Notification title.
SpawnMsg #STR_BS_BTR_spawn Message when a patrol spawns.
DestroyedMsg #STR_BS_BTR_destroyed Message when the BTR is destroyed.
DespawnMsg #STR_BS_BTR_despawn Message when it despawns (timed out).
Icon BTR_82A/icon/iconbtr.paa Notification icon path.
EnablePlayerKilled 1 Announce when the BTR kills a player.
ShowVictimName 1 1 = show the victim's name, 0 = anonymous.
PlayerKilledMsg #STR_BS_BTR_player_killed Killed message (%1 = victim).
PlayerKilledNoNameMsg #STR_BS_BTR_player_killed_anon Anonymous killed message.
ShowKillerName 1 1 = show who destroyed the BTR.
DestroyedByMsg #STR_BS_BTR_destroyed_by Destroyed-by message (%1 = killer).
💡 Example — plain custom text instead of localization keys
"Notifications": {
    "Enable": 1,
    "Title": "ARMORED PATROL",
    "SpawnMsg": "A hostile BTR-82A has been deployed!",
    "DestroyedMsg": "The BTR-82A has been destroyed.",
    "ShowVictimName": 1
}

✨ Effects

"Effects": {
    "EnableWheelDust": 1
}
Field Default Description
EnableWheelDust 1 Wheel dust trail while moving. 0 = off (slightly cheaper).

💨 Smoke Screen

A defensive smoke screen the BTR deploys around itself when it takes heavy damage — a cloud that envelops the hull to break line of sight and buy time. Full guide: Smoke Screen.

"SmokeScreen": {
    "Enabled": 1,
    "TriggerAtHealth": 0.65,
    "RepeatEvery": 0.20,
    "MaxDeployments": 3,
    "Cooldown": 12.0,
    "Duration": 16.0,
    "EmitterCount": 5,
    "HunkerDown": 1,
    "AccuracyWhileSmoked": 0.35
}
Field Default Description
Enabled 1 Master switch for the defensive smoke screen.
TriggerAtHealth 0.65 Deploys the first screen when health drops below this fraction (0.65 = 65%).
RepeatEvery 0.20 Deploys another every time health drops a further X (0.20 → 65%, 45%, 25%…). 0 = deploy only once.
MaxDeployments 3 Total number of smoke screens available (limited "smoke grenades").
Cooldown 12.0 Minimum seconds between deployments.
Duration 16.0 How long each smoke cloud lasts (s).
EmitterCount 5 Emitters spread along the hull. Higher = denser cloud but more FPS cost. 5 is a good balance.
HunkerDown 1 1 = while smoked it brakes and fires blind at reduced accuracy (it can't see through its own smoke either).
AccuracyWhileSmoked 0.35 Accuracy multiplier while inside the smoke (only used when HunkerDown is 1).
💡 Examples — one panic screen vs. disabled

A single smoke screen at 50% health, then never again:

"SmokeScreen": {
    "Enabled": 1,
    "TriggerAtHealth": 0.5,
    "RepeatEvery": 0,
    "MaxDeployments": 1
}

Turn the smoke screen off entirely:

"SmokeScreen": {
    "Enabled": 0
}

📦 Loot

Two modes: crate loot (burning crates you loot after the wreck cools) or flat death loot. Toggle with UseCrateLoot.

"Loot": {
    "UseCrateLoot": 1,
    "CrateBurningTimeMin": 20,
    "CrateBurningTimeMax": 40,
    "CrateSpawnRadiusMin": 5.0,
    "CrateSpawnRadiusMax": 8.0,
    "CratesMin": 1,
    "CratesMax": 2,
    "CrateClasses": [ "BS_Tank_Box1", "BS_Tank_Box2_Black" ],
    "LootCategories": { ... },
    "LootCrates": [ ... ],
    "DeathLoot": [ ... ]
}
Field Default Description
UseCrateLoot 1 1 = spawn burning loot crates. 0 = use the flat DeathLoot list instead.
CrateBurningTimeMin / Max 20 / 40 Crate burning duration range (s). Can't be opened while burning.
CrateSpawnRadiusMin / Max 5.0 / 8.0 Distance from the wreck where crates drop (m).
CratesMin / Max 1 / 2 Number of crates spawned (random between the two).
CrateClasses[] BS_Tank_Box1, BS_Tank_Box2_Black Pool of crate models; one picked at random per crate. Empty = use the ClassName from each LootCrates entry. See Loot Crates.
LootCategories{} (see below) Named loot pools with min/max counts and per-item spawn chances.
LootCrates[] (see below) Which categories each crate fills.
DeathLoot[] (see below) Flat loot list, only used when UseCrateLoot is 0.
📂 LootCategories — named loot pools (click to expand)

Each category has Min/Max (how many items to roll) and an Items list. All class names must be valid item classes — see Ammunition and Class Names.

"LootCategories": {
    "Weapons": {
        "Min": 1,
        "Max": 2,
        "Items": [
            {
                "LootClass": "AKM",
                "LootAttachments": ["Mag_AKM_30Rnd", "AK_WoodBttstck", "AK_WoodHndgrd"],
                "SpawnChance": 1.0
            },
            {
                "LootClass": "SVD",
                "LootAttachments": ["Mag_SVD_10Rnd", "PSO1Optic"],
                "SpawnChance": 0.4
            }
        ]
    },
    "Ammo": {
        "Min": 2,
        "Max": 4,
        "Items": [
            {
                "LootClass": "Ammo_762x39",
                "LootAttachments": [],
                "SpawnChance": 1.0
            },
            {
                "LootClass": "Mag_AKM_Drum75Rnd",
                "LootAttachments": [],
                "SpawnChance": 0.5
            }
        ]
    }
}
Item field Description
LootClass Item class name (e.g. AKM, Ammo_762x39, PlateCarrierVest).
LootAttachments Attachments created on the item (mags, optics, parts). Empty [] for none.
SpawnChance 0.0–1.0 chance this item is picked when rolled. 1.0 = always.
📂 LootCrates — which categories each crate fills
"LootCrates": [
    {
        "ClassName": "BS_Tank_Box1",
        "LBPresetName": "",
        "Presets": ["Weapons", "Ammo"]
    },
    {
        "ClassName": "BS_Tank_Box2_Black",
        "LBPresetName": "",
        "Presets": ["Medical", "Gear"]
    }
]
Field Description
ClassName Crate model (ignored if the CrateClasses pool is non-empty). See Loot Crates.
LBPresetName LBmaster loot preset name. Empty "" = use the internal Presets.
Presets Which LootCategories this crate fills.
📂 DeathLoot — flat list (only if UseCrateLoot: 0)
"DeathLoot": [
    {
        "ClassName": "AKM",
        "Quantity": 1,
        "SpawnChance": 0.8
    },
    {
        "ClassName": "Mag_AKM_30Rnd",
        "Quantity": 3,
        "SpawnChance": 1.0
    },
    {
        "ClassName": "Ammo_762x39",
        "Quantity": 2,
        "SpawnChance": 0.9
    },
    {
        "ClassName": "PlateCarrierVest",
        "Quantity": 1,
        "SpawnChance": 0.5
    }
]
Field Description
ClassName Item class name.
Quantity How many to spawn.
SpawnChance 0.0–1.0 chance it spawns.

🛡️ Defenders

AI that guards the wreck after the BTR dies. Supports both vanilla infected and Expansion-AI bots.

"Defenders": {
    "EnableDefenders": 1,
    "DespawnRadius": 800.0,
    "DespawnCheckInterval": 60.0,
    "Defenders": [
        {
            "ClassName": "ZmbM_SoldierNormal",
            "Count": 5,
            "AdditionalNight": 2,
            "SpawnRadius": 25.0,
            "IsExpansionBot": 0,
            "ExpansionFaction": "",
            "ExpansionLoadout": "",
            "ExpansionUnlimitedAmmo": 0,
            "ExpansionCanBeLooted": 1,
            "DamageMultiplier": 1.0,
            "DamageReceivedMultiplier": 1.0
        }
    ]
}
Field Default Description
EnableDefenders 1 Master switch for wreck defenders.
DespawnRadius 800.0 If no player is within this radius (m), defenders despawn.
DespawnCheckInterval 60.0 How often the despawn check runs (s).

Each Defenders entry:

Field Default Description
ClassName — Class to spawn (vanilla infected, or eAI bot). See Ammunition and Class Names.
Count — Base count.
AdditionalNight — Extra spawns at night.
SpawnRadius 25.0 Spawn radius around the wreck (m).
IsExpansionBot 0 1 = spawn as a DayZ-Expansion-AI bot.
ExpansionFaction "" eAI faction (e.g. West, East).
ExpansionLoadout "" Expansion loadout XML name.
ExpansionUnlimitedAmmo 0 1 = infinite reloads for the bot.
ExpansionCanBeLooted 1 1 = the bot's body can be looted.
DamageMultiplier 1.0 Damage this defender deals (2.0 = double, 0.5 = half). Works for both bots and infected.
DamageReceivedMultiplier 1.0 Damage this defender receives (0.5 = twice as tanky, 2.0 = fragile). Works for both bots and infected.

Note

Per-defender difficulty. These two multipliers let a boss preset field genuinely harder guards than an easy one. Notes: a value of 0 (or missing, e.g. after config self-heal — see How the Config Works) is treated as 1.0; for a nearly harmless / nearly immune defender use 0.1, not 0. DamageReceivedMultiplier can't save a defender from a single hit that exceeds its total HP (e.g. a point-blank headshot).

💡 Examples — vanilla infected vs. Expansion-AI bots

Vanilla infected defenders (no extra mods needed):

"Defenders": {
    "EnableDefenders": 1,
    "Defenders": [
        {
            "ClassName": "ZmbM_SoldierNormal",
            "Count": 6,
            "AdditionalNight": 3,
            "SpawnRadius": 25.0,
            "IsExpansionBot": 0
        },
        {
            "ClassName": "ZmbM_PatrolNormal",
            "Count": 3,
            "AdditionalNight": 1,
            "SpawnRadius": 20.0,
            "IsExpansionBot": 0
        }
    ]
}

Expansion-AI armed bots (requires DayZ-Expansion-AI):

"Defenders": {
    "EnableDefenders": 1,
    "Defenders": [
        {
            "ClassName": "eAI_SurvivorF_Gabi",
            "Count": 4,
            "AdditionalNight": 2,
            "SpawnRadius": 30.0,
            "IsExpansionBot": 1,
            "ExpansionFaction": "East",
            "ExpansionLoadout": "SoldierLoadout.json",
            "ExpansionUnlimitedAmmo": 0,
            "ExpansionCanBeLooted": 1,
            "DamageMultiplier": 1.5,
            "DamageReceivedMultiplier": 0.5
        }
    ]
}

🧭 PatrolRoutes

See Patrol Routes.

Clone this wiki locally