大秘境中的打断:踢断、控制,以及那些必须打断的施法
在路线之后,打断是钥石里时间藏身的第二个地方,也是日志最容易被读错的地方。这份指南就是我们在 Keystone Delta 里搭建打断统计时学到的东西,包括真正花掉几个小时的坑,以及一位朋友的纠正。
游戏用的那个标记
没有任何姓名板插件自己维护一份危险施法清单。Plater、Platynator、Details 的施法条和暴雪自带的施法条,都只向客户端问同一个问题:C_Spell.IsSpellImportant(spellID),它在 12.0 补丁中为"不打断就会致命的法术"而加入,并按其答案把施法条涂红。这个标记只存在于客户端。它不在可下载的法术数据表里,Warcraft Logs 也不暴露它。我们在每个补丁之后到游戏里把它导出来,作为每一行打断记录上的红色 must stop 标签发布。按地下城分的完整清单,连同施放每个法术的怪,就是必打断施法页面。
必须应对,不等于必须打断
这个标记指的是必须应对的施法,而不是必须打断的施法。在 Altar of Fangs,Evolve 只能靠控制来解决(Evolved 根本不是施法,而是 Evolve 引导完成后怪物获得的增益),而 The Writhing Coil 的引导会在你跑出范围时自行中断。我们工具的第一个版本,对每一个被标记且成功命中的施法都写着"当时打断是好的";一位读了自己报告的守护德鲁伊发现了这个问题。现在只有当 Archon 针对该地下城的可打断清单里点名了它,或者两份日志中有一份显示确实有打断阻止过它时,这个施法才被当作可打断。我们那个示例里四十六个被标记的施法中,有十四个属于另一类,它们被标注为"不是打断:移动或控制",并被排除在打断账之外。
Warcraft Logs 记录了什么,它的表又在哪里是瞎的
Warcraft Logs 上的 Interrupts 表是由 interrupt 事件构建的。它在两个对大秘境很关键的地方是瞎的。
打断施法条的控制技能会被记成一条 interrupt 事件,却不带造成它的那个法术。在我们的日志里,电能图腾、致残咆哮、致盲之光、制裁之锤、致盲和台风都是这样,一场记录里出现了十五次,而表格把它们归到「没有法术」下面。从事件重建就能修好:取每一次敌方施法的开始,给它一个到该施法者下一个动作为止的时间窗,然后在窗内匹配该施法者实例上的 interrupt 事件。在同一份日志里,Envenom 的被阻止次数从 33 变成了 40。
打断引导的控制技能,根本不会留下任何 interrupt 事件。Warcraft Logs 只为被打断的施法条合成这种事件,而引导没有施法条。唯一的痕迹,是引导中途落在施法者身上的那个负面效果。毫秒级时间线证明了这一点:Evolve 在 690.87 开始,咆哮在 692.89 落在那只 Evolutionist 身上,怪转为近战,并在咆哮一掉就开始新的施法。所以工具还会读取施加在敌人身上的控制类负面效果,施法途中落在施法者身上的光环,会算作一次归给该光环来源的阻止。这让一位玩家的阻止次数从 6 变成了 15。
引导和硬读条的算法不一样
硬读条会发出一个开始事件,读完的话再发一个 cast 事件。引导则只在开始时发一个 cast 事件,结束时什么都不发。把引导的 cast 事件当成"成功命中",会让 Evolve 读成"12 次里成功 10 次",可其中十次都在六秒引导的第三秒就结束了,只有两次撑得够久才有意义。完整时长是到该施法者下一个动作为止的最长间隔;低于它 90% 的都算"被截断",用剪刀图标标出。被日志说不清的东西截断的引导,就一直是"被截断";没有事件支撑,工具绝不会把它算到某位玩家头上。
仍然看不见的两件事
落在两次施法之间的控制会拦下下一次施法,却什么都没留下可以统计。还有,当两个人阻止了同一次施法时,只有第一个人被计入。这两点都是数据的限制,而不是解读的限制。
打断账
按每场记录来算:队伍每分钟的打断加制止次数,对照它需要应对的必打断施法。当工具建议连拉两波时,它会把两波分开拉时的必打断施法起始点压缩到合并后那一波的秒数里,看看打断的供给够不够;建议会把这个结论作为标签带上。只有当打断跟得上时,连拉才算建议。 第三个标签“机制”说明合拉的一波里是否有随怪物数量叠加的东西:死亡时触发的技能或没有任何按键能阻止的伤害,靠的是编排而不是治疗。
怎么读这张表
按敌方法术分行:开始、被阻止(打断和控制分开,注明是谁、用了什么)、命中、被截断。"开始"不等于"被阻止加命中":施法者或其目标死亡时施法也会结束。排序把必打断的放在最前。只有当该施法至少被阻止过一次,或者它带有标记时,才会出现这一行;否则地下城里每一个不可打断的施法都会写着"没人阻止它"。
没有施法条的标记法术永远不会成为一行。游戏除了标记施法本身,还标记怪物引导完成后获得的增益(来自 Evolve 的 Evolved)和普通光环(Tempest Stormshield、Deep Corruption),而在日志里它们看起来和引导开始一模一样。施法时间和引导标志读自客户端数据表;两者都没有的,就显示为施法带来的结果,绝不显示为"命中"的施法。
常见问题
必打断标记是从哪来的?
来自 WoW 客户端本身:C_Spell.IsSpellImportant,姓名板插件正是调用它来把施法条涂红的。可下载的法术数据和 Warcraft Logs 的 API 里都没有它,所以要在每个补丁之后到游戏里导出。
为什么 Warcraft Logs 显示的打断次数比 Keystone Delta 少?
Warcraft Logs 的表把被控制或击退打断的施法条归到「没有法术」下,而被控制打断的引导则根本不产生 interrupt 事件。Keystone Delta 会用施法起始、interrupt 事件,以及落在施法者身上的控制类负面效果,把这个数字重新还原出来。
每个必打断施法都要靠打断吗?
不是。有些被标记的施法要靠走出去或者用控制来应对。只有当 Archon 或 Method 把它列为可打断,或者两份日志中有一份显示确实被打断阻止过时,Keystone Delta 才会把它算进打断账。