条件
更新于 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 的组来处理“光环不存在”的情况。
魔兽世界中的刷新窗口(pandemic)是持续时间的 30%:在这个窗口内刷新不会有任何损失。因此常用的阈值是 <= 30。
use Rupture when # 割裂
Combo_Points >= 70 and Rupture_DoT.down # 没有流血
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": "没有流血"},
{"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 | 5+ 个连击点(上限 7) |
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 | “移动”开启 |