# Electrician

{% hint style="warning" %}
Ma**ke sure to add the necessary items, item images and job names required for the job**
{% endhint %}

***

## 🔤 General Settings

* **`name`**: <mark style="color:yellow;">`@string`</mark>\
  The job name shown in menus and notifications.\
  **Example**: `"Electrician"`
* **`debug`**: <mark style="color:yellow;">`@boolean`</mark>\
  Enables debug mode for logging and testing purposes.
* **`disabled`**: <mark style="color:yellow;">`@boolean`</mark>\
  Disables the job when set to `true`.

***

## 👥 Multiplayer Settings

* **`can_multiplayer`**: <mark style="color:yellow;">`@boolean`</mark>\
  Allows the job to be completed by multiple players in a group.
* **`show_members_blips`**: <mark style="color:yellow;">`@boolean`</mark>\
  Shows map blips for other group members when set to `true`.

***

## 🔄 Bucket Ped Sync Settings

```lua
["bucket_sync_cooldown"] = 5000, -- in milliseconds
["bucket_ped_positions"] = {
  ["bone"] = "bucket",
  ["coords"] = vec3(0.0, -0.35, 0.50),
  ["rotation"] = vec3(0.0, 0.0, 0.0),
}
```

* **`bucket_sync_cooldown`**: <mark style="color:yellow;">`@number`</mark> (in ms)\
  Time between ped position sync updates while in the bucket (e.g., cherry picker).
* **`bucket_ped_positions`**:\
  Determines how a ped is positioned inside the bucket:
  * **`bone`**: <mark style="color:yellow;">`@string`</mark> – Bone to attach the ped to (e.g., `"bucket"`).
  * **`coords`**: <mark style="color:yellow;">`@vector3`</mark> – Position offset within the bucket.
  * **`rotation`**: <mark style="color:yellow;">`@vector3`</mark> – Rotation offset applied to the ped model.

***

## 📍 Job Menu

```lua
["menu"] = {
  ["job_menu"] = vec3(x, y, z),
  ["interaction_distance"] = float,
  ["blips"] = { ... }
}
```

* **`job_menu`**: <mark style="color:yellow;">`@vector3`</mark>\
  Coordinates for accessing the job menu.
* **`interaction_distance`**: <mark style="color:yellow;">`@float`</mark>\
  Interaction range to open the job menu.
* **`blips`**:\
  Map blip configuration for the job center.
  * `show`: <mark style="color:yellow;">`@boolean`</mark>
  * `label`: <mark style="color:yellow;">`@string`</mark>
  * `sprite`: <mark style="color:yellow;">`@number`</mark>
  * `color`: <mark style="color:yellow;">`@number`</mark>
  * `scale`: <mark style="color:yellow;">`@float`</mark>

***

## 🚚 Vehicle Settings

```lua
["car_settings"] = {
  ["model"] = "vehicle_model",
  ["spawnCoords"] = vec4(x, y, z, heading)
}
```

* **`model`**: <mark style="color:yellow;">`@stri`</mark>`ng`\
  Vehicle model name used for the job.\
  **Example**: `"utillitruck4"`
* **`spawnCoords`**: <mark style="color:yellow;">`@vector4`</mark>\
  Coordinates and heading to spawn the utility truck.

***

## 🧰 Mission List

```lua
["mission_list"] = {
  [1] = {
    ...
  }
}
```

Each entry in the list defines a repair or maintenance task set.

**Mission Fields**

* **`title`**: <mark style="color:yellow;">`@string`</mark>\
  The mission title displayed to the player.
* **`reward`**: <mark style="color:yellow;">`@number`</mark>\
  Total reward given upon mission completion.
* **`split_reward_members`**: <mark style="color:yellow;">`@boolean`</mark>\
  Whether to split the reward among group members.

***

## ⏱️ Timer Settings

```lua
["timer"] = {
  ["extra_time"] = number,
  ["mission_time"] = number,
  ["deducted_per_min"] = number,
}
```

* **`extra_time`**: <mark style="color:yellow;">`@number`</mark> (ms)\
  Extra time allowed after the mission ends before failure.
* **`mission_time`**: <mark style="color:yellow;">`@number`</mark> (ms)\
  Total time allowed to complete the mission.
* **`deducted_per_min`**: <mark style="color:yellow;">`@number`</mark>\
  Amount deducted from reward per extra minute.

***

## 🧍 Animation Settings

```lua
["animation"] = {
  ["duration"] = number,
  ["flag"] = number,
  ["dict"] = "animation_dict",
  ["name"] = "animation_name",
}
```

* **`duration`**: <mark style="color:yellow;">`@number`</mark>\
  Animation duration (`-1` for looping indefinitely).
* **`flag`**: <mark style="color:yellow;">`@number`</mark>\
  Animation flag (controls behavior like freezing position, looping, etc.).
* **`dict`**: <mark style="color:yellow;">`@string`</mark>\
  Animation dictionary.
* **`name`**: <mark style="color:yellow;">`@string`</mark>\
  Animation name inside the dictionary.

***

## 🔌 Maintenance Locations

```lua
["maintenance_locations"] = {
  [1] = {
    ["type"] = "FixCables" or "FuseReplace",
    ["coords"] = vec4(x, y, z, h),
    ["radius"] = float,
    ["ptfx"] = {
      ["class"] = "ptfx_asset",
      ["scale"] = number,
      ["effect"] = "effect_name",
      ["coords"] = vec3(x, y, z)
    }
  },
  ...
}
```

Each maintenance point includes:

* **`type`**: <mark style="color:yellow;">`@string`</mark>\
  Type of task to be completed. Valid types:
  * `"FixCables"` – Repair broken electrical lines.
  * `"FuseReplace"` – Replace a blown fuse.
* **`coords`**: <mark style="color:yellow;">`@vector4`</mark>\
  Position and heading for the maintenance location.
* **`radius`**: <mark style="color:yellow;">`@float`</mark>\
  Interaction range around the location.
* **`ptfx`**:\
  Particle effect settings for electrical visuals:
  * `class`: Particle effect asset class (e.g., `"core"`)
  * `scale`: Particle scale multiplier.
  * `effect`: Particle name (e.g., `"ent_ray_prologue_elec_crackle"`)
  * `coords`: Particle position.
