> For the complete documentation index, see [llms.txt](https://sbscripts.gitbook.io/sb-scripts/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sbscripts.gitbook.io/sb-scripts/sb-firefighter-job/configuration/main-configuration.md).

# Main Configuration

```lua
Config = {}

Config.InventorySystem = 'qb-inventory'  -- 'qb-inventory', 'ox_inventory'

Config.ActiveDepartments = { --  Each department is defined in departments/*.lua
    'davisfiredpt',
    'vinewoodfiredpt',
}

Config.ClearFiresPermissions = { 'god', 'admin' }
Config.ClearFires = 'clearfires'  -- Command to clear all active fires.
Config.TargetSystem = 'qb-target'  -- 'qb-target' or 'ox_target'
Config.KeySystem = 'qb-vehieclekeys'  -- 'qb-vehiclekeys', 'vehiclekeys', 'qs-vehiclekeys', 'tgiann-hotwire'
Config.Fuel = 'LegacyFuel' -- 'LegacyFuel', 'Lc_fuel', 
Config.MaxActiveFires     = 3       -- Max fires active at once.
Config.FireInterval       = 5      -- Minutes between first fire to start after going on duty.
Config.RenderDistance     = 200.0   -- Distance (m) at which fire/smoke particles render
Config.FireSpread         = true    -- Shuld fires Spread
Config.FireSpreadInterval = 30
Config.StartDelay = 10  -- Minutes between random fires starting after the first one.

Config.CashPerFire = 120 -- Cash rewarded per fire extinguished. Set to 0 to disable cash rewards.
Config.BankPerFire = 0

Config.FirefighterXP = {
    baseXP       = 0,      -- starting XP for level 1
    growthFactor = 0.2,    -- XP scaling factor per level
    xpPerFire    = 10,     -- XP gained per fire
    maxLevel     = 100,    -- Maximum level attainable
}

Config.ExtinguishWeapons = {
    { weapon = 'WEAPON_FIREEXTINGUISHER', drainRate = 5,}, -- Drain rate = How fast should fire be extinguished (higher = faster). Radius = how close you need to be to extinguish fire points.
    -- { weapon = 'WEAPON_FIREEXTINGUISHER', drainRate = 10},
}

Config.WaterCannonVehicles = {
    { model = 'firetruk', drainRate = 5},
    -- { model = 'firetruk', drainRate = 25},
}

Config.Hose = {
    enabled      = true,    -- Should hose be used with vehicles. See Config.Vehicles.
    propModel    = 'prop_hose_nozzle',
    ropeLength   = 35.0,    -- Max length of the hose rope. Should be long enough to reach all fire points from the vehicle, but not too long that it looks weird when fully extended.
    maxDistance  = 15.0,    -- Max distance for hose to be effective at extinguishing fires. (Higher = Fires can be extinguished from farther away)
    drainRate    = 10,     -- How fast should fire be extinguished when using the hose. (Higher = Faster extinguishing)
    streamDict   = 'core',
    streamFx     = 'water_cannon_jet',
    streamScale  = 1.5,
    attachBone   = 28422,
    propOffset   = vector3(0.12, 0.02, -0.02),
    propRotation = vector3(0.0, 0.0, 0.0),
}

Config.PortableWater = {
    enabled    = true,
    itemName   = 'waterpump',
    propModel  = 'prop_generator_01a',
    placeDist  = 5.0,
    targetDist = 2.0,
    maxPlaced  = 3,
    hose = {
        propModel    = 'prop_hose_nozzle',
        attachBone   = 28422,
        propOffset   = vector3(0.12, 0.02, -0.02),
        propRotation = vector3(0.0, 0.0, 0.0),
        ropeLength   = 15.0,
        drainRate    = 5,
        maxDistance  = 12.0,
        streamDict   = 'core',
        streamFx     = 'water_cannon_jet',
        streamScale  = 0.4,
    },
}

Config.FireDamage = {
    enabled              = true,    -- Enable damage to players and vehicles inside fire radius
    playerDamage         = 5,       -- HP lost per tick when inside fire radius
    playerDamageTick     = 1000,    -- ms between player damage ticks
    playerRadius         = 1.0,     -- distance (m) from fire point that damages player
    vehicleRadius        = 5.0,     -- distance (m) to auto-ignite nearby vehicles
    igniteVehicles       = true,    -- Set Vehicles on fire when they enter fire radius
    vehicleCheckInterval = 5000,    -- ms between vehicle ignition checks
}

Config.FireEffect = {
    dict = 'core',
    particle = 'ent_ray_meth_fires',
    scale = 1.5,
    fireRadius = 2.0,
}

Config.SmokeEffect = {
    dict = 'des_gas_station',
    particle = 'ent_ray_paleto_gas_plume_L',
    scale = 5.0,
}

Config.FireBlip = {
    sprite = 436,
    colour = 1,
    scale = 0.75,
    flash = true,
}

Config.FireNotification = {
    duration  = 8000,
    soundSet  = 'HUD_MINI_GAME_SOUNDSET',
    soundName = 'CHECKPOINT_NORMAL',
}

Config.FireGroups = {

    {
        name   = 'Xero Gas Station',
        points = {
            vector3(255.845154, -1253.463745, 29.292955),
        },
    },
    {
        name   = 'Warehouse District',
        points = {
            vector3(316.284, -1027.135, 30.529),
            vector3(320.252, -1027.135, 30.394),
            vector3(324.523, -1027.135, 30.517),
        },
    },
    {
        name   = 'Sandy Shores Airfield',
        points = {
            vector3(1763.915, 3301.857, 43.237),
            vector3(1757.960, 3306.025, 43.143),
            vector3(1752.598, 3307.084, 43.115),
            vector3(1755.196, 3302.479, 43.046),
            vector3(1750.288, 3315.727, 40.904),
        },
    },
    {
        name   = 'LSIA Cargo Bay',
        points = {
            vector3(-919.250, -2940.412, 13.865),
            vector3(-917.781, -2942.338, 14.392),
            vector3(-929.981, -2934.154, 14.041),
            vector3(-927.601, -2935.831, 14.076),
            vector3(-923.629, -2941.957, 13.520),
        },
    },
    {
        name   = 'Paleto Forest Mill',
        points = {
            vector3(-573.669, 5307.841, 69.230),
            vector3(-570.133, 5325.284, 69.975),
            vector3(-571.497, 5317.853, 70.141),
            vector3(-576.138, 5348.599, 70.288),
            vector3(-505.096, 5280.926, 80.604),
        },
    },
    {
        name   = 'Cypress Flats Factory',
        points = {
            vector3(521.757, -1917.794, 25.141),
            vector3(534.122, -1927.265, 25.237),
            vector3(536.667, -1931.830, 25.125),
            vector3(532.564, -1938.777, 25.125),
            vector3(537.630, -1943.725, 26.771),
            vector3(501.015, -1964.150, 24.040),
            vector3(479.430, -1956.592, 26.853),
            vector3(455.748, -1950.918, 25.506),
        },
    },
    {
        name   = 'Downtown Apartment Fire',
        points = {
            vector3(318.947, -994.470, 29.771),
            vector3(344.235, -994.549, 29.957),
            vector3(345.441, -992.151, 29.726),
            vector3(314.886, -994.375, 29.890),
            vector3(303.267, -1005.548, 29.738),
        },
    },
    {
        name   = 'Port of LS Fire',
        points = {
            vector3(59.275, -2675.665, 6.142),
            vector3(59.275, -2677.262, 6.052),
            vector3(53.934, -2684.912, 6.055),
            vector3(59.928, -2685.780, 6.232),
            vector3(57.099, -2695.934, 6.164),
            vector3(77.790, -2694.418, 6.699),
            vector3(53.671, -2729.990, 5.990),
            vector3(52.629, -2709.243, 5.956),
        },
    },
    {
        name   = 'Vinewood Hills Wildfire',
        points = {
            vector3(340.811, 4472.302, 62.973),
            vector3(341.454, 4468.253, 62.871),
            vector3(342.474, 4461.698, 63.213),
            vector3(343.922, 4457.839, 62.968),
            vector3(345.482, 4453.830, 62.728),
        },
    },
    {
        name   = 'Paleto Orchard',
        points = {
            vector3(280.424, 6530.980, 29.244),
            vector3(270.643, 6530.662, 29.960),
            vector3(261.644, 6527.757, 29.872),
            vector3(272.314, 6519.240, 30.028),
            vector3(262.301, 6516.705, 30.095),
        },
    },
    {
        name   = 'Clucknbell Factory',
        points = {
            vector3(-69.942, 6259.852, 31.292),
            vector3(-76.650, 6256.981, 30.854),
            vector3(-67.464, 6253.684, 31.064),
            vector3(-64.955, 6243.907, 31.196),
            vector3(-64.391, 6242.665, 31.314),
            vector3(-67.665, 6237.678, 31.349),
            vector3(-76.873, 6238.525, 31.198),
            vector3(-84.682, 6239.698, 30.955),
            vector3(-73.290, 6221.587, 30.999),
            vector3(-74.301, 6219.986, 30.999),
            vector3(-87.682, 6209.447, 30.257),
            vector3(-90.790, 6210.927, 30.278),
            vector3(-114.241, 6183.222, 31.110),
        },
    },
    {
        name   = 'Jamestown Apartment Fire',
        points = {
            vector3(360.503, -1986.872, 27.723),
            vector3(366.275, -1988.973, 27.616),
            vector3(366.157, -1988.930, 24.499),
            vector3(380.407, -1994.117, 27.433),
            vector3(385.057, -2006.600, 27.658),
            vector3(376.248, -2003.393, 27.494),
        },
    },
    {
        name   = 'Grove Stree Fire',
        points = {
            vector3(127.016, -1930.244, 20.572),
            vector3(132.767, -1920.503, 21.870),
            vector3(137.614, -1920.247, 21.698),
            vector3(127.557, -1945.413, 20.494)
        },
    },
    {
        name   = 'Davis Gas Station Fire',
        points = {
            vector3(-60.848, -1761.022, 28.294),
            vector3(-63.400, -1768.034, 28.415),
            vector3(-71.836, -1765.245, 28.608),
            vector3(-69.226, -1758.075, 28.558),
            vector3(-79.982, -1762.306, 28.841),
            vector3(-40.737, -1750.369, 28.543),
        },
    },
    {
        name   = 'Legoin Square Bank',
        points = {
            vector3(147.604, -1036.063, 29.406)
        },
    },
    {
        name   = 'LifeInvader Building Fire',
        points = {
            vector3(-1048.021, -242.291, 37.924),
            vector3(-1043.680, -234.220, 37.602),
            vector3(-1066.497, -240.922, 39.610),
            vector3(-1080.332, -244.904, 43.883),
            vector3(-1062.502, -247.896, 43.947),
            vector3(-1060.062, -244.747, 43.898),
            vector3(-1055.326, -243.386, 43.925),
            vector3(-1050.966, -239.423, 43.891),
            vector3(-1053.574585, -244.345718, 44.021069)
        },
    },
    {
        name   = 'Abandonded Building Fire',
        points = {
            vector3(968.868, -203.405, 76.546),
            vector3(972.132, -197.995, 76.541),
            vector3(971.288, -199.395, 79.302),
            vector3(965.836, -208.429, 79.519),
            vector3(948.184, -204.076, 79.496),
            vector3(953.578, -195.099, 78.507),
        },
    },
}

Config.ClothingSystem = 'qb-clothing'  -- Clothing system. Only qb-clothing is currently supported. Set to 'none' if using another clothing system and want to disable  outfits tab.

Config.StationWear = {
    male = {
        arms=17,
        tshirt_1=15,
        tshirt_2=0,
        torso_1=314,
        torso_2=0,
        bproof_1=0,
        bproof_2=0,
        decals_1=0,
        decals_2=0,
        chain_1=0,
        chain_2=0,
        pants_1=120,
        pants_2=0,
        shoes_1=24,
        shoes_2=0,
        helmet_1=45,
        helmet_2=0,
    },
    female = {
        arms=17,
        tshirt_1=15,
        tshirt_2=0,
        torso_1=314,
        torso_2=0,
        bproof_1=0,
        bproof_2=0,
        decals_1=0,
        decals_2=0,
        chain_1=0,
        chain_2=0,
        pants_1=120,
        pants_2=0,
        shoes_1=24,
        shoes_2=0,
        helmet_1=45,
        helmet_2=0,
    },
}

Config.Outfit = {
    male = {
        arms=96,
        tshirt_1=15,
        tshirt_2=0,
        torso_1=741,
        torso_2=0,
        bproof_1=0,
        bproof_2=0,
        decals_1=0,
        decals_2=0,
        chain_1=0,
        chain_2=0,
        pants_1=120,
        pants_2=0,
        shoes_1=71,
        shoes_2=0,
        helmet_1=137,
        helmet_2=0,
    },
    female = {
        arms=252,
        tshirt_1=449,
        tshirt_2=0,
        torso_1=437,
        torso_2=0,
        bproof_1=0,
        bproof_2=0,
        decals_1=0,
        decals_2=0,
        chain_1=0,
        chain_2=0,
        pants_1=208,
        pants_2=0,
        shoes_1=95,
        shoes_2=0,
        helmet_1=272,
        helmet_2=0,
    },
}

Config.Vehicles = { -- Fallback — used when dept.vehicles is nil
    { label = '🚒 Fire Truck',  model = 'firetruk',  livery = 1 },
}

Config.ShopItems = {    -- Fallback — used when dept.shop is nil
    { name= 'weapon_fireextinguisher', label= 'Fire Extinguisher', price= 0, description= 'Standard CO₂ extinguisher',       icon='🧯' },
    { name= 'waterpump',               label= 'Portable Water',    price= 0, description= 'Deployable water unit',           icon='💧' },
    { name= 'firstaid',                label= 'First Aid Kit',     price= 0, description= 'Emergency medical supplies',      icon='🩹' },
    { name= 'bandage',                 label= 'Bandage',           price= 0, description= 'Basic wound dressing',            icon='🩹' },
}


Config.NativeFireDetection = {
    enabled              = true,
    explosionTypes       = {
        0,   -- Grenade
        1,   -- GrenadeLauncher
        2,   -- StickyBomb
        3,   -- Molotov
        6,   -- Hi_Octane
        9,   -- PetrolPump
        19,  -- SmokeGrenadeLauncher
        28,  -- Propane
        31,  -- Tanker
        34,  -- Gas_Tank
    },
    maxNativeFires       = 10,
}


Config.Debug = false
```
