# Mission s

File: `shared/config.lua` → `Config.Missions`

An array of mission definitions. Each entry describes a complete job location with its tasks, rewards, and metadata.

## Mission fields

| Key           | Type     | Description                                  |
| ------------- | -------- | -------------------------------------------- |
| `id`          | `string` | Unique mission identifier.                   |
| `label`       | `string` | Display name shown in the UI.                |
| `location`    | `table`  | Location metadata and spawn point.           |
| `rewards`     | `table`  | Money and XP awarded on completion.          |
| `information` | `table`  | UI metadata (description, tags, image, etc). |
| `maintasks`   | `table`  | Primary tasks (must be completed).           |
| `minitasks`   | `table`  | Secondary bonus tasks.                       |

***

### `location`

| Key      | Type     | Description                |
| -------- | -------- | -------------------------- |
| `road`   | `string` | Street / area name.        |
| `city`   | `string` | City name.                 |
| `coords` | `vec3`   | Primary world coordinates. |

### `rewards`

| Key     | Type     | Description               |
| ------- | -------- | ------------------------- |
| `money` | `number` | Cash reward.              |
| `xp`    | `number` | Experience points reward. |

### `information`

| Key           | Type     | Description                                        |
| ------------- | -------- | -------------------------------------------------- |
| `description` | `string` | Short description shown in the mission list.       |
| `duration`    | `string` | Estimated duration label (e.g. `'15m'`).           |
| `level`       | `number` | Minimum level required.                            |
| `image`       | `string` | Path to the background image.                      |
| `tags`        | `table`  | Array of tag strings (e.g. `{'Easy', 'Regular'}`). |

***

## Task types

### `maintasks`

Primary tasks that define the core activity of a mission.

#### `cuttinggrass`

| Key          | Type      | Description                           |
| ------------ | --------- | ------------------------------------- |
| `enabled`    | `boolean` | Whether the task is active.           |
| `label`      | `string`  | Task display name.                    |
| `mowerModel` | `string`  | Prop model for the lawnmower.         |
| `zones`      | `table`   | Array of `vec3` grass zone positions. |

### `minitasks`

Optional secondary tasks that provide bonus rewards.

#### `cuttinghedge`

| Key          | Type      | Description                      |
| ------------ | --------- | -------------------------------- |
| `enabled`    | `boolean` | Whether the task is active.      |
| `label`      | `string`  | Task display name.               |
| `hedgeModel` | `string`  | Prop model for the hedge.        |
| `zones`      | `table`   | Array of `vec3` hedge positions. |

#### `plantflowers`

| Key           | Type      | Description                       |
| ------------- | --------- | --------------------------------- |
| `enabled`     | `boolean` | Whether the task is active.       |
| `label`       | `string`  | Task display name.                |
| `flowerModel` | `string`  | Prop model for the flower.        |
| `zones`       | `table`   | Array of `vec3` flower positions. |

#### `garbage`

| Key            | Type      | Description                           |
| -------------- | --------- | ------------------------------------- |
| `enabled`      | `boolean` | Whether the task is active.           |
| `label`        | `string`  | Task display name.                    |
| `garbageModel` | `string`  | Prop model for the garbage bag.       |
| `zones`        | `table`   | Array of `vec3` garbage spawn points. |
| `dumpster`     | `table`   | Dumpster object (see below).          |

**`dumpster`**

| Key      | Type     | Description                  |
| -------- | -------- | ---------------------------- |
| `coords` | `vec4`   | Position and heading.        |
| `model`  | `string` | Prop model for the dumpster. |

***

## Full example

```lua
Config.Missions = {
    {
        id = 'mirrorpark_1',
        label = 'Mission Park',
        location = {
            road = 'Mirror Park',
            city = 'Los Santos',
            coords = vec3(1270.99, -648.16, 67.94),
        },
        rewards = { money = 450, xp = 150 },
        information = {
            description = 'Mow the lawns around Mirror Park.',
            duration = '15m',
            level = 1,
            image = './images/bg1.webp',
            tags = { 'Easy', 'Regular' },
        },
        maintasks = {
            cuttinggrass = {
                enabled = true,
                label = 'Mow the lawn',
                mowerModel = 'prop_lawnmower_01',
                zones = { vec3(...), vec3(...) }
            },
        },
        minitasks = {
            cuttinghedge = {
                enabled = true,
                label = 'Trim the hedges',
                hedgeModel = 'prop_bush_neat_08',
                zones = { vec3(...), vec3(...) }
            },
            plantflowers = {
                enabled = true,
                label = 'Plant and water flowers',
                flowerModel = 'prop_flower_01',
                zones = { vec3(...) }
            },
            garbage = {
                enabled = true,
                label = 'Collect garbage',
                garbageModel = 'prop_ld_rub_binbag_01',
                zones = { vec3(...) },
                dumpster = {
                    coords = vec4(1252.65, -667.51, 67.62, 116.35),
                    model = 'prop_cs_dumpster_01a'
                },
            }
        }
    },
}
```

***

## Missions System

File: `shared/config.lua` → `Config.MissionSystem`

Controls how missions are distributed among players on the server.

### Fields

| Key            | Type     | Default     | Description                                         |
| -------------- | -------- | ----------- | --------------------------------------------------- |
| `Mode`         | `string` | `'buckets'` | Mission distribution mode (see below).              |
| `BaseBucketId` | `number` | `5000`      | Starting routing bucket ID used for virtual worlds. |

### Modes

### `'global_lock'`

First come, first served. When a player starts a mission, that mission is **locked on the map** and unavailable to others until completed or abandoned.

### `'buckets'`

Every player (or party) enters their own **routing bucket** (virtual world). Multiple players can run the same mission simultaneously without interfering with each other.

### Example

```lua
Config.MissionSystem = {
    Mode = 'buckets',
    BaseBucketId = 5000
}
```
