4.2.6.401 版本 中的 进化 神器 选择
神器专用的生成器从未打乱的列表中选出一个索引。
约 1 分钟
2026-09-30 发布的 4.2.6.401 版本改变了进化神器选择结果的方式。每次选择从只有神器使用的生成器中抽取一个索引,再取候选列表按原有顺序排列时的对应条目。
从未 打 乱 的 列表 中 取 一个 索引
进化神器在三处选择植物:源植物的进化、4 阶在空格中的额外生成,以及 3 阶的定时生成。直到 4.2.4.399 版本,这三处都用库中的 std: 打乱整个候选列表并取第一个元素,所用引擎由进程内所有此类打乱共享;定时生成的列与行则取自游戏自有的生成器。
在 4.2.6.401 版本中,这三处都不打乱列表。每一处把候选列表的长度传给一个新的辅助函数,得到一个索引,再取未打乱列表中的对应条目。定时生成的列与行也通过同一辅助函数选择,传入的数量分别为 9 和 5。可执行文件中已不再有神器使用的 std: 实例。114.2.6.401 版本的索引辅助函数所有地址都位于 4.2.6.401 可执行文件中。前五个是进化选择、4 阶生成,以及 3 阶定时生成的类型、列与行的调用处;其余依次是辅助函数、其 uniform_int_distribution 例程、mt19937 步进例程与引擎构造函数。辅助函数将数量与 2 比较,低于该值时返回 0。列与行的调用分别传入 9 和 5。构造函数从八个 random_device 字经 seed_seq 为引擎播种,且只有辅助函数直接引用该引擎。在 4.2.4.399 可执行文件中,这三处选择调用 random_shuffle,列与行取自游戏生成器;4.2.6.401 可执行文件中没有供神器使用的 random_shuffle 实例。PLANTTYPES.json 与 ARTIFACT.json 在两个版本中完全相同。0x100a22dc40x100a20f840x100a220080x100a21a6c0x100a21a780x100a231480x100a58c280x1002278f80x100a5873c
辅助 函数 及其 引擎
列表只有一项或为空时,辅助函数不进行抽取,直接返回 0。列表有 项时,它用 libc++ 的 uniform_ 抽取 0 到 之间的均匀索引。每次尝试取一个 32 位输出,按范围所需的位数做掩码;值过大时重新抽取。
引擎是只有这个辅助函数使用的 std:。每次启动后,辅助函数第一次以至少两个候选运行时构建该引擎:来自 std: 的八个 32 位字经过 std: 为其状态播种。可执行文件中没有其他代码直接引用这个引擎,也没有代码重新播种它。1
未 改变 的 部分
候选列表及其顺序、源植物的处理顺序以及放置规则,都与 4.2.4.399 版本相同。声明数据同样未变:PLANTTYPES. 与 ARTIFACT. 和 4.2.4.399 版本的完全相同。
游戏中的其他列表打乱仍使用共享引擎,包括退化神器的预览,以及关卡加载时打乱的墓碑袋。
注释
每条论断的依据:代码路径,以及追踪到它的原生地址。
- 1
4.2.6.401 版本的索引辅助函数
所有地址都位于 4.2.6.401 可执行文件中。前五个是进化选择、4 阶生成,以及 3 阶定时生成的类型、列与行的调用处;其余依次是辅助函数、其 uniform_int_distribution 例程、mt19937 步进例程与引擎构造函数。辅助函数将数量与 2 比较,低于该值时返回 0。列与行的调用分别传入 9 和 5。构造函数从八个 random_device 字经 seed_seq 为引擎播种,且只有辅助函数直接引用该引擎。在 4.2.4.399 可执行文件中,这三处选择调用 random_shuffle,列与行取自游戏生成器;4.2.6.401 可执行文件中没有供神器使用的 random_shuffle 实例。PLANTTYPES.json 与 ARTIFACT.json 在两个版本中完全相同。
0x100a22dc40x100a20f840x100a220080x100a21a6c0x100a21a780x100a231480x100a58c280x1002278f80x100a5873c