條件
更新於 2026年10月18日
條件是一項檢查:「目標身上有絞喉」、「能量至少 70%」、「Burst 已開啟」。多個條件組成群組(且),多個群組組成規則(或)。在建立器中,你是從清單中挑選條件;在 KRC 文字與 JSON 中,條件寫成字串,本頁範例展示的就是這種寫法。
語法#
| 類型 | 寫法 | 範例 |
|---|---|---|
| 光環:存在/不存在 | Aura.up、Aura.down | Garrote_DoT.down |
| 光環:剩餘時間、層數 | Aura.duration op N、Aura.stacks op N | Rupture_DoT.duration <= 30 |
| 欄位:就緒/未就緒 | Slot.ready、Slot.oncd | Kingsbane.ready |
| 欄位:冷卻、充能次數 | Slot.cd op N、Slot.charges op N | Deathmark.cd <= 3 |
| 欄位:高亮 | Slot.glow、Slot.noglow | Ambush.glow |
| 資源 | Resource op N | Combo_Points >= 70 |
| 附近敵人數 | enemies op N | enemies >= 3 |
| 與目標的距離 | target.distance op N | target.distance <= 8 |
| 開關 | aoe、st、cd、defensives、ground_spells、movement == 0 或 == 1 | cd == 1 |
運算子: <、<=、==、=(與 == 相同)、>=、>。沒有「不等於」。
數值 N 是 0 到 100 的整數。不可為負數或小數,也不可大於 100:數值 120 不在 0..100 範圍內。
空格: 運算子兩側的空格可有可無:Energy>=70 與 Energy >= 70 相同。名稱內部,以及名稱與其檢查項目之間,不可有空格:要寫 Garrote_DoT.up,而不是 Garrote_DoT .up。
引用可以用名稱(Garrote_DoT)或編號:buff1、slot3、resource4。關鍵字一律小寫。
光環#
光環是你自己的增益效果,或你施加在目標身上的減益效果,需在光環清單中以 ID 宣告。其他玩家的增益與減益效果是看不到的。
.up 與 .down#
Envenom_Buff.up:光環存在。Envenom_Buff.down:光環不存在。如果光環未知(讀不到),兩者都不成立。
use Garrote when # 絞喉:沒有時就施放
Garrote_DoT.down
.duration:剩餘時間百分比#
Rupture_DoT.duration <= 30:光環的剩餘時間不超過其完整持續時間的 30%。完整持續時間是指這一次施放所得到的持續時間:5 個連擊點數的割裂持續 24 秒,7 個則持續 32 秒,因此 30% 分別是 7.2 秒與 9.6 秒。
重要
不存在的光環剩餘時間為 0。因此,即使目標身上完全沒有割裂,Rupture_DoT.duration <= 30 也會成立。若只想刷新已存在的光環,請寫 Rupture_DoT.up and Rupture_DoT.duration <= 30,並另外用一個含 Rupture_DoT.down 的群組處理「光環不存在」的情況。
WoW 的刷新時段(pandemic)是持續時間的 30%:在這段時間內刷新,不會損失任何持續時間。因此常用的門檻是 <= 30。
use Rupture when # 割裂
Combo_Points >= 70 and Rupture_DoT.down # 沒有 DoT
or
Combo_Points >= 70 and Rupture_DoT.up and Rupture_DoT.duration <= 30 # 刷新時段
{
"use": "Rupture",
"name": "割裂",
"when": [
{"all": ["Combo_Points >= 70", "Rupture_DoT.down"], "comment": "沒有 DoT"},
{"all": ["Combo_Points >= 70", "Rupture_DoT.up", "Rupture_DoT.duration <= 30"], "comment": "刷新時段"}
]
}
秒數換算成百分比:百分比 = 秒數 / 完整持續時間 × 100。絞喉持續 18 秒:「剩 14 秒」是 <= 78,「剩 5.4 秒」是 <= 30。
沒有持續時間的光環(例如潛行)剩餘時間一律讀為 1。這類光環只能使用 .up 與 .down。
.stacks:層數#
Opportunity.stacks >= 6:光環有 6 層以上。不存在的光環為 0 層。
注意
層數從 2 開始計算:只有 1 層的光環會讀為 0,與沒有層數的光環相同。要檢查光環是否存在,請使用 .up;.stacks 用於 2 層以上的門檻。
use Pistol_Shot when # 大好機會 6 層時使用手槍射擊
Opportunity.stacks >= 6 and Combo_Points < 80
欄位#
欄位條件讀取的是另一個按鈕的狀態:例如「只在死亡印記尚未就緒時按毒化」。規則本身的欄位會自動檢查:如果它的法術無法使用,KeyRota 就直接換下一條規則。
.ready 與 .oncd#
Kingsbane.ready:欄位的法術可以使用(不計共用冷卻)。這需要同時滿足以下條件:
- 已學會該法術(已點選天賦);
- 資源足夠;
- 如果需要目標,目標在射程內;
- 冷卻剩餘不到 0.2 秒,或有可用的充能;
- Better Assistant 顯示此欄位(「有目標時」:你有目標;「戰鬥中」:你在戰鬥中)。
Kingsbane.oncd:欄位因上述任一原因而未就緒,不只是因為冷卻。如果狀態未知,兩者都不成立。
use Preparation when # 能量刺激、正中眉心與狂舞殘殺都在冷卻時使用備戰
Adrenaline_Rush.oncd and Between_the_Eyes.oncd and Killing_Spree.oncd
.cd:剩餘冷卻百分比#
Deathmark.cd <= 3:剩餘冷卻不超過完整冷卻時間的 3%。0 表示就緒,100 表示剛使用過。不包含共用冷卻。對於有充能的法術,.cd 是下一次充能的恢復時間,因此法術在 cd > 0 時也可能已就緒。
| 冷卻時間 | 1% = | 範例 |
|---|---|---|
| 30 秒 | 0.3 秒 | X.cd <= 10:剩餘 ≤ 3 秒 |
| 1 分鐘 | 0.6 秒 | Kingsbane.cd <= 3:剩餘 ≤ 1.8 秒 |
| 2 分鐘 | 1.2 秒 | Deathmark.cd <= 3:剩餘 ≤ 3.6 秒;Deathmark.cd >= 44:還有 ≥ 52 秒 |
| 3 分鐘 | 1.8 秒 | X.cd >= 50:還有 ≥ 90 秒 |
典型的用法是「為大型冷卻技能保留」:死亡印記快要冷卻完畢時就不用王禍,死亡印記還要很久才好時就用掉。
use Kingsbane when # 王禍
cd == 1 and Deathmark_DoT.up # 死亡印記期間
or
cd == 1 and Deathmark.cd >= 44 # 距離死亡印記還有 52 秒以上
.charges#
Barbed_Shot.charges >= 2:法術有 2 次以上的充能。沒有充能的法術為 0。典型的寫法是避免充能溢出:
use Barbed_Shot when # 鋒銳射擊
Barbed_Shot.charges >= 2 # 兩次充能都在:不要浪費充能時間
or
Barbed_Shot.charges == 1 and Barbed_Shot.cd <= 20 # 第二次充能快好了
.glow 與 .noglow:按鈕高亮#
Ambush.glow:遊戲正在高亮此法術的按鈕(也就是觸發效果時你在快捷列上看到的那種發光)。Ambush.noglow:沒有高亮。只有當此法術的按鈕在遊戲中真的會發光時,才使用 .glow;如果不確定,請改為檢查觸發效果的增益:Blindside.up。
資源#
Energy >= 70:能量至少為最大值的 70%。所有資源都是百分比,範圍為 0 到 100:生命力、能量、法力、怒氣、符文、連擊點數皆是。
| 資源 | 編號 | 範例 |
|---|---|---|
| 玩家生命力 | resource1(PlayerHP) | PlayerHP <= 40:生命力 40% 以下 |
| 目標生命力 | resource2(TargetHP) | TargetHP >= 50:目標的生命力還沒降到一半。沒有目標時為未知 |
| 專精資源 | resource3 起 | Energy >= 70、Combo_Points >= 70、Rage >= 40 |
換算成百分比: 百分比 = 數值 / 最大值 × 100。能量上限為 250 時,175 點能量就是 70%。能量與其他資源的上限會隨天賦改變,因此以百分比設定的門檻,比原始數值更容易套用到不同角色。
連擊點數。 連擊點數上限為 7 時,每一點約為 14.3%。數值會取整數,依進位方式不同,2 點會讀為 28 或 29,3 點會讀為 42 或 43,6 點會讀為 85 或 86。因此請將門檻設在兩個級距的中間:這樣不論如何進位都正確。
| 連擊點數 | % | 「至少 N 點」 | 「最多 N 點」 |
|---|---|---|---|
| 0 | 0 | — | < 7 |
| 1 | 14 | >= 7 | < 20 |
| 2 | 28–29 | >= 20 | < 35 |
| 3 | 42–43 | >= 35 | < 50 |
| 4 | 57 | >= 50 | < 65 |
| 5 | 71 | >= 65(>= 70) | < 80 |
| 6 | 85–86 | >= 80 | < 95 |
| 7 | 100 | >= 95 | — |
上限不同時,「至少 N 點」是 (N − 0.5) / 上限 × 100。連擊點數上限為 5 時,「至少 4 點」是 >= 70,「至少 5 點」是 >= 90。
附近敵人數#
enemies >= 3:計數半徑內有 3 個以上的敵人。半徑與「僅計入戰鬥中的敵人」在「一般」頁面設定(JSON 中為 enemies.range 與 enemies.combatOnly)。如果敵人數未知,條件不成立。
- 要計算敵人數,遊戲中必須開啟敵方名條(預設按鍵為 V),而且不可隱藏次要敵人。
- 請依你的技能選擇半徑:飛舞刀刃的作用範圍是 8 碼,因此對「飛舞刀刃還是截肢」的判斷來說,8 才是準確的半徑。
- 單一目標時,
enemies <= 1比enemies == 1更安全:即使敵人沒有被計算到,規則仍能運作。
與目標的距離#
target.distance <= 8:目標在 8 碼以內。沒有目標時距離未知,條件不成立。距離是近似值:只有在距離確定符合門檻時條件才成立;處於臨界值時則不成立。
use Pistol_Shot when # 目標在近戰範圍外,但在 20 碼內
target.distance >= 10 and target.distance <= 20
面板開關#
開關是顯示在遊戲畫面上的快速設定面板按鈕,也可以用快速鍵切換。它們代表什麼意義,由輸出循環決定。
| 條件 | 面板按鈕 | 按鍵:Windows、macOS | 常見意義 |
|---|---|---|---|
aoe == 1 | 目標:範圍 | F2、⌃⇧T,輪流切換 | 強制使用多目標模式 |
st == 1 | 目標:單體 | F2、⌃⇧T,輪流切換 | 強制使用單一目標 |
aoe == 0 and st == 0 | 目標:自動 | F2、⌃⇧T,輪流切換 | 由規則決定,通常依據 enemies |
cd == 1 | Burst | F3、⌃⇧B | 大型冷卻技能:現在使用或先保留 |
defensives == 1 | 治療/防禦 | — | 治療與防禦技能 |
ground_spells == 1 | 地面法術 | — | 需選擇地面位置的法術 |
movement == 1 | 移動 | — | 移動中的動作 |
- 只能與
== 0或== 1比較。 cd == 1是 Burst 按鈕,不是法術的冷卻。 欄位的冷卻是Slot.cd。aoe與st永遠不會同時為 1。目標模式按鍵會依序切換「自動」、「單體」、「範圍」。- 預設情況下,Burst 為開啟,目標模式為「自動」,其他按鈕為關閉。KeyRota 會記住它們的狀態。
- 只有在輸出循環會讀取某個開關時,對應的面板按鈕才會啟用;使用 Blizzard 設定檔時,所有按鈕都會變暗。
- 開關永遠不會是未知值。
條件如何求值#
| 條件 | 有值時 | 光環不存在時 | 未知時 |
|---|---|---|---|
X.up | 成立 | 不成立 | 不成立 |
X.down | 不成立 | 成立 | 不成立 |
X.duration op N、X.stacks op N | 進行比較 | 以 0 比較 | 不成立 |
X.ready/X.oncd | 依是否就緒 | — | 不成立(兩者皆是) |
X.glow/X.noglow | 依是否高亮 | — | 不成立(兩者皆是) |
X.cd、X.charges、資源、enemies、target.distance | 進行比較 | — | 不成立 |
| 開關 | 進行比較 | — | 永遠不會未知 |
群組的所有條件都成立時,群組才成立。規則至少有一個群組成立,或完全沒有群組時,規則就符合。
「非」、括號與群組內的「或」#
KRC 沒有 not、!= 與括號。所有邏輯都用群組來表達:
- 「非」就是成對的條件:非
.up就是.down,非.ready就是.oncd,非.glow就是.noglow;數值則用相反的運算子:非>= 70就是< 70。 - (A 或 B)且 C 是兩個群組:
A and C、B and C。 - A 且非(B 且 C) 是兩個群組:
A and 非B、A and 非C。 - 每個群組都需要的同一個條件(例如引導保護),要在每個群組中重複寫一次。
use Fan_of_Knives when # 飛舞刀刃:(「範圍」模式,或「自動」模式且有 2+ 個敵人)且連擊點數少於 5
aoe == 1 and Combo_Points < 70
or
st == 0 and enemies >= 2 and Combo_Points < 70
速查表#
| 條件 | 意義 |
|---|---|
X.up/X.down | 光環存在/不存在 |
X.duration <= 30 | 剩餘 ≤ 30%(不存在的光環為 0) |
X.up and X.duration <= 30 | 存在且該刷新了 |
X.stacks >= 2 | 2 層以上(1 層會讀為 0) |
X.ready/X.oncd | 欄位就緒/因任何原因未就緒 |
X.cd <= 3 | 剩餘冷卻 ≤ 3% |
X.charges >= 2 | 2 次以上的充能 |
X.glow/X.noglow | 按鈕高亮/未高亮 |
PlayerHP <= 40 | 你的生命力 ≤ 40% |
TargetHP >= 50 | 目標生命力 ≥ 50%(沒有目標時不成立) |
Combo_Points >= 70 | 7 點中有 5 點以上連擊點數 |
Energy >= 70 | 能量 ≥ 70% |
enemies >= 3 | 半徑內有 3 個以上的敵人 |
target.distance <= 8 | 目標在 8 碼內(沒有目標時不成立) |
aoe == 1/st == 1 | 「範圍」/「單體」模式 |
aoe == 0 and st == 0 | 「自動」模式 |
cd == 1 | Burst 開啟 |
defensives == 1 | 「治療/防禦」開啟 |
ground_spells == 1 | 「地面法術」開啟 |
movement == 1 | 「移動」開啟 |