Skip to content

Full Config Reference

The complete default configs/config.lua for Dead Drop. Use this as a reference or starting point for your own configuration.

TIP

This is the full unedited config file. For a detailed explanation of each option, see the Configuration page.

Download config.lua

lua
-- Aggregate config root, loaded by both sides via `require 'configs.config'`.
-- Scope-by-folder: configs/shared/ is read by client + server, configs/client/ is client-only,
-- and configs/server/ holds the sensitive data - excluded from fxmanifest files{}, so it never
-- ships to a client. The server-only files are deep-merged below on the server ONLY.
local config = {
    Locale = 'en', -- lib.locale loads locales/<Locale>.json, falling back to en per-key
    Debug = true, -- dev logging + target zone outlines; leave off in production

    -- Bridge diagnostics (bridge/shared/debug.lua): very verbose per-call prints from the
    -- framework/inventory/target bridge. Separate from Debug above so gameplay debugging
    -- doesn't drown in bridge traffic. DebugCategories filters by tag when set, e.g.
    -- { ['bridge:inventory'] = true } prints only that category.
    DebugPrints = false,
    -- DebugCategories = { ['bridge:inventory'] = true },

    -- Shared (client + server)
    World = require 'configs.shared.world', -- drop visuals, blips, plane, descent (zones/corridors are server-only)
    Event = require 'configs.shared.event', -- schedule, container scaling, breach timings
    Containers = require 'configs.shared.containers', -- interior loot-prop layouts + carry (the loot->item map is server-only)
    Contact = require 'configs.shared.contact', -- contact NPC display + on/off switches (economy + heat pricing is server-only)
    Pressure = require 'configs.shared.pressure', -- police alert + rival crew
    Trigger = require 'configs.shared.trigger', -- radio-tower masts + scan tuning (the tower POOL is server-only)

    -- Client-only
    Scenes = require 'configs.client.scenes', -- synced-scene anims, tool props, target options
    Minigame = require 'configs.client.minigame', -- per-minigame difficulty knobs (terminal daemons)
    Terminal = require 'configs.client.terminal', -- terminal display (boot ASCII-art banner)
}

-- Server-only (sensitive): drop coords, the loot->item map, the reward ladder, the fence/snitch/
-- notify economy, and the contact spawn locations. Merged in server-side only.
if IsDuplicityVersion() then
    local function merge(dst, src)
        for k, v in pairs(src) do
            if type(v) == 'table' and type(dst[k]) == 'table' then merge(dst[k], v) else dst[k] = v end
        end
    end
    merge(config.World, require 'configs.server.world')
    merge(config.Containers, require 'configs.server.containers')
    merge(config.Contact, require 'configs.server.contact')
    merge(config.Trigger, require 'configs.server.trigger')
    merge(config.Pressure, require 'configs.server.pressure')

    config.Loot = require 'configs.server.loot' -- usable carry items, grid sizes, reward pools: sensitive, no client half
    config.Heat = require 'configs.server.heat' -- starting heat for fresh loot (the discount curve is config.Contact.Heat, folded in above)
    config.Logs = require 'configs.server.logs' -- audit logging toggles, server-side only
end

return config