跳到主要内容

创建自定义增援

如果你有兴趣在战斗中召唤精英怪来增援某个 Boss,本指南将对此进行详细介绍。

创建自定义 Boss 的步骤:

  1. 创建你的主自定义 Boss,由它来召唤你的自定义 Boss
  2. 创建一个用作增援的自定义 Boss。请记住,自定义 Boss 可以比原版怪物更强,但也可以更弱。
  3. 将正确的增援行添加到配置文件中

创建增援行

假设你有一个采用以下格式的自定义 Boss:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua

而你想为它添加增援。这样的一条增援可能如下所示:

- summonType:ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

要使其生效,请将它添加到 powers 列表中:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

现在增援已添加到 Boss 实体上。不过,正如你所见,这里有若干可以自定义的选项。下面我们来逐一介绍。

所有自定义增援选项

提示:你也可以使用 EliteScript 来召唤增援,更多信息见此处

summonType

这是一个必填字段。它设定增援应在何时生成。

KeyValuesDefault
summonTypeSpecial [1]无(必填)
示例
summonType: ON_HIT

Special [1]

Key描述
ONCE在 Boss 第一次被击中时生成一次增援。(可依赖百分比几率触发)
ON_HIT每当 Boss 被击中时都生成增援(可依赖百分比几率触发)
ON_COMBAT_ENTER当 Boss 进入战斗时生成增援 (1)
ON_COMBAT_ENTER_PLACE_CRYSTAL特殊:这专门用于在 Boss 进入战斗时为龙战放置末影水晶 (1)
ON_DEATH当 Boss 死亡时生成增援
GLOBAL为与 Boss 处于同一世界的每个玩家生成增援。无论玩家离 Boss 多远,增援都会在玩家附近生成。系统强制实行每位在线玩家 30 个增援的数量上限,以防止服务器过载。只要 Boss 处于战斗中且未达到上限,增援就会每 10 秒(200 刻)生成一次。这需要设置 customSpawn 字段才能生效!

(1) Boss 在被玩家击中或在范围内检测到玩家时进入战斗。


filename

这是一个必填字段,因为它设定应生成哪个增援。使该字段成为必填的唯一例外是使用 summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL 设置时,因为末影水晶不是精英怪。

KeyValuesDefault
filenameFilenamenone
示例
filename: test_boss.yml

重要: filename 必须引用一个已存在的 Boss 配置文件。如果该文件不存在,增援将在 Boss 生成期间被静默忽略。请始终确认你的增援 Boss 文件已正确创建并位于 custombosses 文件夹中。


最低可用性

仅凭 summonType: SUMMON_TYPEfilename: filename.yml 就足以创建一个自定义增援。以下示例对此进行了演示。

注意: 配置键不区分大小写。summonTypeSUMMONTYPE(或任何其他大小写形式)都能正常工作。

示例
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

不过,如果你想要或需要更复杂的设置,请继续阅读下方内容,了解这些选项还能做些什么。


chance

这是一个可选配置字段,用于配合 summonTypeONCEON_HIT 选项。它表示当 Boss 被击中时生成自定义增援的几率。

KeyValuesDefault
chanceDouble1.0
示例
chance: 0.5

表示有 50% 的几率生成自定义增援。

chance 会在每一次符合条件的命中上独立掷点 —— 它才是控制 ON_HIT 增援数量的真正调节旋钮。一次命中符合条件的前提是:伤害事件未被取消、Boss 拥有启用了 AI 的存活实体,并且该次命中造成了至少 3 点伤害

chance 过去会被不相关的冷却所限制

ON_HIT 增援是刻意不参与技能冷却系统的,但直到不久前,这种"不参与"只跳过了一个该技能从未设置过的按技能标志,而整个 Boss 级别的冷却仍会拒绝该次命中。任何其他技能触发都会抬起那个 Boss 级标志 —— 包括每一个带 Cooldowns.global 条目的 EliteScript,以及每一个调用 cooldowns.set_global(...) 的 Lua 技能。在脚本密集的 Boss 上,这些时间窗口几乎连成一片,因此增援在战斗的大部分时间里被静默抑制,而控制台上完全没有任何输出。

此问题已修复:现在任何形式的冷却都不会再拦截 ON_HIT 增援。如果你曾因为某个 Boss 召唤得太少而把 chance 调低作为补偿,请重新检查它 —— 现在它触发的频率会远高于从前。

诊断一个从不生成的增援

打开 /em debug 并攻击该 Boss。EliteMobs 会在 [CustomSummon] 标签下追踪整条路径,区分出"ON_HIT 监听器根本没有触发"、"某个特定的判定条件拒绝了这次命中"以及"召唤已执行但生成静默地什么都没产出"(区块未加载、保护插件,或者实体类型被拒绝)。除非开启了调试,否则该追踪是空操作,因此在正常运行时没有任何开销。


location

location: x,y,z 是一个可选配置字段,允许管理员将增援的位置偏移若干个方块。以下是关于此选项你需要了解的关键概念:

偏移位置是相对的。 这意味着 location: 0,10,0 会在 Boss 正上方恰好 10 个方块处生成 Boss,而不是在世界坐标 0,10,0 处。

