> For the complete documentation index, see [llms.txt](https://documentation.rcore.cz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.rcore.cz/paid-resources/rcore_housing/configuration/dirt.md).

# Dirt

Edit `rcore_housing/configs/config.dirt.lua` to control the dirt and cleaning system inside SHELL and IPL interiors.

## 🔌 Master Switch

```lua
Config.Dirt.Enable = false
```

Disabled by default. Enable it to spawn dirt props inside player properties over time.

{% hint style="info" %}
A property with the **Cleaning** upgrade never spawns dirt - see [upgrades configuration](/paid-resources/rcore_housing/configuration/upgrades.md).
{% endhint %}

## 🌪️ Spawning

```lua
Config.Dirt.MaxPerProperty   = 10
Config.Dirt.MinDistance      = 2.0
Config.Dirt.PointMinDistance = 3.5
Config.Dirt.SpawnChance      = 2
Config.Dirt.SpawnInterval    = { 30000, 130000 }
```

| Option             | Description                                             |
| ------------------ | ------------------------------------------------------- |
| `MaxPerProperty`   | Hard cap on dirt objects per property.                  |
| `MinDistance`      | Minimum metres between dirt objects.                    |
| `PointMinDistance` | Minimum metres from interaction points (exit, storage). |
| `SpawnChance`      | Per-cycle chance (%) to spawn a dirt object.            |
| `SpawnInterval`    | `{min, max}` milliseconds between spawn attempts.       |

## 🦶 Slipping & Footsteps

```lua
Config.Dirt.Slipping       = true
Config.Dirt.SlippingChance = 15
```

When a player walks into a dirt area, there's a `SlippingChance` % chance of ragdolling.

```lua
Config.Dirt.Footsteps = {
    Enable        = true,
    Chance        = 2,
    MinSpeed      = 1.0,
    RequireMoving = true,
    Interval      = 60000,
}
```

Footsteps leave decal stains as players walk on dirty floors.

## 🧹 Mop

```lua
Config.Dirt.Mop = {
    Enable        = true,
    CleanDistance = 2.0,
    SweepDistance = 1.5,
    CleanDuration = 2000,
    UseCamera     = true,
}
```

The mop system uses a `prop_cs_mop_s` prop attached to the right hand (`bone 60309`) and a `prop_cs_bucket_s` bucket attached to the spine (`bone 57005`).

### Dirty Level

```lua
Config.Dirt.Mop.DirtyLevel = {
    Enable                 = true,
    Threshold              = 70,
    PerSweep               = 10,
    EffectivenessReduction = true,
}
```

When enabled, sweeping fills up a per-mop dirty meter. Once the meter passes `Threshold`, the player must rinse the mop in the bucket before cleaning effectiveness improves again.

## 🧱 Dirt Objects

`Config.Dirt.Objects` is a weighted list of dirt props with their spawn metadata:

```lua
{ model = 'prop_rub_litter_03',  label = 'Trash',       weight = 30, interior = false },
{ model = 'prop_cs_plate_01',    label = 'Dirty Plate', weight = 20, interior = true  },
{ model = 'prop_cs_newspaper',   label = 'Newspaper',   weight = 15 },
-- ...
```

| Field      | Description                                                                                |
| ---------- | ------------------------------------------------------------------------------------------ |
| `model`    | Prop model name.                                                                           |
| `label`    | UI label shown when picking up.                                                            |
| `weight`   | Spawn weight relative to other entries.                                                    |
| `interior` | `true` spawns only inside (kitchen/livingroom props); `false` only outside; omit for both. |
