Openapoc: 弹药和弹夹数量错误

创建于 2019-09-16  ·  3评论  ·  资料来源: OpenApoc/OpenApoc

如果我没记错的话,如果弹药在此存档中出售,您最终将再次遇到数百万个剪辑错误。 重等离子夹就是一个很好的例子。 我把它作为部分剪辑出售,当我重新购买时,它仍然是部分剪辑。 如果我有第二个完整的剪辑,它可能会重新填充。 另外,我相信这个剪辑错误影响了我的存储空间。

这是使用 OpenApoc-v0.2.0.2-16-g2f96387e 和 V7.1 EWM。

save_Ammo and Clip Bug.zip

!BUG! low priority

所有3条评论

好像存档已经有一堆废话了,不需要买/卖任何东西。

但这提供了一个很好的线索——看起来买/卖代码没有检查弹药夹是否部分装满——它只是从商店中取出一个弹夹的 (MAX_AMMO)。

但是,如果您尝试出售非完整剪辑,这自然会失败,因为它会从小于 MAX_AMMO 的值中减去 MAX_AMMO,从而导致下溢(因为它是一个无符号值,而不是变为负数,它最终会得到 UINT32_MAX - 不管它会多少低于零,所以超过 40 亿)。 这巧妙地解释了这个问题。

所以这就提出了我们应该如何处理部分填充剪辑的问题——我们试图变得“聪明”,并通过跟踪子弹数量而不是战斗外的剪辑来向 OG 添加功能有许多我不确定的敲击效果对于大多数人甚至不会注意到的功能来说,“值得”额外的复杂性:

  • 购买/出售部分填充的剪辑是否仍然与完整的剪辑具有相同的成本?
  • 买/卖 UI 真的无法通知用户剪辑已部分填充,无论是买还是卖
  • 在战斗中已经没有办法合并部分填充的剪辑,所以如果你不小心,你可能最终会遇到连续进行多场战斗并且每个代理上都有多个接近空的剪辑,这看起来很令人沮丧

我可能会经历并削减和刻录此功能,并在每次战斗结束时自动合并部分填充的剪辑。 我不确定这个管理是否真的/添加/给游戏添加了任何东西。

因此,进一步研究代码,似乎市场实际上并不支持部分剪辑,从商店中删除轮数后,经济只会跟踪剪辑的数量。

这意味着您总是购买完整的剪辑,即使您将其部分装满地出售 - 因此,如果您出售并回购它,这里的一个简单夹子将神奇地重新装满剪辑。

但是由于卖出会下溢到一个疯狂的大数字,所以买回来会溢出到一个理智的数字——回到你开始的地方。

如果你想要投票,那么我会投票赞成在基地中根本不进行部分剪辑管理,并让所有剪辑在返回基地时重新填充,同时为个人传送和盾牌充电。

此页面是否有帮助?
0 / 5 - 0 等级