# Magazine Ammunition · Server Authority

Nord Inventory treats the inventory as the authority for reserve rounds.

## Reload transaction

When a reload is requested, the server calculates:

```text
needed = magazineSize - currentLoadedAmmo
consumed = min(needed, reserveItemCount)
newLoadedAmmo = currentLoadedAmmo + consumed
```

Only `consumed` reserve rounds are removed from inventory.

### Example

A pistol has:

```text
Magazine capacity: 17
Loaded rounds: 5
Reserve ammo item: 30
```

Nord removes **12** rounds from the ammo item and sets the weapon to **17** loaded rounds. The remaining **18** reserve rounds stay in the inventory.

## Client synchronization

Client ammo reports are decrease-only from the server's point of view. A client cannot increase authoritative weapon ammo merely by reporting a larger GTA ammo value.

## First-use magazine detection

If a weapon instance has no `metadata.magazineSize`, Nord can use the GTA native clip size as a first-use seed when:

```lua
Config.WeaponAmmo.DetectMagazineFromGame = true
```

Once stored, the metadata value is authoritative for that weapon instance.
