Browse docs

Fire and Hose System

Core firefighting gameplay, suppression flow, hose supply, and runtime fire behavior.

Fire system overview

Sky Fire Job includes a dedicated fire runtime with:

  • Dynamic fire creation and synchronization
  • Fire type profiles with different behavior
  • Smoke density, toxic smoke, and confined-space metadata
  • Spread logic and environment probing
  • Burn decals that build while fire is active
  • Burned-out scenes that remain temporarily after extinguishing

The server remains authoritative for active fires and burned scene cleanup.

Hose gameplay

The hose system supports:

  • Hydrant connections
  • Portable pump support
  • Fire vehicle water tanks
  • Foam tanks and foam refills
  • Radial menu interaction flow
  • Synchronized spray start, keep-alive, and stop events

Config.Hose controls water and foam consumption, hose length, supported hydrant props, pump behavior, and compatible fire vehicles.

Firetruck water and foam HUD

The vehicle HUD shows water and foam levels. Use /firetruckhud to show or hide it, and /firetruckhudmove to drag it to another position or change its size. Finish editing with Done or Enter; your layout is saved locally.

Hold Left Ctrl while the HUD is visible to click Water or Foam, then release the key. The same HUD also shows the water level for a supported helicopter Water Bucket.

See Firetruck HUD commands for the editor controls, size limits, key bindings, and visibility conditions.

Fire suppression agents

The default setup distinguishes between:

  • Water for standard suppression
  • Foam for fuel-related or vehicle fuel fires

Vehicle fires use the vehicle_fuel material by default, so foam is the intended extinguishing agent.

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. :::

Operational workflow

Typical firefighter gameplay flow:
  1. Go on duty.
  2. Spawn or access a supported fire vehicle.
  3. Connect water through truck tank, hydrant, or pump.
  4. Open hose control from the radial menu.
  5. Suppress the fire with the correct agent.
  6. Monitor remaining water, foam, and air supply.
  7. Clear the scene once active flames are fully resolved.