# Lockpicking

Nord Doorlock includes an optional lockpick workflow.

## Enable Globally

```lua
Config.EnableLockpick = true
```

## Enable Per Door

Enable **Lockpick** in the door wizard.

Door structure:

```lua
lockpick = {
    enabled = true
}
```

## Default Key

```lua
Config.LockpickKey = 74 -- H
```

## Lockpick Configuration

```lua
Config.Lockpick = {
    item = 'lockpick',
    consumeOnSuccess = false,
    consumeOnFail = true,
    fallbackSuccessChance = 45,
    oxDifficulty = { 'easy', 'easy', 'medium' },
    oxInputs = { 'w', 'a', 's', 'd' }
}
```

### item

Inventory item required before the attempt starts.

### consumeOnSuccess

When `true`, one configured lockpick item is removed after a successful attempt.

### consumeOnFail

When `true`, one configured lockpick item is removed after a failed attempt.

### fallbackSuccessChance

Percentage used when an ox_lib skill check is unavailable.

### oxDifficulty / oxInputs

Passed to `lib.skillCheck` when supported.

## Server Validation

Before starting a lockpick attempt, the server checks:

- The door exists
- The player is near the door
- Lockpicking is globally enabled
- Lockpicking is enabled for the door
- The inventory bridge reports the required item

The server stores a short-lived pending attempt and validates it again when the client returns the result.

## Standalone Inventory Warning

The default standalone inventory fallback cannot verify a real inventory item and therefore returns success for inventory checks.

If your standalone server uses a custom inventory, integrate it in:

```text
server/bridge/inventory.lua
```

This is strongly recommended when lockpick items must be enforced.
