> For the complete documentation index, see [llms.txt](https://liyi2015.gitbook.io/magicgem/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://liyi2015.gitbook.io/magicgem/advance/skills.md).

# 宝石技能

技能配置方法

## **基本配置**

* 宝石技能保存在配置文件夹的skills目录下
* 以yml形式储存，**一段一个技能，段名就是技能名**
* 识别方式：支持四种识别方式
  1. 不做任何配置：用宝石奖励SkillAdd打在装备上的技能，默认是NBT识别
  2. Lore：填写要识别的Lore，武器上有这个Lore时就能够放技能
     * **注意，识别无视颜色且只识别前缀**
       * 也就是说，如果一个Lore是 技能I，另一个是 技能II
       * 则技能II总是会被识别为技能I，因为
       * 技能II = 技能I + I
     * **总而言之，技能的识别Lore文字不能互为前缀，否则只识别短的那个技能。**
     * **这一设计是因为药水BUFF的同一个Lore前缀对应多个等级的药水的缘故，还请理解**
  3. Display：装备显示名
     * 支持颜色代码&
  4. MythicType：识别MMC武器
     * 这个标签是MythicCrucible自动加在装备上的标签
     * MM版本4.13以下，需要在MM武器上写一个空的Skills，才会产生这个标签
* Slot：字符串或字符串列表，限制技能只能在哪些槽位上发动。
  * 槽位的写法与宝石FastUse格式完全相同
* Success：技能发动成功率**表达式**，与宝石成功率写法完全相同
* SuccessTip：技能发动成功的提示信息，与宝石提示信息写法完全相同。如果不写就没有信息
* FailTip：技能发动失败的提示信息，同上
* Cooldown：技能冷却时间，单位为秒
* CooldownTip：冷却时间提示，格式为
  * ```
    位置{p=提示前缀;s=提示后缀;empty=空进度格子样式;full=满进度格子样式;length=进度条长度}
    ```
  * 其中位置同样可以选择ActionBar（动作栏）、Chat（聊天框）、Title（标题）
  * **提示后缀必须要包含浮点数占位符%.nf**
  * 例如，如下配置会在玩家动作栏显示
    * 技能冷却时间:||||||||||||||||||| x.xx秒
  * ```
    CooldownTip: ActionBar{p=&a技能冷却时间;s=&a%.2fs;empty=&f|;full=&a|;length=75}
    ```
* Duration：**持续时间技能专用**，指定这项后，技能中必须要有TimeStartSkill来启动持续时间。单位为秒。
* Skills：字符串列表，与MythicMobs技能类似，一行一个技能
* Conditions：字符串列表，技能施法者条件，与MythicMobs条件类似，一行一个条件
* TriggerConditions：字符串列表，技能触发者条件，与MythicMobs条件类似，一行一个条件
* TargetConditions：字符串列表，技能目标条件，与MythicMobs条件类似，一行一个条件
* **本插件完全兼容MM技能。你可以直接把技能挪到宝石装备库中**

## **触发器**

* 宝石技能有54个触发器，并且支持复合触发信息
* 与MythicMobs一样，触发器均以短波浪线+on开头，跟在技能后面
* **复合触发信息的使用方式为\~on触发器:可触发信息1;可触发信息2;...**
  * 用冒号紧跟触发器，不要加空格
  * 用分号分隔每个触发信息
  * 例如\~onKill:PIG;COW 触发器就能被杀死猪或者牛触发
* 下面是每个触发器和详细说明

  | 触发器               | 触发事件           | 复合触发信息                                                                                                            |
  | ----------------- | -------------- | ----------------------------------------------------------------------------------------------------------------- |
  | Jump              | 跳跃             |                                                                                                                   |
  | Signal            | 指令/mgem signal | 信号名                                                                                                               |
  | Counter           | 计数技能发动         | 计数技能tag                                                                                                           |
  | ShiftSwing        | Shift+左键       |                                                                                                                   |
  | ShiftUse          | Shift+右键使用物品   |                                                                                                                   |
  | ShiftRightClick   | Shift+右键空地     |                                                                                                                   |
  | KillEntity        | 杀死实体           | 杀死的生物类型                                                                                                           |
  | KillMythicMobs    | 杀死MythicMobs怪物 | MythicMobs怪物名                                                                                                     |
  | DamagedProjectile | 被投射物打伤         | 射箭生物类型                                                                                                            |
  | DamagedBlock      | 被方块弄伤          | 伤害类型， [详见网址](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html) |
  | DamagedEntity     | 被实体攻击受伤        | 攻击者生物类型                                                                                                           |
  | Drop              | 丢物品            | 物品材料名                                                                                                             |
  | TridentHit        | 三叉戟**落地**      |                                                                                                                   |
  | Hit               | 投射物**落地**      | 投射物类型                                                                                                             |
  | BowHit            | 弓箭打伤生物         | 目标生物类型                                                                                                            |
  | TridentAttack     | 三叉戟打伤生物        | 目标生物类型                                                                                                            |
  | SnowballAttack    | 雪球打伤生物         | 目标生物类型                                                                                                            |
  | FireballAttack    | 火焰弹打伤生物        | 目标生物类型                                                                                                            |
  | ProjectileAttack  | 投射物打伤生物        | 目标生物类型                                                                                                            |
  | Combat            | 战斗（攻击、受伤）      | 涉及的生物类型                                                                                                           |
  | Teleport          | 传送触发           |                                                                                                                   |
  | Block             | 放置方块           |                                                                                                                   |
  | TridentThrow      | 投掷三叉戟          |                                                                                                                   |
  | Despawn           | 死亡或退出游戏        |                                                                                                                   |
  | Tame              | 驯服生物           | 驯服的生物类型                                                                                                           |
  | Attack            | 攻击             | 目标生物类型                                                                                                            |
  | Shoot             | 射箭             |                                                                                                                   |
  | BlockPlace        | 放置方块           |                                                                                                                   |
  | BlockBreak        | 破坏方块           | 破坏的方块类型                                                                                                           |
  | Consume           | 食用/消耗物品        |                                                                                                                   |
  | Crouch            | 蹲下             |                                                                                                                   |
  | Uncrouch          | 起身             |                                                                                                                   |
  | Damaged           | 受伤             | 攻击者生物类型或伤害类型                                                                                                      |
  | Death             | 死亡             |                                                                                                                   |
  | Interact          | 与实体交互          | 目标实体类型                                                                                                            |
  | Kill              | 杀死生物           | 目标生物类型                                                                                                            |
  | KillPlayer        | 杀死玩家           |                                                                                                                   |
  | Spawn             | 玩家进入游戏或复活      |                                                                                                                   |
  | SplashPotion      | 投扔喷溅或滞留药水      |                                                                                                                   |
  | Swing             | 左键             |                                                                                                                   |
  | Use               | 右键使用           |                                                                                                                   |
  | RightClick        | 右键空地           |                                                                                                                   |
  | Timer             | 定时技能           | 每多少Ticks触发一次                                                                                                      |
  | Fish              | 一切钓鱼事件         | 钓到东西的种类（如果有的话）                                                                                                    |
  | FishBite          | 鱼或者实体咬钩        | 钓到东西的种类（如果有的话）                                                                                                    |
  | FishCatchFish     | 钓起鱼            | 钓到东西的种类（如果有的话）                                                                                                    |
  | FishCatchEntity   | 钓起实体           | 钓到东西的种类（如果有的话）                                                                                                    |
  | FishGround        | 钓钩命中方块         |                                                                                                                   |
  | FishReel          | 收回空钩           |                                                                                                                   |
  | FishFail          | 有鱼咬钩但没钓到       |                                                                                                                   |
  | ArmorEquip        | 穿上装备           |                                                                                                                   |
  | ArmorUnequip      | 脱下装备           |                                                                                                                   |

## **内置技能**

* **注意1：内置技能必须写在宝石技能库中**
* **注意2：MM目标选择器对内置技能无效，内置技能有它自己的目标**

1. **宝石奖励**

   套娃一切宝石奖励

   ```
    - Reward{宝石奖励}
   ```

   * 宝石奖励与前面的写法完全一致
   * 物品奖励会打在发动技能的装备上
   * 玩家奖励会施加给发动技能的玩家
2. **切换技能**

   为同一个装备切换不同技能

   ```
    - Switch{技能1;技能2;技能3}
   ```

   * 只会对触发技能的装备生效
   * 每触发一次，就会切换到下一个技能，原先的技能失效。循环往复。
   * 只能切换NBT识别的（用宝石SkillAdd打上去的）技能，不能切换Lore识别的技能
3. **可切换奖励**

   配合切换技能使用，切换到这个技能组时执行奖励，切走的时候执行拆卸

   ```
    - RewardSwitch{宝石奖励}
   ```

   * 只会对触发技能的装备生效
   * 例如 - RewardSwitch{Enchant{name=DAMAGE\_ALL;level=10}}
   * 则用 - Switch切换到这个技能组时，武器锋利+10；切出时武器锋利-10
4. **药水技能**

   给玩家持续性的原版药水Buff

   ```
    - PotionBuff{type=药水名;level=等级表达式;duration=持续时间秒数表达式;refresh=刷新时间秒数;roman=罗马数字识别} $世界名1:上限1 $世界名2:上限2 @目标
   ```

   * type有别名potion，p，name
   * level有别名l，duration有别名d
   * roman为true时识别罗马数字
   * 药水BUFF只能有两种目标：@self 和 @target
   * 触发器推荐用onTimer
   * 相比用MM制作药水BUFF，使用这个技能有如下的显著优势：
     1. 可以根据装备上的Lore动态读取药水buff等级，无需每种等级写一个技能
     2. 可以设置刷新时间，如果剩余的时间高于这个时间就不刷新
        * 避免反复的伤害吸收、频繁的生命提升
     3. 可以正确处理覆盖，低等级BUFF不会覆盖高等级药水
     4. 可以设置世界药水限制，在指定的世界药水等级自动被压制到某一等级
     5. 异步生效，不卡服
5. **闪现技能**

   顾名思义，瞬移到目标地点

   ```
    - Blink{distance=距离上限表达式} @目标
   ```

   * 目标有九种可选

     | **@entity**   | **闪现到命中的实体** | **@down**  | **向下闪现** |
     | ------------- | ------------ | ---------- | -------- |
     | **@location** | **闪现到目标地点**  | **@left**  | **向左闪现** |
     | **@foward**   | **向前闪现**     | **@right** | **向右闪现** |
     | **@backward** | **向后闪现**     | **@bed**   | **向床闪现** |
     | **@up**       | **向上闪现**     |            |          |
   * 其中location和forward最常用
   * 相比MM技能，本技能可以**一行写闪现**
6. **持续时间技能**
   * **当且仅当技能指定了Duration时有效**
   * 在未开始计时的时候，整个技能都不可使用
   * 你必须写一个开始计时技能才能启动整个技能

     ```
      - TimeStart{tip=技能开始的提示}
     ```

     * 技能开始提示也支持ActionBar 、Chat、Title，格式和宝石奖励的一样
     * 持续时间技能一旦开始，技能组里的其它技能都变得可用且没有冷却
     * 技能一旦开始，持续时间内不能再次开始
   * 你可以再写一个技能来**增加持续时间**

     ```
      - TimeAdd{time=要增加的秒数表达式;tip=提示信息}
     ```

     * 从而做到杀人杀怪增加持续时间
   * 持续时间结束后技能继续冷却
   * 注意，**持续时间内技能的冷却也在计算**，因此加的太多，技能就没有冷却了
   * 相比用MM计分板，本技能的好处在于可以**方便地增加时长**
7. **DEBUFF技能**

   给目标玩家或者生物加上Debuff

   ```
    - Debuff{type=类型;duration=持续时间秒数表达式} @目标
   ```

   * 目标只能是@self和@target
   * type类型有十一种可以选择

     | 名称      | 作用        | 名称         | 作用       |
     | ------- | --------- | ---------- | -------- |
     | USE     | 禁止使用物品    | ATTACK     | 禁止造成伤害   |
     | SHOOT   | 禁止射箭      | JUMP       | 禁止跳跃     |
     | FLY     | 禁飞        | MOVE       | 禁止移动     |
     | BREAK   | 禁止破坏方块    | PLACE      | 禁止放置     |
     | HEAL    | 禁止生命恢复    | TELEPORT   | 禁止传送     |
     | SKILL   | 禁止使用宝石技能  | POTIONBUFF | 禁止药水效果刷新 |
     | CONSUME | 禁止食用或消耗物品 |            |          |
   * 所有Debuff对玩家有效
   * Attack，Shoot，Heal，Teleport对生物有效
   * Paper系列端1.16.以上，Jump对生物也有效
8. **吸血技能**

   百分比吸血

   ```
    - BloodSuck{factor=吸血系数表达式}
   ```

   * factor有别名f，k
   * 必须是有伤害的事件才能附带吸血，因此请使用\~onAttack之类的触发器
   * 吸血系数表达式计算出的系数会被直接乘到伤害上。
     * 如 BlookSuck{k=0.1} \~onAttack 代表一切攻击附带10%吸血
   * 相比MM吸血技能，**本技能不会给玩家额外的MCMMO经验**
9. **计数技能**

   记录触发器触发的次数，次数满足一定条件则触发技能

   ```
    - Counter{condition=逻辑公式;dynamic=变量表达式;persist=是否永久计数;tag=计数器名称;allslot=是否触发全身格子的计数技能}
   ```

   * condition有别名c，dynamic有别名d，persist有别名p
   * 逻辑公式是一个为true或为false的表达式，**其中必须有变量v**，代表触发的次数
     * 如 v%3==0 表示判断v对3取余数，余数为0
   * 逻辑公式里面可以使用变量d，d是物品变量公式，由dynamic指定
     * 如condition=v%(10-d)==0,dynaminc=$LORE:技能等级?0$
     * 意思是，武器上的技能等级为0时，每10次触发一次；为1时，每9次触发一次...
   * persist为true或false，默认为false
     * 为true时，计数会以NBT形式保存在武器上
     * 为false时，计数会存在内存里，服务器重启刷新
   * tag为计数器名。配合触发器\~onCounter使用
   * allslot为true或false，默认为false
     * 为true时，会触发全身的onCounter技能
     * 为false时，只会触发当前装备的onCounter技能
   * 示例：每五下暴击一下

     ```
     Skills:
      - Counter{c=v%5==0;tag=暴击计数} ~onAttack
      - Damage{amount=10} @targetentity ~onCounter:暴击计数
     ```
   * 相比MM计分板，使用本技能的显著优势是**节省工作量**
10. **取消事件**

    取消触发技能的事件

    ```
     - CancelEvent
    ```

    * 本技能与MM相应技能的作用完全相同，**但兼容性更好**
    * 配合复合触发信息，你可以取消更细致的事件。比如
      * 使玩家免疫掉落伤害

    ```
     - CancelEvent ~onDamagedBlock:FALL
    ```

    * 请注意，在Skills中，取消事件技能的前面
      * 不能存在异步技能（需专门指定技能的sync=true）
      * 不能存在延时技能
    * 上述两种情况都会使得取消事件失效

## **MythicMobs兼容**

**技能兼容**

* 宝石技能完全兼容MythicMobs技能，
* 宝石技能库中的技能可以指向任意MythicMobs技能。
* MythicMobs、MythicArtifacts、MythicCrucible也可以用宝石技能库中的技能，**但是宝石特色功能将失效**
  * 宝石内置技能，冷却时间显示，持续时间

**掉落物**

* 可以将宝石作为MythicMobs掉落物
* **只需在怪物配置中加入**

  ```
  Drops:
   - Gem{name=宝石名称}
  ```
* 其它写法与MythicMobs掉落物一致

## MythicMobs附加

宝石插件提供了以下MM附加条件和技能

### **附加条件**

1. NoArmorStand

   阻止技能对盔甲架触发。用法：在技能中加上

   ```
    TargetConditions:
      - NoArmorStand
   ```
2. PvPManager

   只选取开启了PvP的玩家。需要PvPManager支持。建议同时筛选发动者和目标

   ```
   TargetConditions:
      - PvPManager
   Conditions:
      - PvPManager
   ```
3. ResidenceFlag

   判断领地条件。需要Residence支持

   ```
   Conditions:
     - RedidenseFlag{f=要判断的标志}
   ```

### **附加技能**

1. SheildDamage

   对护盾（黄心）造成伤害，但不影响玩家真实血条

   ```
    - ShieldDamage{d=伤害量}
   ```
