> For the complete documentation index, see [llms.txt](https://code-after-sex.gitbook.io/script-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://code-after-sex.gitbook.io/script-documentation/cas-gunsmith/configuration/shops.md).

# Shops and Interaction

Configure CAS Gunsmith shops — the shop list and coordinates, per-shop jobs, interaction distances, the map blip and the interaction prompt.

## Shops

```lua
Config.Shops = {
  { id = 'valentine', label = 'Valentine', keeper = 'W. Bartholomew, Prop.', coords = vector3(-281.37, 780.73, 119.53), bench = nil },
  ...
}
```

| Field    | Description                                                                                                                                                       |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`     | Unique shop id.                                                                                                                                                   |
| `label`  | Name shown at the top of the interface and in the prompt title.                                                                                                   |
| `keeper` | Proprietor name shown next to the shop name at the top of the interface.                                                                                          |
| `coords` | The spot where the player stands in front of the bench.                                                                                                           |
| `bench`  | Optional. Fixed display point for the weapon, `vector4(x, y, z, heading)`. If `nil`, the weapon is shown in front of the player at bench height.                  |
| `jobs`   | Optional. In `Config.Access` job mode, the jobs allowed at this shop instead of `Config.Access.jobs`, for example `jobs = { 'valgunsmith' }` for a town-run shop. |

The default shops are Valentine, Rhodes, Saint Denis, Annesburg and Tumbleweed. Coordinates are approximate. Check them against the gunsmith bench on your own map.

To add a shop, add a line to the list in the same format. To remove a shop, delete its line.

## Distances

| Setting            | Default | Description                                                                                                        |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------ |
| `InteractDistance` | `1.6`   | Distance at which the prompt appears (metres). The bench closes if the player moves 2 metres beyond this distance. |
| `ServerDistance`   | `6.0`   | On opening and on payment, the server checks that the player is no further than this from the shop.                |

`ServerDistance` should not be smaller than `InteractDistance`.

## Map blip

```lua
Config.Blip = {
  enabled = true,
  sprite = -145868367,
  scale = 0.2,
}
```

Set `enabled = false` to turn blips off. The name shown on the map is `blip.name` in the language file (see [Localization](/script-documentation/cas-gunsmith/configuration/localization.md)).

## Prompt

```lua
Config.Prompt = {
  key = 0xCEFD9220,
  holdMs = 800,
}
```

| Field    | Description                              |
| -------- | ---------------------------------------- |
| `key`    | Prompt key. The default is E.            |
| `holdMs` | How long the key is held (milliseconds). |

The prompt texts are in the language file: `prompt.text` is the text on the prompt ("Use the Bench"), and `shop.name` is its title, where `{shop}` is the shop's `label` ("Valentine Gunsmith").
