Suty
Shower System

Configuration

Configuration

Configuration is split across 8 files in config/ — all unencrypted and freely editable.

File Owns
config/main.lua Framework, hygiene decay & thresholds, the HUD
config/shower.lua Shower duration, props, water effects, undress
config/deodorant.lua Deodorant duration & effect
config/perfume.lua Perfume duration, effect & pheromone
config/dental.lua Dental decay, brushing, gum items
config/items.lua ox_inventory item names (soap / deodorant / perfume)
config/notifications.lua All player-facing text (Spanish by default)
config/discord.lua Discord webhook logging + debug

config/main.lua must load first — it creates the base Config table and the framework setting. Don't reorder it in the manifest.

main.lua — framework & hygiene

Config.Framework  = 'auto'   -- 'auto' | 'qbx' | 'qb' | 'esx'
Config.DebugBridge = false

Config.HygieneSystem = {
    fullDuration   = 120,     -- REAL-LIFE minutes from 100% to 0% (120 = 2h)
    stinkThreshold = 20,      -- below this %, nearby players can smell you
    flyThreshold   = 20,      -- below this %, fly particles spawn
    smellRadius    = 4.0,     -- meters others must be within to smell you
    smellCheckInterval        = 10000,  -- ms between nearby-smell checks
    selfNotificationInterval  = 5,      -- minutes between "you stink" reminders
    smellReactionCooldown     = 30,     -- seconds between reactions to the same player
    showFlies         = true,
    playStinkReaction = true,
    reactionDuration  = 3000,
    -- HUD settings below ↓
}

HUD settings (inside Config.HygieneSystem)

showHUD = false,            -- master on/off for the on-screen HUD

hudStyle = 'hex',           -- 'hex' | 'circle' | 'capsule' | 'diamond' | 'ring'

hudColors = {               -- whole-HUD theme (hex). Drives fill, glow, borders, icons.
    dark   = '#3a0f0e',
    mid    = '#c4423e',
    bright = '#f35854',
},

hudStyleCommand = 'hudstyle',  -- command players use to open the style picker

useCustomPanel = true,      -- true: built-in HUD · false: forward to qbx_hud

Styles: hex (qbx_hud-style hexagon with liquid wave), circle, capsule (vertical tank), diamond, ring (hexagon outline progress).

Colors: set the three tones to recolor everything. Ready-made palettes:

Palette dark mid bright
Red (default) #3a0f0e #c4423e #f35854
Blue #0b2a3a #1f6f9e #38bdf8
Green #0d3a1e #1f9e57 #34d399
Purple #2a0f3a #7e3fc4 #a855f7
Gold #3a2a0f #c49b3e #fbbf24

hudStyle and hudColors are the server default. Each player can override the style for themselves with the in-game picker (/hudstyle); their choice is saved client-side.

shower.lua — showering

Config.ShowerDistance = 2.5

Config.Shower = {
    duration         = 20000,   -- ms
    useTarget        = true,    -- true: ox_target eye · false: use soap item
    restoresTo       = 100,
    requireHouse     = true,    -- must be inside a house/shell
    showWaterEffects = true,
    waterEffectScale = 1.5,
    waterParticleEffect = 'ent_sht_water',
}

Config.ShowerProps      = { ... }   -- prop hash → { offset, scale } (many supported)
Config.PublicShowerProps = { ... }  -- props usable without the house check (e.g. prison)

Showers are matched by prop hash. Add your own custom shower heads to Config.ShowerProps; tune the water offset live with /positionwater.

deodorant.lua / perfume.lua — freshness boosters

Config.Deodorant = {
    duration           = 12000,
    minHygieneRequired = 50,     -- must be at least this clean to apply
    decayMultiplier    = 0.82,   -- <1 slows decay
    effectDuration     = 110,    -- minutes
}

Config.Perfume   = { duration = 7000, minHygieneRequired = 50, decayMultiplier = 0.69, effectDuration = 130 }
Config.Pheromone = { enabled = true, chance = 8, radius = 10.0, ... }  -- perfume attracts nearby players

dental.lua — dental track

Config.DentalSystem = {
    enabled      = true,
    fullDuration = 180,        -- REAL-LIFE minutes to 0% (separate from body hygiene)
    showHUD      = true,
    brushDuration = 10000,
    restoresTo   = 100,
    gumItems = {               -- chewing gum FREEZES decay (doesn't refill)
        ['gum_peppermint'] = 25,   -- minutes of frozen decay
        ['gum_cinnamon']   = 25,
        ['gum_spearmint']  = 25,
    },
}

items.lua — item names

Config.Items = {
    soap      = 'jabon',
    deodorant = 'desodorante',
    perfume   = 'perfume',
}

Change these to match your ox_inventory item names.

notifications.lua / discord.lua

notifications.lua holds every player-facing string (Spanish defaults) — edit freely. discord.lua controls webhook logging (enabled, webhook, logShower, logStink) and Config.Debug.