Elite Script 冷却时间
冷却时间设置了在boss有资格执行相同脚本或任何其他技能之前必须经过的时间*。
- 注意:某些技能目前不受冷却时间影响。
配置位置
冷却时间在精英脚本的 Cooldowns 部分中配置:
eliteScript:
ScriptName:
Events:
- [事件配置]
Actions:
- [动作配置]
Cooldowns:
local: [值或范围]
global: [值或范围]
注意:配置键不区分大小写(local、Local、LOCAL 都可以使用)。
关于单位的注意事项:所有冷却时间值都以刻为单位指定。在Minecraft中,每秒有20刻,所以:
- 20 刻 = 1 秒
- 60 刻 = 3 秒
- 100 刻 = 5 秒
- 99999 刻 ≈ 83 分钟
默认值
如果省略 Cooldowns 部分,local 和 global 都默认为0,这意味着脚本完全绕过冷却系统。
冷却绕过
没有 Cooldowns 部分的脚本,或者 local 和 global 都设置为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 冷却时间,以便给其他技能触发的机会。
此外,如果你的技能在激活期间有特定的持续时间,你应该使用此系统来防止其他技能同时运行并可能破坏你的技能。
随机化
local 和 global 冷却时间都支持使用范围语法进行随机化。这允许冷却持续时间变化,为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]
有效的键是:local、global(不区分大小写)