====== Triggers ======
===== 技能触发 =====
----
触发器用于确定如何从怪物技能配置部分中触发技能。
**触发器不能在 组合技能 中使用,也不应该包含在它们中。**触发器只能用于激活 组合技能 本身。
**所有可用触发器的表:**
|**触发器**|**触发机制**|
|onCombat|默认触发|
|onAttack|当生物攻击到东西时|
|onDamaged|当生物受到伤害时|
|onSpawn|当生物刷出时|
|onDespawn|当生物自然消失时|
|onFirstSpawn|第一次从刷怪点生成生物时触发|
|onDeath|当生物死亡|
|onTimer:#|每 # 个刻度(其中 # 是刻度的间隔)|
|onInteract|当生物被右键单击时|
|onKillPlayer|当生物杀死玩家时|
|onPlayerDeath|当玩家死亡时|
|onEnterCombat|当生物进入战斗时(需要开启仇恨表)|
|onDropCombat|当生物离开战斗时(需要开启仇恨表)|
|onChangeTarget|当生物改变目标时(需要开启仇恨表)|
|onExplode|当生物爆炸时(通常只用于苦力怕)|
|onTeleport|当生物传送时(通常只用于末影人)|
|onSignal|当生物到信号时|
|onSignal:[signal]|当生物收到特定信号时|
|onShoot|当生物射击时|
**所有可用的MythicCrucible触发器表:**
付费版可用机制,不搬运详[[https://git.mythiccraft.io/mythiccraft/MythicMobs/-/wikis/Skills/Triggers|见原wiki]]
===== 使用触发器 =====
触发器在 mob 配置的技能部分定义,并且必须在它们前面使用 tilda (~)。在计时器的情况下,还需要以刻为单位的时间。
骷髅火法师:
Type: WITHER_SKELETON
Display: '&6骷髅火法师'
Health: 50
Damage: 0.5
Skills:
- ignite{ticks=100} @target ~onAttack
- skill{s=FireShield} @trigger ~onDamaged 0.1
- skill{s=AOEFire} ~onTimer:300
在这个例子中,生物在近战攻击时也会点燃目标,在受到伤害时使用“FireShield”技能,每 300 刻使用一次“AOEFire”技能。
===== 不使用触发器... =====
技能触发器在确定技能应该何时触发方面提供了更大的灵活性。这是强烈建议您使用触发高级触发,而不是旧的,传统的方法,触发所有的技能。
如果一个技能没有触发器,它将默认为“~onCombat”触发器(如下所示),当这四个基本事件发生时,它将执行:
* 怪物受到伤害
* 怪物造成伤害
* 怪物产生
* 怪物死了
骷髅火法师:
Mobtype: skeleton
Display: '&9A 骷髅火法师'
Health: 100
Damage: 2
Drops:
- DropTable
Skills:
- skill{s=Bash} =10%-90%
在这种情况下,当生物在 10% 到 90% 之间时造成或受到伤害时会触发 Bash 技能。
===== @trigger 目标器 =====
您可能已经注意到在上面的示例中有一个 @trigger 目标器,并在目标器部分中列出。@trigger 将针对触发技能的“原因”,即如果玩家伤害了一个生物并且该生物使用了 onDamage 触发的技能,它将以该玩家为目标。如果一个信号被发送给一个生物,它会以发送信号的生物为目标,依此类推。
==== 详细说明和示例 ====
**~onSpawn**
* 触发技能以在生物生成时执行。
* 这只会发生一次。
* 可与机会参数一起使用,使执行机会低于 100%
* **- skill{s=DamageImmunity} ~onSpawn 0.50** (生物在生成时有 50% 的几率使用伤害免疫技能)
**~onDeath**
* 当生物死亡时触发技能执行。
* 这只会发生一次。
* 可与机会参数一起使用,使执行机会低于 100%
* **- skill{s=SpawnSpiderlings} ~onDeath 1**(生物在死亡时有 100% 的几率使用 SpawnSpiderlings 法术)
**~onAttack**
* 当生物攻击时触发技能执行。
* 这将在生物攻击某物时发生。
* 可以与健康和机会参数一起使用,以进一步定义何时发生。
* **- Skill{s=Bash} ~onAttack <50% 0.1**(生物在攻击时并且生命值低于50%就有 10% 的几率使用 Bash 技能,)
**~onDamaged**
* 当生物受到伤害时触发技能执行。
* 这将在生物受到伤害时发生。
* 可以与健康和机会参数一起使用,以进一步定义何时发生。
* **- Skill{s=FlameShield} ~onDamaged 1**(生物受到伤害时有 100% 的几率使用 FlameShield 技能)
**~onExplode**
* 当生物爆炸时触发技能执行。
* 这通常只会发生一次,除非您设置了预防自杀选项。通常只对苦力怕有效,因为其他生物往往不会爆炸......
* 可与机会参数一起使用,使执行机会低于 100%
* **- Skill{s=SpawnCreeper} ~onExplode 0.25**(生物在爆炸时有 25% 的几率使用 SpawnCreeper 技能)
**~onTeleport**
* 当生物传送时触发技能执行。
* 通常只用于末影人或具有允许他们传送技能的生物。
* 可以与健康和机会参数一起使用,以进一步定义何时发生。
* **- Skill{s=GustOfWind} ~onTeleport <50% 1**(如果生命值低于 50%,生物在传送时有 100% 的几率使用 GustOfWind 法术)
**~onTimer:<刻>**
* 根据计时器触发技能执行。
* 计时器以刻为单位,因此 20 刻等于 1 秒。
* 避免与健康或机会参数一起使用,因为它目前不适用于这些参数。
* 使用 Timer 触发器时必须小心,因为设计不当的技能可能会导致服务器或客户端性能问题。调用复杂语法的计时器特别低的技能可能会导致服务器端性能问题,而大量粒子效果和其他图形密集型事物可能会导致潜在的客户端性能问题。
* **- Skill{s=SingleTargetFire} ~onTimer:200**(生物每 10 秒使用一次 SingleTargetFire 技能)
**~onPlayerKill**
* 当生物杀死玩家角色时触发技能执行。
* 可以与健康和机会参数一起使用,以进一步定义何时发生。
* **- Skill{s=BossRegen} ~onPlayerKill >0 1**(当生物杀死玩家时有 100% 的几率使用 BossRegen 法术)
**~onEnterCombat**
* 当生物放弃战斗时触发技能执行。
* **- Skill{s=BossRegen} ~onDropCombat >0 1**(当生物与玩家或生物战斗时有 100% 的几率使用 BossRegen 技能)
**~onChangeTarget**
* 当生物改变目标时触发技能执行。
* **- Skill{s=Charge} ~onChangeTarget >0 1**(生物在改变目标时有 100% 的几率使用冲锋技能)
**~onInteract**
* 当玩家与他们互动时触发技能执行(右键单击他们)。
* **- Skill{s=QuestDialogue} ~onInteract >0 1**(当玩家交互或右键单击时,生物有 100% 的机会使用 QuestDialogue 技能)
**~onSignal或~onSignal:[信号]**
* 当生物收到信号或只有 :[signal] 特定信号时触发技能执行
* 适用于需要生物之间或玩家与生物之间交流的技能,请参阅[[https://git.mythiccraft.io/mythiccraft/MythicMobs/-/wikis/skills/mechanics/signal|信号技能页面]]。(玩家可以使用 /mm signal 向怪物传递信号)
**~onShoot**
* 当怪物发射弹丸(恶魂/烈焰火球)时触发技能执行。
* - Skill{s=ExplodeParticles} ~onShoot >0 1(当生物发射弹丸时有 100% 的几率使用 ExplodeParticles 技能)