Browse docs
Fire and Hose System
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:
| Configuration | Purpose | Where it appears |
|---|---|---|
Config.FireSystem.materials | Defines combustion and which extinguishing agents work | Behavior only; a material is not a selectable fire type |
Config.FireSystem.fireProfiles | Registers a fire type and its runtime values | Admin fire creator and /skyfire |
Config.FireScenarioCreator.firePresets | Allows selected profile keys in the Mission Creator | Mission 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:
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.
extinguisher agent and changes which agents are accepted for the custom material.
:::Operational workflow
Typical firefighter gameplay flow:- Go on duty.
- Spawn or access a supported fire vehicle.
- Connect water through truck tank, hydrant, or pump.
- Open hose control from the radial menu.
- Suppress the fire with the correct agent.
- Monitor remaining water, foam, and air supply.
- Clear the scene once active flames are fully resolved.