目录

技能


技能是 MythicMobs 的一个组成部分。所有生物(或物品,如果您有Artifacts附加组件)都能够拥有各种类型的技能,这些技能可以在不同情况下的不同条件下触发。MythicMob 的技能系统很简单,一旦你习惯了它并且非常灵活,甚至可以用来从 Minecraft 中最流行的 MMORPG 中重新创建 Boss。 技能组(包括许多技能链)必须存储在Skills文件夹中以文档通用格式(.txt .yml 等)结尾的任何文档中 技能由几个不同的部分组成:

入门

那么什么是技能呢? 技能由技能机制或“基础技能”组成,它们是 MythicMobs 自带的简单的基本技能。每个技能机制都在生物的Skills部分中调用。让我们看一个例子:

  1. FieryZombie:
  2.   Type: ZOMBIE
  3.   Display: 'Fiery Zombie'
  4.   Health: 50
  5.   Skills:
  6. - mechanic 1
  7. - skill{skill=Skill group name}
  8. - skill{s=Skill group name}
  9. - skill:Skill group name}
  10. - etc

每个技能机制都分配给列表中的生物,例如上面的列表。但是真正的技能会是什么样子呢?这是一个真实的例子:

  1. FieryZombie:
  2.   Type: ZOMBIE
  3.   Display: 'Fiery Zombie'
  4.   Health: 50
  5.   Skills:
  6. - ignite{ticks=100} @target ~onAttack <50% 0.5

哟嚯!这啥玩意儿?让我们来看看是什么构成了这个技能:

  1. Skills:
  2. - mechanic{option=value} @[targeter] ~on[trigger] [health_modifier] [chance]

这可能看起来仍然很吓人,但每个部分本身都非常简单,有些甚至是可选的。让我们分别分解每个部分!

技能机制

技能的第一个也是最重要的部分是机制。这就是您想要发生的事情,这是您正在执行的基本技能。它可能造成伤害,或使某些东西着火,或引起闪电……您可以使用许多不同的机制。有两种主要类型的机制:针对实体的机制和针对坐标的机制。有些可以同时针对两者,或两者都不针对。 大多数技能也有选择。它们直接出现在技能名称之后,并用花括号 {} 括起来。每个选项由分号 (;) 分隔。

  1. Skills:
  2. - mechanic{option=value;option=value;option=value}

如果您愿意,您也可以扩展语法以提高可读性,但保持正确的缩进非常重要,否则 YAML 会被打乱。

  1. Skills:
  2. - mechanic{
  3. option=value;
  4. option=value;
  5. option=value;
  6. }

设置机制就像确定您要使用的机制并插入您想要的选项一样简单。大多数选项都有默认值并且是可选的。所以如果你想让某人着火 5 秒,你可以使用点燃机制并将ticks选项设置为 100(一秒有 20 ticks),

  1. Skills:
  2. - ignite{ticks=100}

目标对象

目标是实施技能的另一个核心部分。目标是“您希望技能命中的目标”。定位器的类型很多,大多数可以分为定位“实体”或“位置”。为您想要做的事情选择正确的目标是很重要的。这是所有目标的列表

瞄准器会直接跟随技能线中的机制,并且总是以 @ 符号为前缀。有些人也可以有自己的选择,也可以在瞄准器之后用花括号括起来。

  1. Skills:
  2. - mechanic{option=value} @targeter{options=value}

回到我们之前的例子,假设你想让生物的目标着火。你只需这样做…

  1. Skills:
  2. - ignite{ticks=100} @target

或者您可能希望它让附近的所有玩家着火。让我们说在 5 码半径内……

  1. Skills:
  2. - ignite{ticks=100} @PlayersInRadius{r=5}

请记住,目标 是您想要定位的对象。

技能触发器

触发器也是技能中非常重要的一部分。触发器确定“是什么导致此技能发生”。 触发器还与特定的目标对象 @trigger交互,后者与由其他实体触发的某些目标对象一起使用。 触发器直接在目标之后,通常以~on和触发器名称开头。

  1. Skills:
  2. - mechanic{option=value} @targeter{options=value} ~onTrigger

回到我们之前的示例,假设您希望该触发器在生物攻击其目标时触发,因此它的近战攻击也会触发。

  1. Skills:
  2. - ignite{ticks=100} @target ~onAttack

注意:项目有一组不同的触发器。单击此处查看哪些触发器适用于 Artifacts。原wiki没写

Health Modifiers

血量修正是一种特殊类型的条件,出现在触发器之后。这些使您可以轻松设置技能仅执行的范围,并且完全是可选的。血量修正有几种简单的形式。这里有些例子:

Health Modifiers 直接在触发器之后,并以=<>为前缀,具体取决于您要使用的范围。

  1. Skills:
  2. - mechanic{option=value} @targeter{options=value} ~onTrigger =HealthModifier

回到我们之前的例子,假设您希望该技能仅在生物低于 50% 的生命值时起作用:

  1. Skills:
  2. - ignite{ticks=100} @target ~onAttack <50%

概率/机会

机会是另一个可以添加到技能线的简单且可选的条件。机会总是放在技能线上的最后一件事,是一个简单的十进制数,其中 1.0 是 100%,0.5 是 50%,0 是 0%。

所以总结一下这个例子,假设你希望这个触发器只在 50% 的近战攻击中触发:

  1. Skills:
  2. - ignite{ticks=100} @target ~onAttack <50% 0.5

技能参数(高级功能)

技能参数是一项新功能,可让您更轻松地创建通用技能并将参数从其他技能传递给它们。如果这听起来令人困惑,这里有一个例子! 目前大多数人有很多类似的伤害技能,只是针对他们所有不同的怪物稍微调整了一下伤害的轻微差异,但除此之外他们做的事情基本上是一样的。

这样做的旧方法:

  1. ShadowDamage20:
  2.   Skills:
  3. - damage{amount=20}
  4. - some shadowy effect
  5.  
  6. Mob1:
  7.   Skills:
  8. - skill:ShadowDamage20 ~onAttack

通过技能参数,我们可以将所有这些组合成一个技能!新方式:

  1. ShadowDamage:
  2.   Skills:
  3. - damage{amount=<skill.damage>}
  4.  
  5. Mob1:
  6.   Skills:
  7. - skill:ShadowDamage{damage=20} ~onAttack

这个小怪仍然会对目标造成20点伤害。 “技能参数”系统会将技能/高级技能机制中的任何选项(特定于它的选项除外)传递到技能树中,您以后可以在其中引用它们。如果后面的技能传递了相同的参数,它将覆盖它。这些可以在任何支持占位符的地方使用。

把它全部包起来! 如您所见,虽然原始技能看起来令人生畏,但将其分解成碎片会使事情变得简单得多。 一旦您掌握了使用单个基本技能的窍门,您就可以使用高级技能将它们组合成更复杂的技能。这将在后面的文章中介绍。