跳到主要内容

Elite Script 冷却时间

冷却时间设置了在boss有资格执行相同脚本或任何其他技能之前必须经过的时间*。

  • 注意:某些技能目前不受冷却时间影响。

配置位置

冷却时间在精英脚本的 Cooldowns 部分中配置:

eliteScript:
ScriptName:
Events:
- [事件配置]
Actions:
- [动作配置]
Cooldowns:
local: [值或范围]
global: [值或范围]

注意:配置键不区分大小写(localLocalLOCAL 都可以使用)。

关于单位的注意事项:所有冷却时间值都以刻为单位指定。在Minecraft中,每秒有20刻,所以:

  • 20 刻 = 1 秒
  • 60 刻 = 3 秒
  • 100 刻 = 5 秒
  • 99999 刻 ≈ 83 分钟

默认值

如果省略 Cooldowns 部分,localglobal 都默认为0,这意味着脚本完全绕过冷却系统。

冷却绕过

没有 Cooldowns 部分的脚本,或者 localglobal 都设置为0的脚本,将完全绕过冷却系统。这允许事件触发的行为始终执行,无论boss的冷却状态如何。

示例:

eliteScript:
AlwaysTeleportOnLowHealth:
Events:
- EliteMobEnterCombatEvent
Actions:
- action: TELEPORT
Target:
targetType: SELF_SPAWN
# 无 Cooldowns 部分 - 事件触发时脚本总是执行

冷却时间有两个值:

local

local 设置相同脚本再次执行之前的时间(以刻为单位)。示例:

示例

local: 60

设置该技能在3秒后才能再次运行。

global

global 设置任何其他脚本或技能再次执行之前的时间(以刻为单位)[1]。示例:

示例

global: 20

设置所有其他技能在1秒内无法启动。

[1] 注意:这适用于旧版技能实现(不是EliteScripts)。所有基于EliteScript的技能都正确支持全局冷却时间。一些较旧的技能目前不受此影响,这是一项正在进行的工作。

注意:通过使 local 冷却时间更长而 global 冷却时间更短,你可以保证boss会在其可用技能之间交替使用! 永远不要让 global 冷却时间更长,我建议至少保留一秒的 local 冷却时间,以便给其他技能触发的机会。

此外,如果你的技能在激活期间有特定的持续时间,你应该使用此系统来防止其他技能同时运行并可能破坏你的技能。

随机化

localglobal 冷却时间都支持使用范围语法进行随机化。这允许冷却持续时间变化,为boss行为增加不可预测性。

示例:

Cooldowns:
local: 40-80
global: 10-30

将local冷却时间随机设置为40到80刻之间(2-4秒),将global冷却时间随机设置为10到30刻之间(0.5-1.5秒)。

注意:每次应用冷却时间时都会随机选择值。

使用冷却时间运行脚本一次

为了确保脚本仅触发一次,同时仍然使用可能在战斗期间多次发生的事件,请将 local 冷却时间设置为一个很大的数字,例如 99999。此示例演示了这个概念:

示例
eliteScript:
SetMeOnFireOnlyOnce:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_ON_FIRE
duration: 60
Target:
targetType: DIRECT_TARGET
Cooldowns:
local: 99999
# global: 20 # 可选:防止其他技能1秒

在这种情况下,EliteMobDamagedByPlayerEvent 触发 SET_ON_FIRE 动作。如果没有冷却时间,该动作将在玩家每次击中生物时激活。

然而,当 local 冷却时间设置为 99999 时,该动作只会每 99999 刻(83分钟)触发一次。由于战斗很少持续那么长时间,这有效地使脚本在每次战斗遭遇中只运行一次。

在这种情况下,global冷却时间是可选的 - 如果省略或设置为0,它不会阻止其他技能运行。

故障排除

无效的冷却键

如果您在 Cooldowns 部分使用无法识别的键,服务器日志中将显示警告:

Failed to parse cooldown entry for script name [ScriptName] in config file [FileName]

有效的键是:localglobal(不区分大小写)