Neow总是给予奖励

Neow总是给予奖励

NeowAlwaysRewards允许Neow奖励在自定义模式和每日挑战中显示,而不仅仅是标准模式。(适用于v0.107.1)

游戏玩法

NeowAlwaysRewards(现在支持多人游戏)

注意,你可以选择 专家 > 疯狂 > 全明星 > 并且仍然可以获得涅奥的祝福

功能简介

在原版游戏中,涅奥只在标准模式下给予祝福。原因可能在于自定义游戏中的挑战修饰符,如 草稿封印卡组专精疯狂全明星,因为这些选项在你与涅奥互动时实际上被视为一个可点击的祝福。使用此模组,你将先获得你选择的任何修饰符作为奖励,然后涅奥会给予你他通常的祝福。扩展涅奥祝福的模组也会照常生效。

与以下模组配合使用,可以让自定义模式拥有标准模式的所有功能:

适用于:

  • 标准模式
  • 每日挑战
  • 无额外涅奥选择的自定义模式
  • 具有任意数量额外涅奥选择的自定义模式
  • 多人游戏(已在2人队伍中测试)

工作原理

该模组使用 Harmony Prefix 替换了 Neow 类中的 OnModifierOptionsSelected 方法。我选择这个方法是因为我发现很少有模组修改它。

我为 GenerateInitialOption 方法添加了一个低优先级的 Harmony Postfix,以确保它最后执行。它的作用是临时清除修饰符并调用原始的 GenerateInitialOptions,以便涅奥奖励能够显示。完成后会恢复修饰符。我添加了保护机制,防止 GenerateInitialOptions 重复执行超过一次,以避免无限递归。具体来说:

  • 保留原始的修饰符选项序列
  • 检测最后一个修饰符选项何时被确定
  • 临时将 RunState.Modifiers 替换为空的 IReadOnlyList
  • 调用原版的 GenerateInitialOptions()
  • 恢复原始的修饰符

这使得游戏能够使用当前的原始逻辑或任何模组添加的 Postfix 来生成正常的涅奥奖励。

为什么采用这种方法

这比手动复制和编辑完整的 GenerateInitialOptions() 奖励分支更加稳健。

优点:

  • 在游戏更新时不易出错
  • 保留所有自定义模式修饰符的流程
  • 与其他对 GenerateInitialOptions() 进行 postfix 操作的模组有更好的兼容性

兼容性

此模组旨在对其他修改涅奥奖励的模组相对友好,尤其是那些通过 postfix GenerateInitialOptions() 来实现以下功能的模组:

  • 向奖励池中添加更多奖励
  • 追加第四个选项
  • 修改最终返回的选项列表
  • 此模组与 Sts2 v1.071 上的 ChooseTheAncient(一个更大的模组)兼容
    • 不过 NeowAlwaysRewards 是多余的,因此我不建议同时使用它们。

当多个模组对同一方法进行 postfix 操作时,如果你也使用 Harmony 的低优先级,补丁顺序仍然可能产生影响。

文件

  • Main.cs — 模组入口点和 Harmony 设置
  • NeowPatch.cs — Neow 流程补丁和辅助逻辑
  • CHANGELOG.md — 发布说明 / 开发历史

安装

将模组放置在:

Slay the Spire 2/
  mods/
    NeowAlwaysRewards/
      NeowAlwaysRewards.dll
      NeowAlwaysRewards.pck
      NeowAlwaysRewardsjson

问题反馈

未来工作

  • 监控与其他涅奥模组的补丁顺序交互
  • 如有需要,添加显式的 Harmony 排序
  • 清理剩余的调试日志

致谢与感谢

感谢 Alchyr。我是参考了他们的指南和模板来搭建我的 JellyBeans Rider 环境的: https://github.com/Alchyr/ModTemplate-StS2/wiki

感谢 Megacritic 让《杀戮尖塔2》的模组制作变得触手可及。

简而言之

NeowAlwaysRewards 通过保留特定修饰符的涅奥互动,并随后串联正常的涅奥奖励,使涅奥在标准、自定义和挑战式模式中保持一致体验。