【bug分析】為什么軍械庫的支援詞條會給弩炮加攻?
2020年6月10日危機合約輪換圖開啟的軍械庫東中
出現(xiàn)了支援的加攻詞條會給弩炮加攻的情況

然而,同樣原理的高價值目標的降攻詞條不會給弩炮降攻
所以來分析下原因
首先,很多人說的“弩炮是我方單位”是絕對不對的
從拆包結果來看,弩炮屬于敵方陣營單位。即使單從邏輯分析,因陣營篩選產(chǎn)生的bug也絕不應該在兩個原理相同的詞條(支援軍械和高價值目標)下表現(xiàn)出不同的情況。

那么原因是什么呢?
危機合約的詞條中篩選的“敵方”“我方”并非指陣營,而是指實體類型。
比較直觀的說,就是能夠放置,不會運動的屬于character類型(下有派生類token,trap等);而擁有路徑,會向目標點移動的屬于enemy類型。
弩炮,冰晶等雖然屬于敵方陣營,但卻是character類型實體。所以可以成為對character類型詞條的作用對象
詞條的對象是詞條的第一道篩選。可以依照詞條的不同作用于,character類實體,enemy類實體,關卡選項,關卡數(shù)據(jù),地圖。
第二道篩選來自詞條的selector,可以篩選職業(yè),部署位,實體,技能,地磚id等。
所以來看看今天兩個詞條的selector


可以很明顯地看到兩個詞條在professionMask篩選上的不同
professionMask指的是職業(yè)篩選,是一種二進制掩碼
每一位代表一個職業(yè),一共10位。從1到10位依次對應:WARRIOR(近衛(wèi)),SNIPER(狙擊),TANK(重裝),MEDIC(醫(yī)療),SUPPORT(輔助),CASTER(術師),SPECIAL(特種),TOKEN(召喚物),TRAP(機關),PIONEER(先鋒)
篩選的時候會將professionMask與篩選目標的職業(yè)取AND邏輯,看看結果是不是等于篩選目標的職業(yè)
767=1023-256
其中第9位(即256)代表TRAP
很明顯,軍械庫的降攻詞條相對于加攻詞條去掉了對于TRAP職業(yè)的篩選
而弩炮,冰晶等地圖機關通通屬于TRAP職業(yè)
bug的原因已經(jīng)很明顯了,即軍械庫東支援詞條沒有去掉對于地圖機關職業(yè)的篩選
為什么會這樣呢
翻看別的地圖詞條,可以發(fā)現(xiàn)降攻詞條的職業(yè)篩選全是1023(即全部)

也就是說,大概鷹角在測試軍械庫地圖后,發(fā)現(xiàn)了弩炮會被降攻詞條降攻的問題,于是給軍械庫的降攻詞條專門做了一定的調整,使其能夠不影響弩炮。
然而很明顯,他們忘了調(估計也沒有測試)支援詞條......
本文原載于NGA:https://bbs.nga.cn/read.php?tid=22116275
作者為本人
本文以CC BY-NC-SA 4.0協(xié)議發(fā)布