刚才有空看了一下代码,果然没有令我失望,是bug
代码在 ApplyNormalInformationSideEffect
游戏本身的设定是,聊门派见闻有概率使人的立场向见闻提及门派的基本立场迁移。
比如叛逆的人立场是-250, 和他聊百花谷 (250),每次判定成功立场会变成 -250 + (250 - (-250)) / 10 = -200
但是代码写错了
short a = targetChar.GetBaseMorality();short b = Config.Organization.Instance[sectTemplateId].MainMorality;int lerp = a + (b - a) / 10;targetChar.ChangeBaseMorality(Domain.MainThreadDataContext, (short)lerp);
ChangeBaseMorality 的输入应该是改变的值,而不是改变之后的值。所以这段代码结果导致对象的立场变成了 -250 - 200 = -450 结果就成了唯我。
正确的写法应该使用函数 SetBaseMorality, 或者一开始根本不用 +a
bug 的结果就是无论聊什么门派,都会导致对方向两侧极端偏移。比如仁善聊久了会变刚正,叛逆聊久了会变唯我