Skip to content

Configuration ​

All configuration for sd-bombs lives in the configs/ directory:

  • configs/config.lua -- Config root (debug)
  • configs/shared/admin.lua -- Admin panel, permissions, placement tool
  • configs/shared/bomb.lua -- Bomb defaults, the clock, the explosion, staff commands
  • configs/shared/items.lua -- Items, planting, the bomb builder and workbenches
  • configs/shared/walls.lua -- Wall styles, toughness, and paint colours
  • configs/shared/breaking.lua -- What breaches a wall, hole shapes, auto-repair, effects
  • configs/shared/placement.lua -- Wall persistence, wall commands, wall-kit items
  • configs/shared/props.lua -- Prop models and where each piece sits on the casing

The full default files are on the Full Config Files pages in the sidebar. The sections below cover the settings you are most likely to change.

General ​

lua
local config = {
    Debug = false,       -- dev logging ([sd-bombs:*] lines); leave off in production
    DebugPrints = false, -- very verbose framework/inventory bridge prints
    -- ...
}
SettingDefaultDescription
DebugfalsePrints debug lines to the server and client console
DebugPrintsfalsePrints every framework and inventory bridge call - only for tracking down an integration problem

Admin Panel ​

configs/shared/admin.lua

lua
return {
    Command = 'bombadmin',
    Group = 'group.admin',
    ViewGroup = false,
    EditAce = 'sd_bombs.edit',
    PlaceReach = 25.0,
    Placement = {
        SnapMove = 0.25,
        SnapTurn = 15.0,
        Nudge = 0.05,
        TurnStep = 5.0,
    },
    RefreshMs = 2500,
}
SettingDefaultDescription
Command'bombadmin'Opens the panel. The ACE it grants is command.bombadmin
Group'group.admin'ACE principal with full access
ViewGroupfalseAn ACE principal (e.g. 'group.mod') that can open the panel and look, but not change anything
EditAce'sd_bombs.edit'The ACE every change needs - granted to Group automatically
PlaceReach25.0Metres ahead of the camera a new placement starts
Placement.SnapMove / SnapTurn0.25 / 15.0Metres and degrees per step while snapping is on
Placement.Nudge0.05Metres per frame the arrow keys move a placement (Shift x5)
Placement.TurnStep5.0Degrees per mouse-wheel notch (Shift: 15, Ctrl: 1)
RefreshMs2500How often the open panel refreshes (bomb clocks, breaches by players)

Bombs ​

configs/shared/bomb.lua

lua
Defaults = {
    Modules = 5,
    Seconds = 300,
    Strikes = 3,
    Needy = false,
    Yield = 3,
},
MinSeconds = 30,
Persist = true,
Explosion = {
    Enabled = true,
    Type = 2,
    Damage = 1.0,
    Shake = 1.0,
    ByYield = { 0.5, 0.75, 1.0, 1.3, 1.6, 2.0 },
},
DefusedLinger = 60,
SettingDefaultDescription
Defaults.Modules5Modules on a bomb that is not hand-built (1-11)
Defaults.Seconds300Seconds on the clock when it is planted
Defaults.Strikes3Strikes allowed (1-5); the last strike is the explosion
Defaults.NeedyfalseAlso deal 1-2 needy modules
Defaults.Yield3Blocks of explosive a bomb that is not hand-built carries
MinSeconds30The least time a Defuser ever gets when they open a bomb
PersisttrueArmed bombs survive a restart, their clocks still running
Explosion.Enabledtruefalse = the prop just vanishes when it goes off
Explosion.Type2Explosion type of the blast
Explosion.ByYieldDamage and shake multiplier for each yield (1-6 blocks)
DefusedLinger60Seconds a defused bomb stays in the world
LiveTimerThe clock drawn live on the casing, and its ticking

Staff commands

Commands renames or turns off (false) every staff command: /bomb_plant, /bomb_clear, /bomb_detonate, /bomb_give_set. Set ManualCommand to a name (e.g. 'bomb_manual') to also open the field manual with a command.

Items ​

configs/shared/items.lua

lua
Bomb = 'sd_bomb',
BombImages = { small = 'sd_bomb_small', medium = 'sd_bomb_medium', large = 'sd_bomb_large' },
Manual = 'sd_bomb_manual',
SettingDescription
BombThe bomb item. Using it: aim at a floor, wall, or ceiling and arm it there
BombImagesThe image a bomb of each compact size shows (item metadata). false = every bomb shows sd_bomb
ManualThe field manual item - never consumed
PlantHow planting works: Aim (false = set down in front of you, no aiming), Reach, which Surfaces are allowed, the carry and planting animations

Renaming an item here renames what the resource looks for - update your inventory to match. On ox_inventory the export is named after the item (sd_bomb → sd-bombs.useSd_bomb).

Bomb Builder ​

configs/shared/items.lua > Builder

