Skip to content

MetaDen Restorations Configuration

lua
Config = {
    -- Radius for restoration streaming zones (client creates sphere zones per wreck).
    ZoneRadius = 20,
    -- Enables extra debug visuals/logging in supported client-side systems.
    Debug = true,
    -- Optional reputation gain when adding materials.
    ReputationAwards = {
        Enabled = true,
        Chance = 30,
        Amount = 1,
        System = 'skills',
        Categories = {
            'education_engineering',
            'scrapping',
        },
    },
    -- Default work duration for timed restoration actions (milliseconds).
    WorkDuration = 60000,
    -- Progress weighting between material groups.
    -- Raw materials are treated as bulk resources and contribute less to total completion.
    ProgressWeights = {
        RawMaterials = 0.20,
        Parts = 0.80,
    },
    -- Pre-completion: randomly pre-fill a percentage of the required material/part slots
    -- when a new wreck is created, giving the player a head start.
    --
    --   Enabled       – set to false to disable pre-completion entirely.
    --   MinPercent    – minimum percentage of required slots that will be pre-filled (0–100).
    --   MaxPercent    – maximum percentage of required slots that will be pre-filled (0–100).
    --
    -- A random percentage is picked between Min and Max and applied to the slot count for
    -- that wreck type.  Each chosen slot is filled with a random amount between 1 and its
    -- required count (partial fill). The selection always guarantees at least one raw-material
    -- slot AND at least one part slot when enough slots are being pre-filled and both
    -- categories exist for the wreck type.
    --
    -- TraderWreck values should be higher than WorldWreck values so bought wrecks feel more
    -- complete from the start.
    PreCompletion = {
        Enabled = true,
        -- Wrecks discovered and started in the open world (beginRestoration).
        WorldWreck = {
            MinPercent = 0,
            MaxPercent = 5,
        },
        -- Wrecks purchased from the trader (buyWreck).
        TraderWreck = {
            MinPercent = 10,
            MaxPercent = 30,
        },
    },
    -- Global cap for active restorations per player.
    MaxWrecksPerPlayer = 1,
    -- Per-role override for MaxWrecksPerPlayer (role name keys are normalized to lowercase).
    -- Example: mechanic = 3
    MaxWrecksByRole = {
        -- mechanic = 3,
    },
    -- Admin command for adding one-time model entries consumed by future restorations.
    AdminModelCommand = {
        Name = 'restoration_addmodel',
        AcePermission = 'metaden.restoration.admin',
    },
    -- Command to open the admin NUI panel.
    AdminUiCommand = {
        Name = 'restoration_admin',
        AcePermission = 'metaden.restoration.admin',
    },
    -- Maps the currency labels stored in the DB to how payment is actually processed.
    --   value  = the real money-type or item name your framework uses
    --   item   = true  → deduct via ox_inventory item removal
    --            false → deduct via framework money account (GetMoney/RemoveMoney)
    -- Example for QBX + ox_inventory where wallet cash is the 'money' item:
    --   cash = { value = 'money', item = true }
    --   bank = { value = 'bank',  item = false }
    CurrencyMap = {
        cash = { value = 'money', item = true  },
        bank = { value = 'bank',  item = false },
    },
    -- Deletes stale restorations on resource start when > 0 (age measured from updatedAt).
    -- Set to 0 to disable expiration cleanup.
    ExpirationDays = 0,
    -- Bike Models
    BikeModels = {
        'zombieb',
        'nemesis',
        'hexer',
        'avarus',
        'enduro',
        'wolfsbane',
        'akuma',
        'carbonrs',
        'chimera',
    },
    -- Car Models
    CarModels = {
        'banshee2',
        'nero2',
        'furia',
        'stafford',
        'superd',
        'f620',
        'blade',
        'chino2',
        'buccaneer2',
        'eudora',
        'hermes',
        'gauntlet3',
        'impaler2',
        'btype',
        'mamba',
        'coquette'


    },
    PickupModels = {
        'rebel',
        'yosemite3',
        'driftyosemite',
        'slamvan3',
        'picador',
        'bison',
        'bobcatxl'

    },
    VanModels = {
        'boxville',
        'burrito3',
        'journey2',
        'gburrito2',
        'speedo5',
        'youga2'

    },
    -- Tow truck models that can hook/winch wrecks. Need to 
    -- have a bed so the wreck can be attached to it.
    TowTruckModels = {
        `flatbed`,
        `slamtruck`,
    },
    -- Engine hoist prop model used when moving wrecks via hoist.
    EngineHoistModel = `prop_engine_hoist`,
    -- Hoist placement when carried by the player.
    HoistCarryPlacement = {
        pos = vector3(0.0, 0.5, 1.2),
        rot = vector3(0.0, -215.0, -100.0),
    },
    -- Wreck placement when attached to the hoist.
    HoistWreckPlacement = {
        -- pos = vector3(0.0, 1.35, -0.65),
        -- rot = vector3(0.0, 0.0, 0.0),
        pos = vector3(0.0, -2.35, 0.15),
        rot = vector3(0.0, 0.0, 0.0),
    },
    -- Wreck placement when released from the hoist (world offset from hoist entity).
    HoistReleasePlacement = {
        pos = vector3(0.0, 2.4, -0.35),
        rot = vector3(0.0, 0.0, 0.0),
    },
    -- Prevent ped/wreck physics shove immediately after release.
    HoistReleaseNoCollisionMs = 650,
    -- Target interaction distances for hoist/flatbed actions.
    HoistTargetDistance = 2.5,
    FlatbedReleaseDistance = 3.0,
    -- Wreck/prop models used for interaction targets.
    WreckedVehicles = {
        `prop_rub_carwreck_2`,
        `prop_rub_carwreck_5`,
        `prop_rub_carwreck_7`,
        `prop_rub_carwreck_8`,
        `prop_rub_carwreck_11`,
        `prop_rub_carwreck_12`,
        `prop_rub_carwreck_13`,
        `prop_rub_carwreck_14`,
        `prop_rub_carwreck_15`,
        `prop_rub_carwreck_16`,
        `prop_rub_carwreck_17`,
    },
    WreckedBikes = {
        `prop_rub_bike_03`,
    },
    ScrapDoors = {
        `prop_car_door_01`,
        `prop_car_door_04`,
        `prop_rub_carpart_02`,
        `prop_rub_carpart_03`,
        `prop_car_door_03`,
    },
    ScrapExhaust = {
        `prop_rub_carpart_04`,
    },
    ScrapHoist = {
        `prop_engine_hoist`,
    },
    ScrapSeats = {
        `prop_rub_carpart_05`,
    },
    ScrapTires = {
        `prop_rub_tyre_02`,
        `prop_rub_tyre_03`,
        `v_ind_cm_tyre02`,
        `prop_rub_tyre_01`,
    },
    -- Target interaction labels, icons, and enabled flags.
    -- Set enabled = false to completely skip registering that target.
    Targets = {
        ScrapDoor           = { enabled = true, label = 'Search Door',          icon = 'fa-solid fa-search'        },
        ScrapExhaust        = { enabled = true, label = 'Search Exhaust',       icon = 'fa-solid fa-search'        },
        ScrapHoist          = { enabled = true, label = 'Take Engine Hoist',    icon = 'fa-solid fa-search'        },
        ScrapSeat           = { enabled = true, label = 'Search Seat',          icon = 'fa-solid fa-search'        },
        ScrapTire           = { enabled = true, label = 'Search Tire',          icon = 'fa-solid fa-search'        },
        SearchWreck         = { enabled = true, label = 'Search Wreck',         icon = 'fa-solid fa-search'        },
        HookWreck           = { enabled = true, label = 'Hook Wreck',           icon = 'fa-solid fa-chain'         },
        HookEngineHoist     = { enabled = true, label = 'Hook Engine Hoist',    icon = 'fa-solid fa-chain'         },
        ReleaseHoistWreck   = { enabled = true, label = 'Release Wreck',        icon = 'fa-solid fa-chain-broken'  },
        WinchWreck          = { enabled = true, label = 'Winch Wreck',          icon = 'fa-solid fa-car-crash'     },
        ReleaseFlatbedWreck = { enabled = true, label = 'Release Wreck',        icon = 'fa-solid fa-chain-broken'  },
        BeginRestoration    = { enabled = true, label = 'Begin Restoration',    icon = 'fa-solid fa-chain'         },
        RestorePart         = { enabled = true, label = 'Restore Part',         icon = 'fa-solid fa-tools'         },
    },
    -- Base material state template used when a new restoration starts.
    -- Keep keys in sync with each vehicle type table below (Bike/Car/Pickup/Van).
    Materials = {
        glass = 0,
        plastic = 0,
        rubber = 0,
        aluminum = 0,
        steel = 0,
        metal = 0,
        carbon = 0,
        -- Parts
        seats = 0,
        engine = 0,
        sparkPlugs = 0,
        battery = 0,
        axle = 0,
        tires = 0,
        oil = 0,
        turbo = 0,
        transmission = 0,
        brakes = 0,
        suspension = 0,
        oilPump = 0,
        driveShaft = 0,
        cylinderHead = 0,
        batteryCables = 0,
        fuelTank = 0,
        hood = 0,
        roof = 0,
        bumper = 0,
        exhaust = 0,
        horn = 0,
        rims = 0,
        cardoor = 0,
    },
    -- Maps logical material keys to inventory item names.
    -- Used both for consuming materials and displaying progress labels.
    MaterialToItemMap = {
        seats = 'seat',
        sparkPlugs = 'sparkplugs',
        axle = 'axleparts',
        tires = 'tire',
        oil = 'oil',
        transmission = 'transmission',
        brakes = 'brakes',
        suspension = 'suspension',
        oilPump = 'oil_pump',
        driveShaft = 'drive_shaft',
        cylinderHead = 'cylinder_head',
        batteryCables = 'battery_cables',
        fuelTank = 'fuel_tank',
        metal = 'metalscrap',
        battery = 'battery',
    },
    -- Optional reverse-map overrides when itemName->material resolution is ambiguous.
    ItemToMaterialOverrides = {},
    -- Items treated as raw materials (no Condition metadata required for consumption).
    RawMaterials = {
        metalscrap = true,
        aluminum = true,
        steel = true,
        glass = true,
        plastic = true,
        rubber = true,
        fiber = true,
        wires = true,
        copper = true,
        carbon = true,
        oil = true,
        sparkplugs = true,
        battery = true,
    },
    -- Model swap rules when specific material milestones complete.
    -- `model = '__current__'` means "do not swap model at this milestone".
    -- For those types, progression updates state/progress only until a later milestone swaps the prop.
    StageTransitions = {
        Car = {
            cardoor = { stage = 'doors', model = `prop_rub_carwreck_11` },
            glass = { stage = 'glass', model = `prop_rub_carwreck_14` },
            tires = { stage = 'last', model = `imp_prop_covered_vehicle_03a` },
        },
        Pickup = {
            cardoor = { stage = 'doors', model = '__current__' },
            glass = { stage = 'glass', model = '__current__' },
            tires = { stage = 'last', model = `imp_prop_covered_vehicle_04a` },
        },
        Van = {
            cardoor = { stage = 'doors', model = '__current__' },
            glass = { stage = 'glass', model = '__current__' },
            tires = { stage = 'last', model = `imp_prop_covered_vehicle_07a` },
        },
        Bike = {
            cardoor = { stage = 'doors', model = '__current__' },
            glass = { stage = 'glass', model = `ratbike` },
            tires = { stage = 'last', model = `prop_box_wood04a` },
        },
    },
    -- Optional UI label overrides for material names.
    MaterialLabelOverrides = {
        cardoor = 'Car Door',
        metal = 'Metal Scrap',
    },
    -- Restoration menu sections by wreck type.
    -- Resolution order in client menu builder:
    -- 1) MaterialMenuSectionsByType[wreckType]
    -- 2) MaterialMenuSectionsByType.Default
    -- 3) Auto-generated fallback section
    -- Keep per-type tables empty to inherit `Default`.
    MaterialMenuSectionsByType = {
        Default = {
            {
                id = 'raw_materials',
                title = 'Raw Materials',
                icon = 'fa-solid fa-box-open',
                definitions = {
                    { material = 'glass', workType = 'body', checkInventory = true, dependencies = { 'cardoor' } },
                    { material = 'plastic', workType = 'body', checkInventory = true },
                    { material = 'rubber', workType = 'body', checkInventory = true },
                    { material = 'aluminum', workType = 'body', checkInventory = true },
                    { material = 'steel', workType = 'body', checkInventory = true, inventoryItem = 'steel' },
                    { material = 'metal', workType = 'body', checkInventory = true },
                    { material = 'carbon', workType = 'body', checkInventory = true },
                },
            },
            {
                id = 'section_hood',
                title = 'Work Under the Hood',
                icon = 'fa-solid fa-tools',
                definitions = {
                    { material = 'engine', workType = 'engine' },
                    { material = 'cylinderHead', workType = 'engine', dependencies = { 'engine' } },
                    { material = 'oilPump', workType = 'engine', dependencies = { 'engine' } },
                    { material = 'transmission', workType = 'engine', dependencies = { 'engine' } },
                    { material = 'sparkPlugs', workType = 'engine', dependencies = { 'engine' } },
                    { material = 'turbo', workType = 'engine', dependencies = { 'engine' } },
                    { material = 'battery', workType = 'engine', dependencies = { 'engine' } },
                    { material = 'oil', workType = 'engine', dependencies = { 'oilPump' } },
                },
            },
            {
                id = 'section_undercarriage',
                title = 'Work on the Undercarriage',
                icon = 'fa-solid fa-car',
                definitions = {
                    { material = 'axle', workType = 'under', checkInventory = true },
                    { material = 'tires', workType = 'under', checkInventory = true, dependencies = { 'rims' } },
                    { material = 'suspension', workType = 'under', checkInventory = true, dependencies = { 'axle' } },
                    { material = 'driveShaft', workType = 'under', checkInventory = true, dependencies = { 'suspension', 'transmission' } },
                    { material = 'exhaust', workType = 'under', checkInventory = true },
                    { material = 'fuelTank', workType = 'under', checkInventory = true },
                    { material = 'brakes', workType = 'under', checkInventory = true, dependencies = { 'suspension' } },
                    { material = 'batteryCables', workType = 'engine', checkInventory = true, dependencies = { 'battery' } },
                },
            },
            {
                id = 'section_bodywork',
                title = 'Work on the Bodywork',
                icon = 'fa-solid fa-paint-roller',
                definitions = {
                    { material = 'hood', workType = 'body', checkInventory = true },
                    { material = 'roof', workType = 'body', checkInventory = true },
                    { material = 'bumper', workType = 'body', checkInventory = true },
                    { material = 'rims', workType = 'body', checkInventory = true, dependencies = { 'suspension' } },
                    { material = 'cardoor', workType = 'body', checkInventory = true },
                },
            },
            {
                id = 'section_interior',
                title = 'Work on the Interior',
                icon = 'fa-solid fa-couch',
                definitions = {
                    { material = 'seats', workType = 'body', checkInventory = true },
                    { material = 'horn', workType = 'body', checkInventory = true },
                },
            },
        },
        Car = {
            {
                id = 'section_undercarriage',
                title = 'Work on the Undercarriage',
                icon = 'fa-solid fa-car',
                definitions = {
                    { material = 'axle', workType = 'under', checkInventory = true },
                    { material = 'tires', workType = 'under', checkInventory = true, dependencies = { 'rims', 'cardoor', 'glass' } },
                    { material = 'suspension', workType = 'under', checkInventory = true, dependencies = { 'axle' } },
                    { material = 'driveShaft', workType = 'under', checkInventory = true, dependencies = { 'suspension', 'transmission' } },
                    { material = 'exhaust', workType = 'under', checkInventory = true },
                    { material = 'fuelTank', workType = 'under', checkInventory = true },
                    { material = 'brakes', workType = 'under', checkInventory = true, dependencies = { 'suspension' } },
                    { material = 'batteryCables', workType = 'engine', checkInventory = true, dependencies = { 'battery' } },
                },
            },
        },
        Bike = {},
        Pickup = {},
        Van = {},
    },
    -- Total required materials/parts for Bike restorations.
    Bike = {
        glass = 0,
        plastic = 1000,
        rubber = 500,
        aluminum = 200,
        steel = 200,
        metal = 200,
        carbon = 100,
        -- Parts
        rims = 2,
        seats = 2,
        engine = 1,
        sparkPlugs = 4,
        battery = 1,
        axle = 1,
        tires = 2,
        oil = 1,
        turbo = 1,
        transmission = 1,
        brakes = 2,
        suspension = 2,
        oilPump = 1,
        driveShaft = 2,
        cylinderHead = 1,
        batteryCables = 1,
        fuelTank = 1,
        hood = 0,
        roof = 0,
        bumper = 0,
        exhaust = 1,
        horn = 1,
        cardoor = 0,
    },
    -- Total required materials/parts for Car restorations.
    Car = {
        glass = 2000,
        plastic = 4000,
        rubber = 6000,
        aluminum = 500,
        steel = 1000,
        metal = 3000,
        carbon = 500,
        -- Parts
        rims = 4,
        seats = 4,
        engine = 1,
        sparkPlugs = 4,
        battery = 1,
        axle = 2,
        tires = 4,
        oil = 1,
        turbo = 1,
        transmission = 1,
        brakes = 4,
        suspension = 4,
        oilPump = 1,
        driveShaft = 2,
        cylinderHead = 1,
        batteryCables = 1,
        fuelTank = 1,
        hood = 1,
        roof = 1,
        bumper = 2,
        exhaust = 1,
        horn = 1,
        cardoor = 4,
    },
    -- Total required materials/parts for Pickup restorations.
    Pickup = {
        glass = 2000,
        plastic = 4000,
        rubber = 6000,
        aluminum = 500,
        steel = 1000,
        metal = 3000,
        carbon = 500,
        -- Parts
        rims = 4,
        seats = 4,
        engine = 1,
        sparkPlugs = 4,
        battery = 1,
        axle = 2,
        tires = 4,
        oil = 1,
        turbo = 1,
        transmission = 1,
        brakes = 2,
        suspension = 2,
        oilPump = 1,
        driveShaft = 2,
        cylinderHead = 1,
        batteryCables = 1,
        fuelTank = 1,
        hood = 1,
        roof = 1,
        bumper = 2,
        exhaust = 1,
        horn = 1,
        cardoor = 2,
    },
    -- Total required materials/parts for Van restorations.
    Van = {
        glass = 3000,
        plastic = 5000,
        rubber = 7000,
        aluminum = 1000,
        steel = 2000,
        metal = 4000,
        carbon = 1000,
        -- Parts
        rims = 4,
        seats = 4,
        engine = 1,
        sparkPlugs = 4,
        battery = 1,
        axle = 2,
        tires = 4,
        oil = 1,
        turbo = 1,
        transmission = 1,
        brakes = 2,
        suspension = 2,
        oilPump = 1,
        driveShaft = 2,
        cylinderHead = 1,
        batteryCables = 1,
        fuelTank = 1,
        hood = 1,
        roof = 1,
        bumper = 2,
        exhaust = 1,
        horn = 1,
        cardoor = 4,
    },
    MinAmount = 1,         -- Minium amount of materials the player gets when searching stuff
    MaxAmount = 8,         -- Maximum amount of materials the player gets when searching stuff
    CarPartChance = 2,     -- Chance of getting a car part when searching a car % chance
    SearchTimeout = 60000, -- Time in ms before the player can search again (1min)
    -- Optional skill-based bonus for scrap search rewards.
    -- Relies on `metaden-skills` script, if unavailable, rewards use base values only.
    SearchRewardModifiers = {
        Resource = 'metaden-skills',
        FlatBonus = 0,
        MaxBonus = 8,
        -- Multi-skill modifiers.
        -- Each entry adds: level * multiplier
        Skills = {
            { name = 'scrapping', multiplier = 1.0 },
            { name = 'education_engineering', multiplier = 0.35 },
        },
        -- Inventory item bonus modifiers.
        -- If the player has an item count > 0, its bonus is added.
        -- Supports fractional values (for example 0.25, 0.5).
        ItemBonuses = {
            WEAPON_SCREWDRIVER = 1,
            WEAPON_WRENCH = 1,
            WEAPON_HAMMER = 1,
            anglegrinder = 5,
            screwdriverset = 1,
        },
    },
    -- Scrap search rewards per scrap type.
    -- Parts list is used when the part drop chance hits.
    -- Materials list is used otherwise.
    ScrapSearchRewards = {
        vehicle = {
            parts = {
                'hood',
                'bumper',
                'rims',
                'axleparts',
                'engine',
                'sparkplugs',
                'drive_shaft',
                'cylinder_head',
                'fuel_tank',
                'roof',
                'horn',
                'suspension',
                'transmission',
            },
            materials = { 'aluminum', 'steel', 'glass', 'plastic', 'rubber', 'fiber', 'wires', 'copper' },
        },
        exhaust = {
            parts = { 'exhaust' },
            materials = { 'steel', 'aluminum' },
        },
        seats = {
            parts = { 'seat' },
            materials = { 'fiber', 'plastic', 'rubber' },
        },
        tires = {
            parts = { 'tire' },
            materials = { 'rubber', 'plastic', 'wires' },
        },
        door = {
            parts = { 'cardoor' },
            materials = { 'aluminum', 'steel', 'glass', 'plastic' },
        },
    },
    -- Controls who can interact with the part-restoration bench.
    -- Set OpenToAll = true to bypass job and skill checks entirely.
    CraftingBenchAccess = {
        OpenToAll         = false,
        -- Job type/name values allowed to use the bench.
        JobWhitelist      = { 'mechanic' },
        -- Minimum scrapping level required (0 = no skill requirement).
        -- Uses the level number as reported by metaden-skills, not raw XP.
        MinScrappingLevel = 5,
    },
    -- Part-restoration bench zones (used for repairing broken parts to Condition=100%).
    CraftingZones = {
        -- LSC Zones
        { coords = vec4(-314.61, -157.33, 39.04 - 0.4, 253.75),   w = 1.4, d = 2.2, },
        { coords = vec4(-310.28, -145.19, 39.12 - 0.4, 255.76),   w = 1.4, d = 2.2, },
        { coords = vec4(-306.29, -135.03, 39.11 - 0.4, 258.35),   w = 1.4, d = 2.2, },
        { coords = vec4(-319.82, -119.97, 38.81 - 0.4, 335.43),   w = 1.4, d = 2.2, },
        -- HAYES AUTOS
        { coords = vec4(472.54, -1313.22, 29.21, 30.0),           w = 3.2, d = 1.0, },
        { coords = vec4(277.6436, -1817.0757, 26.8480, 240.1176), w = 3.2, d = 1.0, },
        -- ROUTE 68
        { coords = vec4(1176.69, 2635.44, 37.75, 270.0),          w = 3.2, d = 1.0 },
        -- Airport
        { coords = vec4(-1158.71, -2002.37, 13.18, 45.0),         w = 0.6, d = 3.8 },
        -- PitStop
        { coords = vec4(947.2392, -1552.2246, 30.7377, 354.1109), w = 1.4, d = 2.2, },
        { coords = vec4(943.3618, -1565.8771, 30.7377, 266.6957), w = 1.4, d = 2.2, },

    },
    MaterialsNeededForRenovateParts = {
        engine = {
            steel = 20,
            aluminum = 20,
            carbon = 10,
            rubber = 5,
        },
        axle = {
            steel = 20,
            metalscrap = 10,
            rubber = 30,
        },
        transmission = {
            steel = 20,
            aluminum = 20,
            rubber = 10,
        },
        turbo = {
            steel = 20,
            aluminum = 20,
            metalscrap = 35,
            carbon = 5,
        },
        brakes = {
            steel = 45,
            aluminum = 20,
            rubber = 20,
            metalscrap = 10,
        },
        suspension = {
            steel = 20,
            aluminum = 20,
            rubber = 20,
            metalscrap = 20,
        },
        oilPump = {
            steel = 30,
            aluminum = 10,
            rubber = 200,
            metalscrap = 50,
        },
        driveShaft = {
            steel = 50,
            aluminum = 20,
            rubber = 10,
            metalscrap = 10,
        },
        cylinderHead = {
            steel = 30,
            aluminum = 5,
            metalscrap = 20,
        },
        batteryCables = {
            wires = 50,
            rubber = 50,
            metalscrap = 10,
        },
        fuelTank = {
            steel = 30,
            plastic = 20,
        },
        hood = {
            steel = 50,
            plastic = 30,
            carbon = 5,
        },
        roof = {
            steel = 20,
            plastic = 30,
            carbon = 5,
        },
        bumper = {
            aluminum = 20,
            plastic = 30,
            carbon = 2,
            rubber = 10,
        },
        exhaust = {
            steel = 20,
            aluminum = 10,
            carbon = 10,
            metalscrap = 20,
        },
        horn = {
            steel = 5,
            wires = 20,
            plastic = 20,
        },
        rims = {
            aluminum = 20,
            rubber = 10,
            steel = 10,
        },
        cardoor = {
            steel = 20,
            aluminum = 10,
            rubber = 10,
            plastic = 30,
            glass = 20
        },
        tire = {
            rubber = 50,
            wires = 20,
        }
    },

    -- -----------------------------------------------------------------------
    -- Trader Ped: spawns near the player via lib.point and offers wreck purchases
    -- and restoration mission assignment.
    -- -----------------------------------------------------------------------
    TraderPed = {
        Enabled  = true,

        -- GTA ped model to use for the trader.
        Model    = 'a_m_m_hillbilly_01',

        -- Location of the trader ped (vec4: x, y, z, heading).
        -- Set these to wherever you want the NPC in your world.
        Coords   = vec4(2340.65, 3126.47, 48.21, 355.18),

        -- Distance at which lib.point starts tracking the ped zone.
        -- The ped itself is spawned once the player is within 15 m.
        SpawnRadius = 30.0,

        -- Where the wreck prop is placed after a player purchases it from the trader.
        -- Defaults to the first CraftingZone if not set.
        WreckDeliveryCoords = vec4(2347.17, 3133.91, 49.21, 260.4),

        -- Skills / mission integration (requires metaden-skills).
        Skills = {
            -- If true, a "Request Mission" option is shown on the ped target.
            -- Silently hides the option when metaden-skills is not running.
            Enabled  = true,

            -- Pool of restoration missions to assign randomly.
            -- 'id' must match an id defined in metaden-skills/server/missions_config.lua.
            -- 'title' is shown to the player in the notification.
            Missions = {
                { id = 'restoration_search_wrecks_10', title = 'Wreck Scavenger' },
                { id = 'restoration_restore_1_bike',   title = 'First Bike Rebuild' },
                { id = 'restoration_restore_5_cars',   title = 'Classic Rebuilder' },
                { id = 'restoration_fix_1_door',       title = 'Panel Beater' },
            },
        },
    },
}