# Skills

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

Defines the entire skill tree displayed in the Upgrades panel. Skills are organized into **categories** (table keys), each containing an ordered list of skill nodes.

## Skill node fields

Every skill node shares the same structure:

| Key             | Type           | Description                                                             |
| --------------- | -------------- | ----------------------------------------------------------------------- |
| `id`            | `string`       | Unique identifier (referenced by other skills in `requirements`).       |
| `label`         | `string`       | Display name shown in the UI.                                           |
| `description`   | `string`       | Short tooltip text.                                                     |
| `icon`          | `string`       | Icon name (Lucide icon set used in the React UI).                       |
| `position`      | `{x, y}`       | Position on the skill tree canvas (pixels).                             |
| `requirements`  | `{skills={}}`  | List of skill `id`s that must be unlocked first.                        |
| `upgrades`      | `table`        | Reserved for future multi-tier upgrades (usually `{}`).                 |
| `price`         | `number`       | Skill point cost to purchase.                                           |
| `requiredLevel` | `number`       | Minimum player level required.                                          |
| `type`          | `string`       | Effect type applied when unlocked (see table below).                    |
| `value`         | `number\|bool` | Magnitude of the effect (percentage as decimal, or `true` for toggles). |

## Effect types

| Type                 | Value example | Description                                           |
| -------------------- | ------------- | ----------------------------------------------------- |
| `none`               | `0`           | No gameplay effect (e.g. welcome node).               |
| `mowing_speed`       | `0.15`        | Increases mowing speed by 15%.                        |
| `money_multiplier`   | `0.10`        | Increases mission earnings by 10%.                    |
| `exp_multiplier`     | `0.10`        | Increases XP gain by 10%.                             |
| `tool_speed`         | `0.20`        | Increases manual task speed (hedges, flowers) by 20%. |
| `van_speed`          | `0.20`        | Improves company van acceleration/speed by 20%.       |
| `stamina_mode`       | `true`        | Removes speed penalty when carrying bags.             |
| `mowing_range`       | `1.5`         | Increases the mowing area radius.                     |
| `mower_tool_upgrade` | `true`        | Replaces the manual mower with a ride-on tractor.     |

## Categories

### `welcome_tree`

The root node — every player starts here.

```lua
{ id = 'welcome', label = 'Welcome!', type = 'none', value = 0, price = 0, requiredLevel = 1 }
```

### `mower`

Mowing speed upgrades in three tiers: **+15% → +30% → +50%**.

### `money`

Earnings multiplier: **+10% → +25%**.

### `exp`

Experience multiplier: **+10% → +25%**.

### `tools`

Manual task speed (hedge trimming, flower planting): **+20% → +50%**.

### `van`

Company van performance: **+20% → +50%**.

### `strong_back`

Single-tier toggle — removes the movement penalty while carrying garbage bags.

### `range`

Mowing blade width: **1.5× → 3.0×** radius.

### `tractor_upgrade`

End-game upgrade — replaces the push mower with a ride-on garden tractor. Requires both `range_2` and `mower_3`.

## Example (single category)

```lua
Config.Skills = {
    mower = {
        {
            id = 'mower_1',
            label = 'Turbo Lawnmower I',
            description = 'Increases mowing speed by 15%.',
            icon = 'Waves',
            position = { x = 240, y = 120 },
            requirements = { skills = {'welcome'} },
            upgrades = {},
            price = 1,
            requiredLevel = 2,
            type = 'mowing_speed',
            value = 0.15
        },
        -- mower_2, mower_3 …
    },
    -- other categories …
}
```
