====== 技能 ======
----
{{:插件手册:mythicmobs:mm-等级.jpg?600|}}
技能是 MythicMobs 的一个组成部分。所有生物(或物品,如果您有Artifacts附加组件)都能够拥有各种类型的技能,这些技能可以在不同情况下的不同条件下触发。MythicMob 的技能系统很简单,一旦你习惯了它并且非常灵活,甚至可以用来从 Minecraft 中最流行的 MMORPG 中重新创建 Boss。
技能组(包括许多技能链)必须存储在''Skills''文件夹中以文档通用格式(.txt .yml 等)结尾的任何文档中
技能由几个不同的部分组成:
* [[插件手册:mythicmobs:技能:机制列表|Mechanics]] 技能机制列表
* [[插件手册:mythicmobs:技能:特效|Effects]] 技能特效
* [[插件手册:mythicmobs:技能:瞄准目标|Targeters]] 技能瞄准的目标
* [[插件手册:mythicmobs:技能:触发器|Triggers]] 技能触发器
* [[插件手册:mythicmobs:技能:条件|Conditions]] 技能触发条件
===== 入门 =====
那么什么是技能呢?
技能由技能机制或“基础技能”组成,它们是 MythicMobs 自带的简单的基本技能。每个技能机制都在生物的''Skills''部分中调用。让我们看一个例子:
FieryZombie:
Type: ZOMBIE
Display: 'Fiery Zombie'
Health: 50
Skills:
- mechanic 1
- skill{skill=Skill group name}
- skill{s=Skill group name}
- skill:Skill group name}
- etc
每个技能机制都分配给列表中的生物,例如上面的列表。但是真正的技能会是什么样子呢?这是一个真实的例子:
FieryZombie:
Type: ZOMBIE
Display: 'Fiery Zombie'
Health: 50
Skills:
- ignite{ticks=100} @target ~onAttack <50% 0.5
哟嚯!这啥玩意儿?让我们来看看是什么构成了这个技能:
Skills:
- mechanic{option=value} @[targeter] ~on[trigger] [health_modifier] [chance]
这可能看起来仍然很吓人,但每个部分本身都非常简单,有些甚至是可选的。让我们分别分解每个部分!
===== 技能机制 =====
技能的第一个也是最重要的部分是机制。这就是您想要发生的事情,这是您正在执行的基本技能。它可能造成伤害,或使某些东西着火,或引起闪电……您可以使用[[插件手册:mythicmobs:技能:机制列表|许多不同的机制]]。有两种主要类型的机制:针对实体的机制和针对坐标的机制。有些可以同时针对两者,或两者都不针对。
大多数技能也有选择。它们直接出现在技能名称之后,并用花括号 {} 括起来。每个选项由分号 (;) 分隔。
Skills:
- mechanic{option=value;option=value;option=value}
如果您愿意,您也可以扩展语法以提高可读性,但保持正确的缩进非常重要,否则 YAML 会被打乱。
Skills:
- mechanic{
option=value;
option=value;
option=value;
}
设置机制就像确定您要使用的机制并插入您想要的选项一样简单。大多数选项都有默认值并且是可选的。所以如果你想让某人着火 5 秒,你可以使用点燃机制并将''ticks''选项设置为 100(一秒有 20 ticks),
Skills:
- ignite{ticks=100}
===== 目标对象 =====
目标是实施技能的另一个核心部分。目标是“您希望技能命中的目标”。定位器的类型很多,大多数可以分为定位“实体”或“位置”。为您想要做的事情选择正确的目标是很重要的。这是[[插件手册:mythicmobs:技能:瞄准目标|所有目标的列表]]。
瞄准器会直接跟随技能线中的机制,并且总是以 @ 符号为前缀。有些人也可以有自己的选择,也可以在瞄准器之后用花括号括起来。
Skills:
- mechanic{option=value} @targeter{options=value}
回到我们之前的例子,假设你想让生物的目标着火。你只需这样做...
Skills:
- ignite{ticks=100} @target
或者您可能希望它让附近的所有玩家着火。让我们说在 5 码半径内......
Skills:
- ignite{ticks=100} @PlayersInRadius{r=5}
请记住,目标 是您想要定位的对象。
===== 技能触发器 =====
触发器也是技能中非常重要的一部分。触发器确定“是什么导致此技能发生”。
触发器还与特定的目标对象 @trigger交互,后者与由其他实体触发的某些目标对象一起使用。
触发器直接在目标之后,通常以~on和触发器名称开头。
Skills:
- mechanic{option=value} @targeter{options=value} ~onTrigger
回到我们之前的示例,假设您希望该触发器在生物攻击其目标时触发,因此它的近战攻击也会触发。
Skills:
- ignite{ticks=100} @target ~onAttack
注意:项目有一组不同的触发器。单击此处查看哪些触发器适用于 Artifacts。原wiki没写
===== Health Modifiers =====
血量修正是一种特殊类型的条件,出现在触发器之后。这些使您可以轻松设置技能仅执行的范围,并且完全是可选的。血量修正有几种简单的形式。这里有些例子:
* ** =90%** - 生物在达到 90% 生命值后会触发一次技能
* **<50%** - 生物只会触发低于 50% 生命值的技能
* **=30%-50%** - 生物只会在 30% 到 50% 生命值之间触发技能
* **<2000** - 生物只会在 HP<2000 触发技能
* **>500** - 生物只会在 HP>500 触发技能
Health Modifiers 直接在触发器之后,并以''=''、''<''或''>''为前缀,具体取决于您要使用的范围。
Skills:
- mechanic{option=value} @targeter{options=value} ~onTrigger =HealthModifier
回到我们之前的例子,假设您希望该技能仅在生物低于 50% 的生命值时起作用:
Skills:
- ignite{ticks=100} @target ~onAttack <50%
===== 概率/机会 =====
机会是另一个可以添加到技能线的简单且可选的条件。机会总是放在技能线上的最后一件事,是一个简单的十进制数,其中 1.0 是 100%,0.5 是 50%,0 是 0%。
所以总结一下这个例子,假设你希望这个触发器只在 50% 的近战攻击中触发:
Skills:
- ignite{ticks=100} @target ~onAttack <50% 0.5
===== 技能参数(高级功能) =====
技能参数是一项新功能,可让您更轻松地创建通用技能并将参数从其他技能传递给它们。如果这听起来令人困惑,这里有一个例子!
目前大多数人有很多类似的伤害技能,只是针对他们所有不同的怪物稍微调整了一下伤害的轻微差异,但除此之外他们做的事情基本上是一样的。
**这样做的旧方法:**
ShadowDamage20:
Skills:
- damage{amount=20}
- some shadowy effect
Mob1:
Skills:
- skill:ShadowDamage20 ~onAttack
**通过技能参数,我们可以将所有这些组合成一个技能!新方式:**
ShadowDamage:
Skills:
- damage{amount=}
Mob1:
Skills:
- skill:ShadowDamage{damage=20} ~onAttack
这个小怪仍然会对目标造成20点伤害。
“技能参数”系统会将技能/高级技能机制中的任何选项(特定于它的选项除外)传递到技能树中,您以后可以在其中引用它们。如果后面的技能传递了相同的参数,它将覆盖它。这些可以在任何支持占位符的地方使用。
**把它全部包起来!**
如您所见,虽然原始技能看起来令人生畏,但将其分解成碎片会使事情变得简单得多。
一旦您掌握了使用单个基本技能的窍门,您就可以使用高级技能将它们组合成更复杂的技能。这将在后面的文章中介绍。