完美升级模块(PUM)

完美升级模块(PUM)

为游戏中所有科技升级模块提供最佳属性,并可通过编辑单个值轻松调整它们的相对强度。提供兼容AMUMSS的Lua版本,设计上非常易于更新和维护。甚至无需更改代码就能识别新的/未来的模块(无缩放)。

[color=#e69138][size=6][u][font=Verdana]这是什么[/font][/u][/size][/color]

这是一个《无人深空》的模组,使用 Lua 编写,配合 NMS 的 [url=https://www.nexusmods.com/nomanssky/mods/957]AMUMSS[/url] 模组构建器使用。[color=#00ffff]创建此模组[u]必须[/u]使用 AMUMSS。[/color]

此模组会扫描游戏中的每一个[color=#6fa8dc]技术升级模块[/color],并将它们设置为[color=#93c47d]最佳可能的[/color]原版/默认值——[color=#6fa8dc]包括更高和更低的值[/color]——具体取决于属性类型。这是因为 HelloGames 编写升级属性的方式——并非每个属性都是数值越高越好。有些属性数值越低越好,而此模组已经[color=#6fa8dc]将所有属性行进行了适当的分类[/color]。

此外,此模组还提供一个[color=#f6b26b]可选的[/color][color=#6fa8dc]自定义功率缩放功能[/color]。这让你可以快速轻松地[color=#6fa8dc]调整所有模块数值的强度[/color],使其大约达到你想要的强度(更强或更弱)。只需[color=#f6b26b]修改 Lua 脚本中的一个数字[/color],然后用 AMUMSS 重新编译即可。你可以将模块设置为大约增强 25%,或使其大约减弱 40%,或者疯狂一点尝试让它们增强 3 倍——一切由你决定。[color=#93c47d]默认情况下,此模组不含任何缩放,以遵循原版属性值。[/color]

此模组现在还提供一个[color=#f6b26b]可选[/color]设置([color=#ea9999]默认关闭[/color]),用于[color=#6fa8dc]覆盖技术升级的安装数量上限[/color],即它们[color=#6fa8dc]过载[/color]前可安装的数量。此功能是为了帮助那些怀念在(NMS v4.0 中已移除的)通用物品栏中安装额外技术的玩家,让你可以将它们全部重新安装到新扩展的技术物品栏中。

此模组的灵感部分来源于 JustRuthless 的 [i]Max Technology Stats[/i] 模组。由于他已从 NMS 模组制作中退休,Babscoole 和我接手了他的脚本维护工作,我决定从头重写该模组的脚本,以便更容易保持更新。在此过程中,我决定添加轻松缩放属性的功能。

由 Babscoole 更新并维护,经许可发布。PUM 的功劳归 DarkScythe。:) 原始 PUM 页面已隐藏,并提供了指向此页面的链接。

[font=Verdana][size=6][color=#e69138][u]可自定义内容[/u][/color][/size][/font]

默认情况下,此模组的[color=#f6b26b]功率缩放设置为 1[/color];即[color=#93c47d]没有任何缩放[/color]。
这样,属性“开箱即用”应完全遵循默认的原版数值,且[color=#93c47d]重新编译将自动采用 HG 的任何平衡性更改[/color]。

还有一个[color=#f6b26b]可选设置[/color]用于更改技术过载上限,该设置[color=#ea9999]默认禁用[/color]。
如果启用,则可以调整[color=#6fa8dc]技术模块过载前允许的数量[/color]。
请记住,[color=#ea9999]启用此设置将强制模组编辑一个额外的全局文件,这可能会导致与其他模组冲突。[/color]

如果你希望尝试更强大或更弱的升级模块,可以用任何文本编辑器打开 Lua 脚本,将名为 [color=#ffd966]powerScale[/color] 的变量改为[color=#ea9999]至少 0.1[/color] 的任意数字,然后重新编译脚本。就这样!我将最小值设为 0.1,因为再低的话你还不如不装备任何升级。

此模组完全兼容[color=#6fa8dc]用户输入请求功能[/color],允许你在 AMUMSS 编译脚本时直接从控制台[color=#6fa8dc]修改这些设置[/color],[color=#93c47d]无需打开或编辑文件本身[/color]。

请注意,虽然你可以将功率缩放设置为任意值(只要大于 0.1),但游戏中很多属性是以乘数形式设置的,因此此模组会以定义的功率缩放对这些乘数进行指数缩放。我强烈建议对你想要定义的任何自定义值保持保守。(更详细的技术说明见下文。)

[color=#e06666][size=4]警告![/size][/color]
如果你决定[i]意外地[/i]用“功率缩放 100 倍”的等离子发射器一枪[color=#e06666]核平整个星球[/color],我对任何死亡/永久存档被清除概不负责。

HG [i]尚未[/i]修复 X 级中子炮升级的 bug,该升级在 v4.30 中被加强了。因此,X 级中子炮升级仍然比 S 级差,我在此脚本中保留了可选代码来增强它们。此功能的描述详见下文,来自此模组的先前版本:

作为 v4.30 更改的一部分,HG 增强了所有中子炮升级模块,尤其着重于 A 级和 S 级模块的属性。
然而,虽然他们在技术上也增强了 X 级中子炮升级模块,但他们似乎忘记了给 S 级增强的幅度,这意味着截至目前,X 级中子炮升级严格来说比 S 级更差,直到 HG 抽空更新其数值。

在此期间,我添加了一组任意但合理的值来覆盖那些 X 级升级,使它们再次(略微)优于 S 级。
然而,由于此模组的前提只是为你提供最大的原版属性,[color=#93c47d]此覆盖默认禁用。[/color]希望启用此覆盖的人需要编辑 Lua 脚本并使用 AMUMSS 重新编译模组(一般操作说明在本页的 ReadMe 和 Docs 标签中。)

要启用覆盖,只需向下滚动到我标注的地方
[size=2]Main Script Completed[/size]
并在下一个可用行添加第三个短横线,使
[size=2]--[[[/size]
在第 602 行变为
[size=2]---[[[/size]
即用三个短横线代替两个。

然后保存脚本并在 AMUMSS 中编译。之后要禁用覆盖,删除第三个短横线恢复为两个,保存脚本并重新编译。

可以向 overrideStats 表添加更多覆盖,按照添加条目的模式,每项为一个表,包含 3 个必需参数和 1 个可选参数:
[list]
[]模块的内部名称[/]
[]属性行的内部名称[/]
[]该属性的期望基础值[/]
[]可选,你想要应用于它的缩放类型(通过 powerScale 变量;可省略以不缩放/硬编码数值。)[/]
[/list]
请负责任地使用此功能!

[font=Verdana][color=#e69138][u][size=6]如何使用[/size][/u][/color][/font]

[list]
[][color=#00ff00]创建[/color]此模组非常简单:[/]
[/list][list=1]
[]下载模组包 [color=#a4c2f4].zip[/color] 文件。[/]
[
]通过 AMUMSS 处理提供的 Lua 脚本,以生成游戏的模组文件。[/]
[/list]
[font=Verdana][color=#e69138][size=6][u]使用提示[/u][/size][/color][/font]

[color=#e06666]请注意:[/color]与几乎所有其他修改升级模块属性的模组一样,此模组必须[color=#e06666]保持安装[/color]且[color=#e06666]处于未损坏状态[/color],模块才能继续提供“强制”的最佳属性。[color=#e06666]每当游戏更新导致此模组(以及所有其他类似模组)损坏时,所有已安装的升级模块属性将回退[/color]到安装此模组之前的状态。[color=#93c47d]一旦此模组更新并正常工作,它们的属性应该会恢复。[/color]

如果将[color=#ffd966]功率缩放[/color]改为除默认值 1 以外的任何值,我[u]强烈建议[/u][color=#e06666]保持新值相当保守[/color],因为它会以[color=#6d9eeb]指数方式[/color]应用于所有乘数值。

[color=#f6b26b]解释为何如此(数学警告:)[/color]
如果我们有一个“平坦”值,例如[color=#6d9eeb]超光速航行距离[/color],它被定义为[color=#ffd966]250[/color],然后在游戏中转换为[color=#ffd966]250 光年[/color],那么简单地将其乘以[color=#ffd966]2[/color]就得到预期的[color=#ffd966]500 光年[/color]距离,乘以[color=#ffd966]0.5[/color]就得到预期的[color=#ffd966]125 光年[/color]距离。这很直接,[color=#93c47d]所有类似这样的属性已经设置为以这种方式缩放[/color]。

然而,假设游戏文件中有两个乘数值:
[list]
[
][color=#ffd966]1.1[/color] 代表游戏中[color=#ffd966]+10%[/color]的属性加成[/]
[
][color=#ffd966]0.85[/color] 代表游戏中[color=#ffd966]-15%[/color]的属性加成[/]
[/list]
假设我们有[color=#ffd966]功率缩放为 2[/color],因为我们想将游戏内效果翻倍:
[color=#ffd966]+10%[/color] 加成的期望值应该是[color=#ffd966]+20%[/color]
如果做[color=#ffd966]1.1 * 2[/color],我们得到[color=#ffd966]2.2[/color],这在游戏中实际上是[color=#ffd966]+120%[/color];太高了。
如果做[color=#ffd966]1.1 ^ 2[/color],我们得到[color=#ffd966]1.21[/color],这在游戏中是[color=#ffd966]+21%[/color];略有偏差,但更接近预期。

另一方面,[color=#ffd966]-15%[/color] 加成的期望值应该是[color=#ffd966]-30%[/color]
做[color=#ffd966]0.85 * 2[/color] 得到[color=#ffd966]1.7[/color],将我们的[color=#ffd966]-15%[/color]加成变成了[color=#ffd966]+70%[/color]的惩罚。
做[color=#ffd966]0.85 / 2[/color] 得到[color=#ffd966]0.425[/color],给我们[color=#ffd966]-57.5%[/color]的加成;远超预期。
做[color=#ffd966]0.85 ^ 2[/color] 得到[color=#ffd966]0.7225[/color],即游戏中[color=#ffd966]-27.75%[/color];更接近预期,尽管仍然有一点“偏差”。

指数缩放在反向时也相对适用,例如[color=#ffd966]功率缩放为 0.5[/color]
[color=#6d9eeb]请参阅此模组页面上提供的截图示例。[/color]
这也是为什么我强烈建议将功率缩放保持在[color=#93c47d]最多 2-3[/color]左右,否则数值会开始与预期相差甚远。
功率缩放为[color=#ffd966]10[/color]会将我们[color=#ffd966]1.1[/color]的[color=#ffd966]10%[/color]加成变成惊人的[color=#ffd966]159%[/color]加成,而不是[color=#ffd966]100%[/color]。

[font=Verdana][size=6][color=#e69138][u]如何调整/重新编译[/u][/color][/size][/font]

此模组的编写方式经过刻意设计,使其非常容易调整并重新编译为新/自定义版本,或者在我因任何原因无法继续维护此模组时,为未来版本的游戏进行更新。

[color=#ffff00]主要要求是 AMUMSS 能正常工作。[/color]
这可能是此过程中最困难的步骤。请访问 [url=https://github.com/HolterPhylo/AMUMSS/releases]AMUMSS 的 github 发布页面[/url],下载最新版本的 [color=#a4c2f4]
.7z[/color] 文件,可用 [url=https://www.7-zip.org/]7-zip[/url] 或类似软件打开/解压。请注意,AMUMSS 需要特定的 [color=#a4c2f4].NET8[/color] 才能工作,至少目前如此。AMUMSS 前置要求的链接在其文档中;[color=#ffd966]请按照其说明进行安装、更新并使其正常运行。[/color]

[color=#00ff00]一旦 AMUMSS 准备就绪,剩余步骤就非常简单了。[/color]
[list=1]
[]获取此模组的 [color=#a4c2f4]Lua[/color] 文件副本[/]
[]获得 Lua 文件后,将其放入 [color=#a4c2f4]\AMUMSS\ModScript\[/color] 文件夹。[/]
[]运行 [color=#a4c2f4]BUILDMOD.BAT[/color] 并按照提示操作。[/]
[]如果你选择了 (Y)es 让它自动为你移动编译好的模组,那么你就完成了。如果没有,请按照之前“如何使用”部分中的步骤,将新模组文件夹从 [color=#a4c2f4]\CreatedMODS\ [/color]文件夹复制到你的《无人深空》[color=#a4c2f4]\MODS\[/color] 文件夹中。[/]
[]选择 (Y) [color=#a4c2f4]全局允许用户输入请求[/color],以便在编译期间更改脚本设置而无需编辑脚本本身。[/]
[/list][color=#00ff00] 完成![/color]你现在可以启动游戏了。

[color=#00ffff]如果你成功完成了所有这些步骤,那么每当你想更改升级模块的强度/过载时,只需再次编辑 Lua 中的 powerScale 变量,和/或运行 BUILDMOD.BAT 并允许用户输入请求,然后按照提示操作即可。[/color]

[color=#e06666]如果此模组过时且我无法维护它[/color],只需在 Lua 上运行 [color=#a4c2f4]BUILDMOD.BAT[/color] 而无需其他更改,就应该能更新模组使其与最新版游戏兼容。[color=#e06666]只有在重大更改导致脚本满是错误时,你才应该尝试阅读我在脚本中可调变量之后留下的文档来尝试修复它。[/color]

[font=Verdana][color=#e69138][size=6][u]更改的文件:[/u][/size][/color][/font]

供参考,此模组需要对一个关键文件进行更改。
[list]
[]METADATA\REALITY\TABLES\[color=#00ffff]NMS_REALITY_GCPROCEDURALTECHNOLOGYTABLE[/color].MBIN[/]
[/list]
[color=#a4c2f4]此模组[color=#e06666]仅在启用可选过载设置时[/color]才需要以下文件,否则跳过此文件:[/color]
[list]
[][color=#00ffff]GCGAMEPLAYGLOBALS[/color].GLOBAL.MBIN[/]
[/list]