【bug分析】为什么军械库的支援词条会给弩炮加攻?
2020年6月10日危机合约轮换图开启的军械库东中
出现了支援的加攻词条会给弩炮加攻的情况

然而,同样原理的高价值目标的降攻词条不会给弩炮降攻
所以来分析下原因
首先,很多人说的“弩炮是我方单位”是绝对不对的
从拆包结果来看,弩炮属于敌方阵营单位。即使单从逻辑分析,因阵营筛选产生的bug也绝不应该在两个原理相同的词条(支援军械和高价值目标)下表现出不同的情况。

那么原因是什么呢?
危机合约的词条中筛选的“敌方”“我方”并非指阵营,而是指实体类型。
比较直观的说,就是能够放置,不会运动的属于character类型(下有派生类token,trap等);而拥有路径,会向目标点移动的属于enemy类型。
弩炮,冰晶等虽然属于敌方阵营,但却是character类型实体。所以可以成为对character类型词条的作用对象
词条的对象是词条的第一道筛选。可以依照词条的不同作用于,character类实体,enemy类实体,关卡选项,关卡数据,地图。
第二道筛选来自词条的selector,可以筛选职业,部署位,实体,技能,地砖id等。
所以来看看今天两个词条的selector


可以很明显地看到两个词条在professionMask筛选上的不同
professionMask指的是职业筛选,是一种二进制掩码
每一位代表一个职业,一共10位。从1到10位依次对应:WARRIOR(近卫),SNIPER(狙击),TANK(重装),MEDIC(医疗),SUPPORT(辅助),CASTER(术师),SPECIAL(特种),TOKEN(召唤物),TRAP(机关),PIONEER(先锋)
筛选的时候会将professionMask与筛选目标的职业取AND逻辑,看看结果是不是等于筛选目标的职业
767=1023-256
其中第9位(即256)代表TRAP
很明显,军械库的降攻词条相对于加攻词条去掉了对于TRAP职业的筛选
而弩炮,冰晶等地图机关通通属于TRAP职业
bug的原因已经很明显了,即军械库东支援词条没有去掉对于地图机关职业的筛选
为什么会这样呢
翻看别的地图词条,可以发现降攻词条的职业筛选全是1023(即全部)

也就是说,大概鹰角在测试军械库地图后,发现了弩炮会被降攻词条降攻的问题,于是给军械库的降攻词条专门做了一定的调整,使其能够不影响弩炮。
然而很明显,他们忘了调(估计也没有测试)支援词条......
本文原载于NGA:https://bbs.nga.cn/read.php?tid=22116275
作者为本人
本文以CC BY-NC-SA 4.0协议发布