Перейти к содержимому

条件

更新于 2026年10月18日

条件就是一项检查:“目标身上有锁喉”“能量至少 70%”“Burst 已开启”。条件组成组(且),组组成规则(或)。在构建器中,你从列表中选择条件;在 KRC 文本和 JSON 中,条件写成字符串,下文的示例展示的就是这种写法。

语法#

类型形式示例
光环:存在 / 不存在Aura.up、Aura.downGarrote_DoT.down
光环:剩余时间、层数Aura.duration op N、Aura.stacks op NRupture_DoT.duration <= 30
槽位:就绪 / 未就绪Slot.ready、Slot.oncdKingsbane.ready
槽位:冷却、充能Slot.cd op N、Slot.charges op NDeathmark.cd <= 3
槽位:高亮Slot.glow、Slot.noglowAmbush.glow
资源Resource op NCombo_Points >= 70
附近敌人数enemies op Nenemies >= 3
与目标的距离target.distance op Ntarget.distance <= 8
开关aoe、st、cd、defensives、ground_spells、movement == 0 或 == 1cd == 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:光环不存在。如果光环未知(未读取到),两者都为假。

KRC 文本
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。

KRC 文本
use Rupture when  # 割裂
	Combo_Points >= 70 and Rupture_DoT.down  # 没有流血
	or
	Combo_Points >= 70 and Rupture_DoT.up and Rupture_DoT.duration <= 30  # 刷新窗口
JSON
{
  "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 层及以上的阈值。

KRC 文本
use Pistol_Shot when  # 可乘之机达到 6 层时的手枪射击
	Opportunity.stacks >= 6 and Combo_Points < 80

槽位#

槽位条件读取的是另一个按钮的状态:例如“只在死亡印记尚未就绪时按毒伤”。规则自身的槽位会被自动检查:如果它的法术无法使用,KeyRota 就直接检查下一条规则。

.ready 和 .oncd#

Kingsbane.ready:该槽位的法术可以使用(不考虑公共冷却)。这需要同时满足:

  • 已学会该法术(已点出相应天赋);
  • 资源足够;
  • 如果需要目标,目标在射程内;
  • 冷却剩余不到 0.2 秒,或有可用的充能;
  • Better Assistant 显示该槽位(“有目标时”:你有目标;“战斗中”:你处于战斗中)。

Kingsbane.oncd:槽位因上述任何原因未就绪,而不仅仅是因为冷却。如果状态未知,两者都为假。

KRC 文本
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 秒

典型用法是“为大冷却技能保留”:如果死亡印记即将冷却完毕,就先不用君王之灾;如果离死亡印记还很久,就用掉它。

KRC 文本
use Kingsbane when  # 君王之灾
	cd == 1 and Deathmark_DoT.up  # 目标身上有死亡印记
	or
	cd == 1 and Deathmark.cd >= 44  # 距离死亡印记还有 52 秒以上

.charges#

Barbed_Shot.charges >= 2:该法术有 2 层或更多充能。没有充能的法术为 0。典型模式是避免充能溢出:

KRC 文本
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 点”
00—< 7
114>= 7< 20
228–29>= 20< 35
342–43>= 35< 50
457>= 50< 65
571>= 65(>= 70)< 80
685–86>= 80< 95
7100>= 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 码或更近。没有目标时距离未知,条件为假。距离是近似值:只有当距离确定满足阈值时,条件才成立;在临界情况下为假。

KRC 文本
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 == 1BurstF3、⌃⇧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。
  • 每个组中都相同的条件(例如引导保护)需要在每个组中重复。
KRC 文本
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 >= 22 层或更多(1 层读作 0)
X.ready / X.oncd槽位就绪 / 因任何原因未就绪
X.cd <= 3剩余冷却 ≤ 3%
X.charges >= 22 层或更多充能
X.glow / X.noglow按钮高亮 / 未高亮
PlayerHP <= 40你的生命值 ≤ 40%
TargetHP >= 50目标生命值 ≥ 50%(没有目标时为假)
Combo_Points >= 705+ 个连击点(上限 7)
Energy >= 70能量 ≥ 70%
enemies >= 3半径内有 3+ 个敌人
target.distance <= 8目标在 8 码以内(没有目标时为假)
aoe == 1 / st == 1“群体” / “单体”模式
aoe == 0 and st == 0“自动”模式
cd == 1Burst 开启
defensives == 1“治疗 / 防御”开启
ground_spells == 1“地面法术”开启
movement == 1“移动”开启