The player inventory is split into pockets, base slots and backpack slots.
A worn backpack opens the last group and raises the weight limit; carrying too much slows the player down.

:::frame{caption="Default layout with inventory:slots set to 35"}
![Slot layout](/media/inventory/slot-layout.svg)
:::

## Slot groups

| Slots | Group | Opened by |
| --- | --- | --- |
| 1 – 5 | Pockets (hotbar keys 1 – 5) | Always open |
| 6 – 25 | Base slots | Always open |
| 26 – 35 | Backpack slots | A worn backpack |

Three values decide the layout:

| Value | Where | Default | Meaning |
| --- | --- | --- | --- |
| `inventory:slots` | `server.cfg` convar | `35` | Total slots, the hard maximum |
| `pockets` | `data/obsi/core.lua` | `5` | Number of pocket slots |
| `baseSlots` | `data/obsi/core.lua` | `25` | Last slot that is always open |

Everything after `baseSlots` stays locked until a backpack opens it.
The interface shows those slots under **NEED A BACKPACK**, and the server rejects any move or add into a locked slot.

:::frame{caption="Pockets and the locked backpack slots"}
![Pockets and backpack slots](/media/inventory/pockets-backpack.webp)
:::

## Backpacks

A backpack is an item worn in the **Bag** slot of the clothes column.
Its `backpack` field says how many slots it opens and how much weight it adds:

```lua title="data/items.lua"
['backpack_large'] = {
    label = 'Large backpack',
    weight = 1500,
    prop = 'prop_michael_backpack',
    backpack = { slots = 10, weight = 20000 },
    clothing = {
        kind = 'component', id = 5,
        male = { drawable = 82, texture = 0 },
        female = { drawable = 82, texture = 0 },
    },
},
```

| Item | Slots | Extra weight |
| --- | --- | --- |
| `backpack_small` | 5 | 10 kg |
| `backpack_large` | 10 | 20 kg |

The maximum weight is the player weight plus the worn backpack's `backpack.weight`.

:::hint{type="warning" title="Empty it before taking it off"}
A backpack cannot be taken off while its extra slots still hold items.
Move them into the base slots first.
:::

## Weight effects

When a player carries more than a share of their maximum weight, the inventory starts to push back.

| Effect | Setting | Default |
| --- | --- | --- |
| Penalties start at | `overloadPct` | 85 % of the maximum |
| Walk style | `clipset` | `move_m@hobo@a` (`false` keeps the current one) |
| Movement speed | `moveRate` | × 0.85 |
| No sprinting or jumping from | `disableSprintPct` | 97 % |
| Stamina lost per second of running | `staminaDrain` | 2.5 |
| Sweating | `sweat`, `sweatAmount` | on, 80 |

All of these live in the `weight` table of `data/obsi/core.lua`.
Admins can switch the whole feature off live with the **Weight effects** addon.
