Status Icons
Every status (health, armor, hunger, thirst, stress, stamina, oxygen, nitro,
voice) ships with a built-in icon. You can swap any of them from config.lua
without rebuilding the UI — the icon you pick is used by all six status
designs and by the previews in the settings menu.
Add an icons block inside Config.DefaultSettings.status, alongside
colors and visibility:
Config.DefaultSettings.status = {
-- ...
icons = {
health = "heartbeat",
armor = "lucide:ShieldHalf",
stress = "brain",
oxygen = "lucide:Wind",
thirst = "assets/water.png",
},
}Anything you leave out keeps its built-in icon, so an existing config needs no changes.
What you can put there
| Value | Meaning |
|---|---|
"heartbeat" | a name from the built-in list |
"hud:armor" | one of the HUD’s own glyphs — hud:health, hud:armor, hud:hunger, hud:thirst, hud:stress, hud:stamina, hud:oxygen, hud:voice |
"lucide:ShieldHalf" | any icon from lucide.dev, by its PascalCase name — around 1600 of them |
"assets/radiation.png" | your own image, from the resource’s assets folder |
"https://…" | an image from a URL |
Two longer forms are available when you need more control:
-- keep an image's own colours instead of tinting it to the status colour
nitro = { image = "assets/nitro.png", tint = false },
-- raw SVG path data, straight from any icon site
stress = { path = "M12 2 L22 20 H2 Z", viewBox = "0 0 24 24" },
-- outline-style icons (Lucide/Feather paths) need stroke mode
oxygen = { path = { "M4 4 L20 20" }, mode = "stroke", strokeWidth = 2 },Images are recoloured to match the status colour by default, so a plain
white or black PNG works best. Use tint = false for full-colour artwork.
An unknown name, a missing file or a broken path never leaves a blank slot — the built-in icon is used instead.
Lucide icons
Because the whole Lucide set is already bundled with the HUD, using one costs
nothing extra and needs no rebuild. Find an icon on lucide.dev,
take its name, and write it in PascalCase after lucide::
icons = {
health = "lucide:HeartPulse",
armor = "lucide:ShieldHalf",
hunger = "lucide:Beef",
thirst = "lucide:CupSoda",
stress = "lucide:BrainCircuit",
stamina = "lucide:Footprints",
oxygen = "lucide:Wind",
nitro = "lucide:Zap",
voice = "lucide:Mic",
}Using your own images
Drop the file in the resource’s assets folder and name it:
icons = {
thirst = "assets/water.png",
nitro = { image = "assets/nitro.png", tint = false },
}A bare filename also works and is read from assets — "water.png" is the
same as "assets/water.png". Keep images in assets: files placed inside
web/dist are replaced every time you update the HUD.
Custom statuses and pills
Config.CustomStatuses and Config.CustomPills accept exactly the same
values in their own icon field:
Config.CustomStatuses = {
{ id = "radiation", label = "Radiation", icon = "lucide:Radiation", color = "120 90% 55%" },
}Setting icons.radiation overrides whatever that definition asked for.
Built-in icon names
radiation, biohazard, heartbeat, brain, lungs, virus, skull,
fire, snowflake, bolt, droplet, shield, gas, gauge,
gauge-high, temperature, battery, signal, wifi, star, crown,
coins, money, key, wrench, gear, eye, bone, pills, syringe,
bandage, wind, running, food, heart

