跳至主要内容

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 設定在相同腳本可以再次發生之前的時間,以刻(ticks)為單位。範例:

範例

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秒)。

注意:每次應用冷卻時間時都會隨機選擇值。

使用冷卻時間讓腳本只執行一次

為了確保腳本只觸發一次,同時仍然使用可能在戰鬥期間多次發生的 Event,請將 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(不區分大小寫)