Browse docs

Advanced Fire Configuration

Optional custom fire profiles and multi-cannon vehicle configuration for server owners.

Use this page when you want to change fire types or configure a custom vehicle. For normal firefighting, start with Fire and Hose System.

Back up the file you edit. When the Job Configurator has a saved value for the same setting, edit that value in /jobconfig or deliberately reconcile it with your file configuration; see Configuration.

Multiple vehicle water cannons

Existing single-cannon rows without an ID continue as deckGun with their geometry and tuning preserved.

To opt into several cannons, edit Config.FireSystem.extinguish.firetruck.vehicleModels in sky_firejob/config/config.lua after the existing FireSystem definition. Each row can now have previously absent id and label. In /jobconfig → Fire Jobs → Fire → Extinguishing → Vehicle water cannon, the setting is firetruckWaterCannonModels with columns cannonId/cannonLabel; enablement remains firetruckWaterCannonEnabled. Saved table overrides remain effective.

The following complete two-cannon structure uses placeholders. Replace the model and barrel bones with values verified on your own vehicle, tune its geometry and merge your existing rows; assigning the whole table replaces its list. It does not claim that the default firetruk has a second barrel.

Config.FireSystem.extinguish.firetruck.vehicleModels = {
    {
        model = "YOUR_SPAWN_NAME",
        id = "deckGun",
        label = "Roof",
        turretBone = "YOUR_ROOF_BARREL_BONE",
        turretTipOffset = 1.0,
        turretMuzzleOffset = { x = 0.0, y = 0.0, z = 0.0 },
        waterVelocity = 30.0,
        waterGravityScale = 1.0
    },
    {
        model = "YOUR_SPAWN_NAME",
        id = "front",
        label = "Front",
        turretBone = "YOUR_FRONT_BARREL_BONE",
        turretTipOffset = 0.8,
        turretMuzzleOffset = { x = 0.0, y = 0.0, z = 0.0 },
        waterVelocity = 25.0,
        waterGravityScale = 1.0
    }
}

Use stable case-sensitive IDs unique within each model, 1–48 ASCII letters/digits/underscore/hyphen. Keep the legacy cannon as deckGun; give each additional cannon its own ID. Do not copy another model's bones/offsets. The vehicle must also be configured in Pump panel → Vehicles (Config.Hose.vehicles) with valid tank, panel, intake and outlet geometry; a cannon row alone does not register a pump vehicle. Inspect actual bones with /debug_vehiclebones and use the existing model editor for pump geometry.

For enhanced pump panels, enable the pump, supply tank-to-pump/external water, build pressure and open each intended outlet. Hold default Left Ctrl in the vehicle HUD, select the named cannon, then use default right mouse to spray. Switching stops the previous stream; release/press spray again. One cannon needs no selector; different crew can use distinct outlets, one operator per outlet. Simple panels retain their supply rules. Existing keybind settings firetruckHudCursorKey, deckGunSprayKey and deckGunSprayGamepadKey are unchanged.

Fire profiles

The extended default configuration includes configurable fire profiles for different scene types. These profiles drive values such as:

  • Fire class
  • Material
  • Source scale
  • Smoke density
  • Toxic smoke state
  • Confined-space behavior
  • Ventilation impact

The admin fire creator reads these profile definitions directly when opening the fire creator menu.

Register a custom fire type

Custom materials and selectable fire types are separate configuration entries:

ConfigurationPurposeWhere it appears
Config.FireSystem.materialsDefines combustion and which extinguishing agents workBehavior only; a material is not a selectable fire type
Config.FireSystem.fireProfilesRegisters a fire type and its runtime valuesAdmin fire creator and /skyfire
Config.FireScenarioCreator.firePresetsAllows selected profile keys in the Mission CreatorMission Creator fire-type list

Add custom entries at the end of sky_firejob/config/config.lua, after the existing Config.FireSystem block. Use a lowercase, unique key and use the same key in fireProfiles and firePresets.

The following example registers a kitchen grease fire that can be extinguished with the standard fire extinguisher, but not with water, foam, the firetruck cannon, the helicopter bucket, or the portable Water Monitor:

sky_firejob/config/config.lua
Config.FireSystem.materials.kitchen_grease = {
    label = "Kitchen Grease",
    fireClass = "K",
    combustible = true,
    heatRelease = 1.1,
    spreadFactor = 0.35,
    allowedExtinguishAgents = {
        water = false,
        foam = false,
        water_monitor = false,
        extinguisher = true
    },
    waterEffectiveness = 0.0,
    foamEffectiveness = 0.0,
    explosionRisk = 0.05
}

Config.FireSystem.fireProfiles = Config.FireSystem.fireProfiles or {}
Config.FireSystem.fireProfiles.kitchen_grease = {
    label = "Kitchen Grease Fire",
    aliases = { "grease", "greasefire", "kitchenfire" },
    fireClass = "K",
    stage = { "small", "medium" },
    material = "kitchen_grease",
    smokeEnabled = true,
    smokeDensity = { min = 45, max = 70 },
    smokeColor = { r = 105, g = 105, b = 105, a = 220 },
    scale = 0.9,
    effects = {
        flame = {
            value = "normal_fire",
            label = "Normal Fire",
            asset = "scr_martin1",
            effectName = "scr_sol1_fire_spot",
            scale = 4.0,
            zOffset = 0.0
        },
        smoke = {
            value = "normal_smoke",
            label = "Normal Smoke",
            asset = "core",
            effectName = "ent_ray_paleto_gas_plume_amb",
            scale = 2.0,
            zOffset = 0.2
        }
    },
    confined = true,
    ventilation = 0.4,
    flameCount = { min = 2, max = 4, integer = true },
    radius = { min = 0.8, max = 1.8 },
    intensity = { min = 45, max = 70 },
    temperature = { min = 420, max = 750, integer = true },
    size = { min = 1.4, max = 3.0 },
    fuel = { min = 45, max = 75 },
    oxygen = { min = 60, max = 82 },
    smoke = { min = 50, max = 80 },
    spreadSpeed = { min = 0.08, max = 0.22 },
    spreadChance = { min = 0.06, max = 0.18 },
    flashoverRisk = { min = 4, max = 14 },
    damage = { min = 5, max = 10 },
    structuralDamage = { min = 0, max = 3 },
    lifetime = { min = 360, max = 600, integer = true },
    particleScale = { min = 0.7, max = 1.0 },
    zOffset = 0.05
}

Config.FireScenarioCreator.firePresets = {
    "normal",
    "electrical",
    "chemical",
    "kitchen_grease"
}

firePresets is a list replacement, not an addition to the shipped list. Keep every built-in profile that should remain available and add the custom profile key. A profile appears automatically in the admin fire creator, while only profiles included in firePresets appear in the Mission Creator.

Restart sky_firejob after changing these file-based settings. You can then select Kitchen Grease Fire in either creator or spawn it with /skyfire kitchen_grease.

A separate Class K extinguisher agent is not currently available. The example uses the standard extinguisher agent and changes which agents are accepted for the custom material.