对于区域型 Boss,相对位置有所不同。 区域型 Boss 总是以其生成点作为相对位置的原点,这意味着如果你知道 Boss 的生成点在哪里并数好方块,就可以让增援 Boss 在特定位置生成。世界缚束者(Binder of Worlds)巢穴正是依靠这一点,无论龙 Boss 在哪里,都能在极其精确的方块位置生成挑战塔的 Boss。

如果你测量距离时出错,Boss 会生成在方块内部。

KeyValuesDefault
locationStringnone
示例
location: 0,10,0

对于非区域型自定义 Boss,无论它在哪里,都会在 Boss 正上方恰好 10 个方块处生成增援。

对于区域型自定义 Boss,无论 Boss 在哪里,都会在区域型 Boss 的生成点正上方恰好 10 个方块处生成增援。

重要提示:这专门是 summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL 的必填字段!


lightningRod

这是一个仅对 summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL 有用的特殊设置。它让末影水晶具备在延迟后用闪电劈击周围地面的能力。该水晶会被标记为“精英水晶”,并继承 Boss 当前的战斗目标。水晶本身不会持久存在,若 Boss 死亡或脱离战斗,它会被移除。

它不能与其他自定义增援一起使用,因为那些增援应通过技能来实现此类能力。

KeyValuesDefault
lightningRodBooleanfalse
示例
lightningRod: false

inheritAggro

这是一个可选配置字段,使自定义增援继承 Boss 的威胁等级。

当你希望生成的增援以造成伤害最多的人为目标时,这尤其有用。

KeyValuesDefault
inheritAggroBooleanfalse
示例
inheritAggro: false

amount

这是一个可选配置字段,设定生成的增援数量。

KeyValuesDefault
amountInteger1
示例
amount: 1

spawnNearby

这是一个可选配置字段,设定自定义增援是否应在附近生成,而不是在 Boss 正上方或某个特定相对位置生成。

在一个 30x30 方块的区域内生成(以 Boss 为中心,在 X 和 Z 轴上各 ±15 个方块)。系统会尝试最多 30 次以找到一个有效的地面高度生成位置,并兼顾地形起伏。如果尝试 30 次后仍未找到有效位置,增援将在 Boss 的确切位置生成。

KeyValuesDefault
spawnNearbyBooleanfalse
示例
spawnNearby: false

inheritLevel

这是一个可选配置字段,设定自定义增援是否应继承它所增援的自定义 Boss 的等级。

KeyValuesDefault
inheritLevelBooleanfalse
示例
inheritLevel: false

customSpawn

这是一个仅用于全局增援的配置字段。它使用自定义生成点的设置来设定增援能够在何处生成。

这可以用来让增援能够在地表、有光照的地方、特定生物群系等处生成。更多详情请查看 自定义生成点 的 Wiki 页面。

KeyValuesDefault
customSpawnFilenamenone
示例
customSpawn: normal_surface_spawn.yml

difficultyID

将该增援条目限制在特定的实例地下城难度上。取值为一个难度名称(或它们的列表),需与地下城包中定义的难度相匹配。

KeyValuesDefault
difficultyIDString 或字符串列表none

如果该列表非空,并且 Boss 正运行在某个实例地下城中、而其当前生效的难度不在列表内,那么整个增援条目会在被解析之前就被丢弃。在实例地下城之外,该键不起作用,条目始终生效。

- summonType: ON_COMBAT_ENTER
filename: elite_add.yml
difficultyID:
- hard
- mythic

组装一个大型增援

让我们使用前面大部分字段创建一个增援示例:

- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true

它实现了以下功能:

  • 创建一个自定义增援
  • 该自定义增援会在自定义 Boss 进入战斗时生成(summonType: ON_COMBAT_ENTER
  • 召唤的自定义增援是来自 test_boss.yml 的那个(filename: test_boss.yml
  • 该自定义增援会在自定义 Boss 当前位置的 30 个方块范围内生成(spawnNearby: true
  • 该自定义增援会继承它所增援的自定义 Boss 的仇恨,这意味着它会攻击造成伤害最多的玩家(inheritAggro: true
  • 无论 test_boss.yml 中如何设置,该自定义增援的等级都将与它所增援的自定义 Boss 相同(inheritLevel: true
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true

它实现了以下功能:

  • 创建一个自定义增援
  • 该自定义增援将是一个在战斗开始时放置下来的末影水晶(summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
  • 该末影水晶会在延迟后用闪电劈击周围地面(lightningRod: true
# 示例:死亡时生成复仇仆从的 Boss
- summonType: ON_DEATH
filename: revenge_minion.yml
amount: 3
spawnNearby: true

它实现了以下功能:

  • 创建一个自定义增援
  • 该自定义增援会在 Boss 死亡时生成(summonType: ON_DEATH
  • 召唤的自定义增援是来自 revenge_minion.yml 的那个(filename: revenge_minion.yml
  • 将生成三个增援(amount: 3
  • 增援会在 Boss 死亡处的 30 个方块范围内生成(spawnNearby: true

现在将其应用到自定义 Boss 上:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true

大功告成!再给你几条小贴士:

  • 这些字段可以按任意顺序设置,不过建议始终将 summonType 放在最前面!
  • 这相比旧的增援系统是一次重大改进,旧系统已不再列出。目前不建议依赖它,因为它将来可能会停止工作。