====== 技能 ====== ---- {{:插件手册: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点伤害。 “技能参数”系统会将技能/高级技能机制中的任何选项(特定于它的选项除外)传递到技能树中,您以后可以在其中引用它们。如果后面的技能传递了相同的参数,它将覆盖它。这些可以在任何支持占位符的地方使用。 **把它全部包起来!** 如您所见,虽然原始技能看起来令人生畏,但将其分解成碎片会使事情变得简单得多。 一旦您掌握了使用单个基本技能的窍门,您就可以使用高级技能将它们组合成更复杂的技能。这将在后面的文章中介绍。