跳到主要内容

创建Boss阶段

Boss阶段是自定义Boss的子机制。这个阶段背后的系统非常灵活和强大,需要专门的说明来确保您能充分利用此功能。

Boss阶段如何工作?

可以使用以下配置格式向EliteMobs中的任何自定义Boss添加Boss阶段:

phases:
- phase_2_boss.yml:0.X
- phase_3_boss.yml:0.Y

注意:您最初生成的Boss(包含列出所有其他阶段的phases:条目)是第1阶段Boss。第1阶段Boss文件不应在其自己的phases:条目中列出自己。

此机制背后的基本意图是允许管理员在战斗期间更改自定义Boss属性。通过使用上述配置格式,您可以完全更改各阶段之间的配置文件,这意味着您可以更改99.99%的属性 - 如技能、伤害倍数、生命值倍数、实体类型、伪装、穿戴的盔甲...

为了实现这一点,EliteMobs会在战斗期间删除您的Boss并立即用下一阶段的版本替换它。这个过程是瞬时的,所以往往看起来非常流畅 - 除非您想故意让它看起来很华丽。Boss在过渡后会获得1秒的战斗宽限期,以确保视觉效果的流畅。

示例

以这个示例阶段Boss为例:

文件:phase_1_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: STRAY
powers:
- attack_gravity.yml
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30

文件:phase_2_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.yml
- arrow_fireworks.yml

文件:phase_3_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: WITHER_SKELETON
powers:
- arrow_rain

这构成了一个有效的阶段Boss。如果您生成phase_1_boss.yml,它将生成一个具有上述属性的流浪者。在受到伤害降至其生命值的_60%_后,它将立即在同一位置被phase_2_boss.yml中形成的自定义Boss替换,因为配置文件声明了- phase_2_boss.yml:0.60phase_2_boss.yml是该自定义Boss的文件名,0.60是60%生命值)。_请注意,第2阶段Boss将以其60%的生命值生成,因为这是它转变到该阶段的时间。_Boss将拥有phase_2_boss.yml文件中列出的技能。一旦第2阶段Boss受到伤害降至其生命值的30%,它就会生成为第3阶段设置的Boss。请注意,第3阶段的技能与之前的技能无关 - 您可以完全更改各阶段之间的技能,就像几乎所有其他属性一样。

高级

继承机制

以下是各阶段之间不会改变的内容列表:

  • 链中的第一个阶段Boss决定了Boss将经历哪些阶段,这意味着您不应该为该阶段中的其他Boss放置阶段条目。

  • 威胁表/伤害表保持不变,这意味着战利品分配和高级仇恨系统不受阶段变化的影响

  • 切换阶段是基于损失的生命值百分比,该百分比在各阶段之间保留。这意味着如果您的Boss设置为在50%生命值时进入第2阶段,那么将替换第1阶段Boss的Boss仍将处于50%生命值。这也意味着每个阶段可以有完全不同的生命值量而不会引起问题。

  • 如果阶段Boss通过默认的脱离战斗Boss再生系统治疗回满血,则会恢复到第1阶段

  • 同时也是区域Boss的阶段Boss在所有阶段共享相同的拴绳半径和超时机制,并将在重生计时器结束后作为第1阶段Boss重生。重生冷却时间和其他区域Boss设置始终取自第1阶段Boss配置。

阶段特定生成位置

默认情况下,Boss在各阶段之间过渡时保持在其当前位置。但是,您可以使用phaseSpawnLocation设置使Boss在进入某个阶段时传送到特定位置:

文件:phase_2_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.yml
- arrow_fireworks.yml
phaseSpawnLocation: world_name,100,64,100,0,0

您也可以在保持Boss在同一世界的同时传送它:

phaseSpawnLocation: same_as_boss,100,64,100,0,0

这对于创建戏剧性的阶段过渡非常有用,其中Boss传送到不同的竞技场或位置。

警告

以下是一些机制的列表,这些机制的工作方式最初可能是反直觉的:

  • 如果阶段Boss在任何阶段被杀死,它将掉落该阶段的战利品。这意味着如果有人设法太快杀死阶段Boss(一击),它实际上会死亡并掉落为该Boss文件配置的战利品,这不一定是最后阶段的战利品。您可以通过将战利品表设置为该阶段Boss的所有Boss文件相同来解决此问题,或者确保您的阶段Boss有足够的HP,以至于不可能仅用几次攻击就杀死它们。或者,您可以为能够跳过阶段的人提供特殊的战利品表。

  • 由于阶段Boss实际上会在战斗期间导致自定义Boss生成,因此它们在生成时将执行整个生成例程。因此,在涉及生成消息和生成时运行的命令时要小心。此外,阶段Boss在改变阶段时不会死亡,它们只是被其他东西交换。这意味着死亡时运行的命令只会为最后一个阶段Boss运行,或者如果玩家通过造成足够的伤害设法跳过一个阶段。生成时运行的命令可用于挂钩到阶段变化。*注意:*由于再生到满血而导致Boss重置到第1阶段时,不会发送生成消息。但是,在战斗期间过渡到第2、3等阶段时,以及区域Boss在冷却后重生时,会发送生成消息。

  • 阶段Boss可以在各阶段之间骑乘或停止骑乘。如果阶段Boss在坐骑死亡之前被杀死,坐骑将持续到下一阶段。如果Boss再生回满血,坐骑将被删除,Boss将变为非骑乘状态,除非它配置为在第1阶段骑乘实体。

  • 由于在各阶段之间会生成新的自定义Boss,因此一次性生成机制在各阶段之间和满血时重置。

提示和技巧

  • 您可以利用装备和实体类型可以在整个战斗过程中改变的事实,使Boss在整个战斗中看起来越来越(或越来越不)危险

  • 虽然可以,但除非有特定的设计目标,否则最好不要让阶段Boss的技能在各阶段之间变化太大,因为玩家更有可能享受在整个战斗中感觉自然的进展。

  • 您可以使用onSpawn命令在各阶段之间运行命令

  • 您可以使用song配置选项为每个阶段设置不同的音乐。当Boss进入新阶段时,音乐将自动过渡。

  • 阶段可用于将Boss从近战模式切换到远程模式,反之亦然

  • 阶段Boss被设计为拥有大量HP的强大Boss。它们通常最适合作为地下城的最终Boss遭遇战或作为大型世界Boss。

  • 在设计遭遇战时,请记住,玩家可能不会在各阶段之间杀死增援部队。

  • Boss可以有任意数量的阶段,但阶段越多,它们就需要越多的生命值来使每个阶段都有意义。

API集成

对于插件开发者:当Boss在各阶段之间过渡时,EliteMobs会触发ElitePhaseSwitchEvent。此事件可用于在阶段过渡期间创建自定义行为或效果:

@EventHandler
public void onPhaseSwitch(ElitePhaseSwitchEvent event) {
CustomBossEntity boss = event.getCustomBossEntity();
PhaseBossEntity phaseBoss = event.getPhaseBossEntity();
// Your custom logic here
}