lua
Builder = {
    Kit = 'sd_bomb_kit',
    MaxModules = 11,
    Charge = { Item = 'sd_explosive', Min = 1, Max = 6 },
    Steps = { Cut = true, Crimp = true, Bolts = true, Wire = true, Route = true, Test = true, Strap = true, Prep = true, Sign = true, Edge = true, Pin = false },
    GiveCommand = 'bomb_toolkit',
    Strikes = 3,
    Timer = { Min = 60, Max = 900, Step = 30, Default = 300 },
    -- ...
}
SettingDefaultDescription
Kit'sd_bomb_kit'The Extra Large casing kit
MaxModules11Bays a build may fill (the twelfth is the timer)
Charge.Item'sd_explosive'One item = one block = one point of yield
Charge.Min / Max1 / 6Blocks a bomb needs at least / holds at most
SuppliesThe handbook, screws, wire, brackets, and straps - an item each. Set one to false to not ask for it
GiveCommand'bomb_toolkit'Staff command that hands out what a build takes. false = none
Strikes3What the work order starts on - the builder picks 1-5
TimerSeconds the builder may put on the clock

Steps ​

Every part of the build beyond packing and screwing can be switched off. A step that is off is never asked for, and its tool is never needed.

StepWhat it asks for
CutSlitting the carton's tape with the knife
CrimpA detonator cap crimped into every packed block, its lead clamped under a terminal of the firing unit
BoltsThe front's four corner bolts are hex bolts - the hex key, not the driver
WireEvery fitted module wired in with the strippers
Route...by hand: each lead run along the gutters to the timer's hub. false = one click wires it
TestProving the circuit with the multimeter
StrapEvery block strapped down with the band tensioner
PrepEvery length of wire cut to length and stripped before it goes on
SignQC signs the work order off before the bomb is assembled
EdgeThe builder fits the edgework by hand. false = the lot deals it
PinAn arming pin in the firing unit - signed off with it still in, the bomb is a dud

Workbench ​

Builder.Bench

SettingDefaultDescription
Model'sd_bomb_bench'The bench prop
WorldtrueBuild in the world, on the bench. false = a 3D builder page instead (any bench prop)
RequiredtrueA kit can only be opened at a bench (while the server has any bench at all)
Reach3.0Metres from a bench it can be used from
Locations{}Fixed benches for your map: { vec4(x, y, z, heading), ... } - z is the ground
Command'bomb_bench'Staff command to stand a bench (and remove one)
ItemThe workbench item - see The Workbench Item
LightThe bench lamp: colour, reach, brightness
RadioThe shelf radio's stations and knobs
CameraWhere the bench camera sits, and how it follows your work

Walls ​

configs/shared/walls.lua

lua
return {
    Height = 3.0,
    MaxLength = 40.0,
    Styles = {
        drywall = { label = 'Stud wall (plasterboard)', toughness = 1, fx = 'plaster', debris = 10, stock = '#B0A8A6', colors = { ... } },
        brick_red = { label = 'Red brick wall', toughness = 2, fx = 'masonry', debris = 16 },
        -- ...
    },
    Colors = {
        white = { label = 'White', hex = '#CCCAC4' },
        -- ...
    },
}
SettingDescription
MaxLengthThe longest single run, in metres
Styles.<key>The style key (e.g. brick_red) - the name every wall export and /wall_place use
Styles.<key>.labelThe display name
Styles.<key>.toughness1-4: what an explosion's power has to reach to breach it
Styles.<key>.fxBreach particles: 'plaster', 'wood', 'metal', or 'masonry'
Styles.<key>.debrisHow many chunks fly
Styles.<key>.colorsThe paint colours it was built in

WARNING

The styles and colours are models: a colour only exists if it was built into the streamed files. Renaming or adding a key here is not enough - change labels and toughness freely, but leave the keys as they are.

See the Walls Reference for every style and colour.

Breaking ​

configs/shared/breaking.lua

SettingDefaultDescription
Explosions.EnabledtrueGame explosions breach walls. false = only bombs and the exports do
Explosions.PowerPower for each explosion type - 0 never breaches
Explosions.DefaultPower1Any type not listed
Explosions.Reach{ Base = 2.0, PerPower = 0.9 }Metres a blast reaches: Base + PerPower x Power
Explosions.IgnoreInvisiblefalseIgnore explosions flagged invisible (some scripts use them for damage only)
Bomb.EnabledtrueA planted bomb going off breaches walls
Bomb.Contact0.75A bomb breaches only a wall it is set against - within this many metres. false = every wall within its radius
Bomb.YieldPower, radius, and hole shape for each yield (1-6 blocks)
HolePosition'blast''blast' = the hole opens where the explosion was; 'centre' = always the middle of the run
Holes.BySurplusWhich hole shapes a blast leaves, by how much power it has to spare
Holes.WidentrueA blast into a hole that is already there makes it bigger
RepairAfter900Seconds before a breached wall rebuilds itself. 0 = it stays breached
EffectsDebris, particles, and camera shake

See Toughness and Hole Shapes.

Placement & Wall Kits ​

configs/shared/placement.lua

lua
return {
    Persist = true,
    Commands = {
        Restricted = 'group.admin',
        Place = 'wall_place',
        Remove = 'wall_remove',
        Break = 'wall_break',
        Repair = 'wall_repair',
        Clear = 'wall_clear',
        Styles = 'wall_styles',
        Reach = 6.0,
    },
    Items = {
        wallkit_drywall = 'drywall',
        wallkit_brick_red = 'brick_red',
        -- ...
    },
}
SettingDefaultDescription
PersisttrueWalls placed in-game are saved to data/walls.json
Commands.Restricted'group.admin'Who may use the wall commands
Commands.*Rename a command, or false to not register it
Commands.Reach6.0Metres the "nearest wall" commands look around you
ItemsWall-kit item name → the style key it places, e.g. wallkit_brick_red = 'brick_red'. Remove an entry to drop that kit