# 自定义任务

## 示例任务

EliteMobs 自带一个 `test_quest.yml` 文件的任务，它将很好的阐述 EliteMobs 的任务系统。

*自定义任务位于 `customquests` 文件夹！*

`test_quest.yml`

```
isEnabled: true
customObjectives:
- KILL_CUSTOM:filename=test_boss.yml:amount=1
customRewards:
- filename=magmaguys_toothpick.yml:amount=1:chance=1
name: Kill the Test Boss
questLore: '&cEnd the test boss'' reign of terror!'
```

### 必须配置选项

#### `isEnabled`

`isEnabled: true` 设置是否启用该任务。

#### `customObjectives`

`customObjectives` 这是一个 `列表类型选项`，用于设置任务目标，你需要至少设置一个目标，但没有上限。

每行自定义目标需由如下部分组成：

1. `- KILL_CUSTOM`， `- FETCH_ITEM` 或者 `- DIALOG`： 用于设置目标的类型。`KILL_CUSTOM` 代表击杀指定的自定义怪物，`FETCH_ITEM` 代表获得指定的自定义战利品，`DIALOG` 代表与指定 NPC 对话。
2. `filename=your_filename_here.yml`：用于设置目标的内容，即自定义怪物/自定义战利品或者自定义 NPC 的文件名称。
3. `amount=x`：用于设置目标的数量，NPC 对话需要下一个参数而不是这个，即自定义怪物或者自定义战利品的数量。
4. `dialog=x`：用于设置目标的 NPC 对话。
5. `name=x`：用于设置目标的名称，用于显示给玩家。

***请注意以上各个部分之间用\*\*\*\* ****`:`**** \*\*\*\*符号分开！***

#### `customRewards`

`customRewards` 设置任务的奖励，奖励应该至少有一个，但没有上限。

每行自定义奖励需由如下部分组成：

原版物品：

1. `material=X`：设置物品的 id。
2. `amount=X`：设置物品的数量。
3. `chance=X.Y`：设置获得的几率。例如 `1` = 100% , `0` = 0% 和 `0.5` = 50%。

自定义战利品：

1. `filename=X.yml`：设置物品的文件名称。
2. `amount=X`：设置物品的数量。
3. `chance=X.Y`：设置获得的几率。例如 `1` = 100% , `0` = 0% 和 `0.5` = 50%。

指令：

1. `command=$player (...)`：设置执行的指令，可以使用 `$player` 变量替代为玩家的名称。
2. `amount=X`：设置指令执行的次数
3. `chance=X.Y`：设置获得的几率。例如 `1` = 100% , `0` = 0% 和 `0.5` = 50%。

#### `name`

`name` 设置任务的名称，用于显示。

#### `questLore`

`questLore` 设置任务的 Lore，用于显示。

### 可选配置选项

#### `questAcceptPermission`

`questAcceptPermission` 设置玩家能够接受该任务需要的权限。

#### `questLockoutPermission`

`questLockoutPermission` 设置玩家完成该任务后将会被给予权限。

#### `questLockoutMinutes`

`questLockoutMinutes` 设置玩家在多少分钟后将会被取消 `questLockoutPermission` 选项所给的权限，同时这时玩家将可以再次接受该任务。

#### `temporaryPermissions`

`temporaryPermissions` 设置当完成正在任务途中所给的权限，将会在任务完成后被取消。

#### `questAcceptDialog`

`questAcceptDialog` 设置当玩家接受任务后将进行的对话，是列表类型选项。

#### `questCompleteDialog`

`questCompleteDialog` 设置当玩家完成任务后将进行的对话，是列表类型选项。

#### `questCompleteCommands`

`questCompleteCommands` 设置当玩家完成任务后将执行的指令，是列表类型选项。可以使用变量：`$player`（替换为玩家的名称），`$getX`，`$getY`，`$getZ`（替换为玩家的坐标）。

#### `turnInNPC`

`turnInNPC` 设置该任务绑定的 NPC，同时需要将 NPC 的互动类型设置为接受任务类型，详见 [自定义 NPC](https://docs.superiormc.cn/elitemobs-wiki/pei-zhi/zi-ding-yi-npc) 页面。

#### `questLevel`

`questLevel = 0` 设置任务的等级，用于

#### `trackable`

`trackable = true` 设置该任务是否能够通过任务追踪器追踪最新进度。
