NGA

来源自NGA

04月08日 10:58

作者:60314633

自走棋BUG再次被发现,六刺走上神坛的原因竟是它!

导语

          棋子等待区的"自动合成"功能疑似有BUG,简单来说就是等待区棋子通过"自动合成"后,"卡池"将再多出两枚此棋子。在换句话说,合完就卖卡池反而能多出两枚棋子。

  近日有不少网友反应棋子等待区的"自动合成"功能疑似有BUG,简单来说就是等待区棋子通过"自动合成"后,"卡池"将再多出两枚此棋子。在换句话说,合完就卖卡池反而能多出两枚棋子。

  以下为NGA网友(程序员)的拆包解答:

  自动合成代码 BUG,导致对应合成棋子的牌会被错误返回到牌库内。

  更新(0407.23:14):

  刚看测试服代码已经把这个 BUG 修复了。(除此之外还有术士羁绊的修改。)

  应该很快会做为 hotfix 放到正式版上。

  我在 reddit 上看见有人讨论卡池问题,确实有异常情况出现。于是自己实验了下,发现了可能造成异常的 BUG。

  简单举两个例子说明:

  等待区有 2 张一星潮汐,再买 1 张潮汐自动合成后,得到二星潮汐的同时会有 2 张潮汐牌会被返回牌库。(此时潮汐牌的总数从10变成了12。)

  等待区有 2 张两星发条,2 张一星发条,再买 1 张发条自动合成后,得到三星发条的同时会有 11 张发条牌被返回牌库。(合三星棋子的过程中,理论上最多可以有 15 张牌被额外增加到牌库。)

  这个 BUG 可以被利用来增加牌库里棋子数量从而有更大概率升到三星,或是升三星时利用这个 BUG 来污染牌库(等待区 2 个两星,从场上召回 1 个两星自动合成,会增加 9 张牌到牌库,而且自己不会抽到此种牌。)

  做为业余野鸡程序员大概看了下代码,以下是可能的原因:

  function RemoveChess(keys) 里面,AddAChessToChessPool(target:GetUnitName()) 没有做 is_sell 的 true/false 判断。

  原帖地址

  马上有其他网友开始利用这一BUG活学活用了:

  假设我玩是6刺:

  1.当我PA数量小于或等于8时:

  一律采用召回棋子的方法自动合成,从而增加牌库中PA的数量,进而提高我抽到PA的概率;

  2.当我抽到第9个PA时:

  A.若场上还有其他刺客,则采用正常场上合成的方法合成3星PA,防止牌库中PA数量的增加,降低同行抽到PA的概率;

  B.若场上没有其他刺客,则采用召回棋子自动合成的方法,进而增加牌库中PA的数量,污染牌库,降低其他人抽到想要的3费卡的概率。

  不难想象这一BUG在游戏中被众多玩家所利用(无意之中就被利用了),导致目前游戏中经常出现三家三星爹妈、两家三星PA等这种往常不太常见的现象;甚至有玩家测试出同时出现五家赌狗都有三星伐木机的情况,这么一想版本热门的六刺(极大程度以来三星怪)也可能是因为这一BUG才容易追三被捧上神坛。