> For the complete documentation index, see [llms.txt](https://docs.t1ger.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.t1ger.net/resources/t1ger-tuning/configuration/nitrous.md).

# Nitrous

t1ger\_tuning/shared/nitrous.lua

```lua
return {

    Enable = true, -- enable/disable the nitrous feature entirely

    RequireTurbo = false, -- if true, vehicle needs turbo installed to install a nitrous kit

    MaxSize = 12, -- max lb size of a nitrous kit, 1 lb = 10 shots. Min size is always 1lb
    UnitPrice = 1500, -- price per lb — e.g. a 4lb kit costs 4 x UnitPrice
    DefaultThreshold = 5, -- seconds — how long burst/purge can be held before any burst kit is installed
    DefaultPurgeColor = {r = 1.0, g = 1.0, b = 1.0}, -- default purge color.
    Weight = "lb", -- unit string used in menus

    -- keybind settings for NOS purge and burst
    Keybinds = {
        purge = {
            description = "Use NOS Purge",
            defaultKey  = "RCONTROL",
        },
        burst = {
            description = "Use NOS Burst",
            defaultKey  = "LSHIFT",
        },
    },

    -- icons used across nitrous menus
    MenuIcons = {
        unitPrice     = "dollar-sign",
        selectSize    = "bottle-droplet",
        currentNosKit = "fire-flame-simple",
        nitrousKit    = "bottle-droplet",
        burstKit      = "gauge-high",
    },

    -- nitrous kit and burst kit installation settings
    Install = {
        NitrousKit = {
            prop   = "v_ind_cs_gascanister",
            anim   = { dict = "anim@heists@box_carry@", name = "idle", blendIn = 4.0, blendOut = 1.0, duration = -1, flags = 49, boneId = 28422 },
            offset = { pos = vector3(0.1, -0.1, -0.05), rot = vector3(-45.0, 90.0, 0.0) },
            target = { icon = "fa-solid fa-screwdriver", label = "Install Nitrous Kit", distance = 5.0 },
            resetShots = true, -- installing a new kit resets shots to 0, forcing a refill
        },
        BurstKit = {
            prop   = "imp_prop_impexp_differential_01a",
            anim   = { dict = "anim@heists@humane_labs@finale@keycards", name = "ped_a_enter_loop", blendIn = 4.0, blendOut = 1.0, duration = -1, flags = 49, boneId = 60309 },
            offset = { pos = vector3(0.0, 0.0, 0.0), rot = vector3(0.0, -90.0, 0.0) },
            target = { icon = "fa-solid fa-screwdriver", label = "Install Burst Kit", distance = 5.0 },
        },
    },

    -- default burst kit, always shown first, uses DefaultThreshold seconds
    DefaultBurst = {
        label       = "Stock Burst Kit",
        icon        = "gauge-simple",
        price       = 1000, -- free when installing the nitrous kit for the first time
        description = "Stock Threshold of 5 seconds",
    },

    -- burst upgrade kits — raise the threshold seconds for burst/purge
    BurstKits = {
        [1] = { label = "Street Burst Kit", icon = "gauge", threshold = 7,  price = 6500,  description = "Threshold upgrade to 7 seconds" },
        [2] = { label = "Sports Burst Kit", icon = "gauge", threshold = 10, price = 12500, description = "Threshold upgrade to 10 seconds" },
        [3] = { label = "Race Burst Kit",   icon = "gauge", threshold = 13, price = 27500, description = "Threshold upgrade to 13 seconds" },
    },

    -- nitrous refill via bottle item
    Bottle = {
        skillcheck = { enable = true, difficulty = { "easy", "easy" }, inputs = { "w", "a", "s", "d" } },
        duration   = 3000, -- ms to load nitrous from bottle into kit
        label      = "Filling Nitrous",
        anim       = { dict = "mini@repair", name = "fixing_a_player", blendIn = 8.0, blendOut = -8.0, flag = 49 },
    },

    -- purge dye injection settings
    DyeInstall = {
        target   = { icon = "fa-solid fa-syringe", label = "Inject Purge Dye", distance = 5.0 },
        duration = 3000, -- ms to install the dye
    },

    -- efficiency percentages for burst, based on purge behavior
    Efficiency = {
        noPurge      = 30, -- % efficiency if burst is used without purging
        windowExpiry = 50, -- % efficiency once the efficiency window expires
        purge = {
            min = 70,  -- % at 1-second purge
            max = 100, -- % at full purge (up to burst kit threshold)
        },
    },

    -- purge mechanics and notifications
    Purge = {
        ptfx_size = 0.35, -- size of purge particle effects
        window    = 2,    -- minutes the efficiency window lasts for burst
        cooldown  = 1,    -- minutes after window expires before a new one can start

        gasLeak = {
            duration = 1000, -- ms the leak ptfx plays
            chance   = 50,   -- % chance of a leak occurring during cooldown purge
            remove   = { min = 1, max = 50 }, -- % of shots lost on leak
        },

        notify = {
            showHeldDuration = true, -- notify every second while purge is held
            showConsumption  = true, -- notify shots consumed on release
            showEfficiency   = true, -- notify efficiency % gained on release
        },
    },

    -- burst mechanics and notifications
    Burst = {
        cooldown = true, -- cooldown equal to how long burst was held

        baseTorqueMultiplier = 1.8, -- multiplied with (maxSpeed / currentSpeed) — never go below 1.0
        requiredEngineHealth = 500.0, -- 0.0-1000.0, minimum engine health to activate burst
        screenShakeIntensity = 0.40, -- camera shake amplitude while bursting

        engineDamage = {
            noPurge      = { chance = 70, engineHealth = 199.9 }, -- bursting without purging
            windowExpiry = { chance = 25, engineHealth = 199.9 }, -- bursting after window expired
            threshold    = { chance = 90, engineHealth = 199.9 }, -- held past burst kit threshold
        },

        notify = {
            showHeldDuration   = true, -- notify every second while burst is held
            showRemainingShots = true, -- notify remaining shots after use
        },
    },

    -- points where tuners can refill empty bottles into 10-shot bottles, finite stock resets on restart
    Refill = {
        distance = 2.0,
        blip     = { name = "NOS Refill", sprite = 436, display = 4, scale = 0.65, color = 38 },
        skillcheck = { enable = false, difficulty = { "easy", "easy" }, inputs = { "w", "a", "s", "d" } },
        duration = 3000, -- ms to transform empty bottle into a nos bottle
        label    = "Refilling NOS Bottle",
        anim     = { dict = "mini@repair", name = "fixing_a_player", blendIn = 8.0, blendOut = -8.0, flag = 49 },

        points = {
            [1] = { pos = vector3(1697.86, -1696.32, 112.46), blip = true, size = 20 },
            [2] = { pos = vector3(251.15, -2932.52, 5.75),    blip = true, size = 20 },
            [3] = { pos = vector3(1014.79, -2529.23, 28.30),  blip = true, size = 20 },
            [4] = { pos = vector3(1119.73, -1625.65, 34.87),  blip = true, size = 20 },
            [5] = { pos = vector3(-104.67, -2686.20, 5.99),   blip = true, size = 20 },
            [6] = { pos = vector3(-424.44, -2265.67, 7.59),   blip = true, size = 20 },
        },
    },
}
```
