cn_xc-RandomValueMod icon

RandomValueMod

抓取时随机化贵重物品价格。支持黑白名单、现金袋保护、详细日志。配置采用 BepInEx 原生系统,支持 REPOConfig 游戏内编辑。

By cn_xc

CHANGELOG

📜 更新日志

v1.8.3 (代码优化与修复)

  • 优化:调整网络组件初始化时机,避免在非必要情况下过早创建 PhotonView。
  • 修复:解决某些情况下因网络组件未就绪导致的潜在 RPC 调用问题。
  • 兼容性:完全兼容 v1.8.2,功能逻辑不变。

v1.8.2 (多人同步 + 局间随机种子)

  • 核心新增:多人游戏支持!所有玩家的价格随机化结果一致,配置由主机强制统一。
  • 局间变化:每局开始时会根据关卡种子混入随机计算,同一物品在不同关卡中价格倍率不同,增加重复可玩性。
  • 同步机制
    • 主机在关卡开始时通过 RPC 广播配置(倍率、黑白名单等)和种子。
    • 客户端收到后覆盖本地配置,确保计算一致性。
    • 新玩家中途加入时会自动收到当前配置和种子。
  • 性能优化:沿用确定性随机算法,无需传输价格值,零网络开销。
  • 兼容性:完全兼容 v1.8.1 的单人模式;多人游戏需所有玩家安装此模组。

v1.8.1 (文档更新)

  • 文档:在 README 中新增“推荐搭配的模组”章节,列出用户收集整理的可一起使用的 100+ 款模组,并按主题分类。
  • 兼容性:在功能特点中明确说明与 Empress Currency 同时使用互不影响。

v1.8.0 (最终稳定版 - 独立重构)

  • 核心基线:基于 v1.7.0 的稳定架构,彻底移除所有外部依赖(AdvancedREPO.Config 及其 Reloaded 版本)。
  • 抓取时机:回归 抓取时随机化,采用验证成功的补丁签名 GrabStarted(PhysGrabber player),确保价格稳定生效。
  • 配置系统:改用 BepInEx 原生配置,支持 REPOConfig 游戏内编辑,无需额外库。
  • 性能优化:保留反射缓存机制,加入 modifiedItemIDs 确保每个物品只随机一次。
  • 代码精简:吸收 v1.7.x 实验分支的经验,选择最简洁稳定的方案。

v1.7.x (实验分支 - 未公开发布)

这一系列版本记录了从 v1.7.0 到 v1.8.0 之间的技术探索,均未公开发布:

  • v1.7.3:尝试公共化访问字段,因 DLL 兼容性问题放弃。
  • v1.7.4:回退到反射,继续使用 AdvancedREPO.Config Reloaded。
  • v1.7.5:尝试将配置同步代码内嵌到模组中。
  • v1.7.6:尝试生成时随机化(Awake),被游戏覆盖。
  • v1.7.7:尝试生成时随机化延迟帧(Start),效果不稳定。
  • v1.7.8:回归抓取时随机化,修正补丁签名,验证成功。
  • v1.7.9:优化抓取逻辑,为最终版做准备。

v1.7.2 (文档调整)

  • 新增:将抖音群链接提前至 README 靠前位置,并添加“我是代码新手”声明。
  • 文档:优化文档结构,提高可读性。
  • 兼容性:完全兼容 v1.7.1,未改动任何功能代码。

v1.7.1 (文档调整)

  • 更新:更新文档说明,仅文档调整,功能代码与 v1.7.0 完全相同。

v1.7.0 (新增公开 API)

  • 新增:公开 API RandomValueAPI,包含 OnItemRandomized 事件和 GetItemPrice 方法。
  • 优化:内部代码整理,原有功能完全不变。
  • 兼容性:完全兼容 v1.6.3 的所有功能。

v1.6.3

  • 移除:不再依赖 REPOConfig,配置同步仅通过 AdvancedREPO.Config 实现。
  • 恢复:基于 v1.5.9 稳定版本,确保所有核心功能正常运作。
  • 优化:简化依赖列表,降低玩家安装门槛。

v1.6.2 (内部测试版)

  • 移除:移除对 REPOConfig 的依赖(未公开发布,仅内部测试)。

v1.6.1 (内部测试版)

  • 调整:对颜色反馈代码进行优化(未公开发布,仅内部测试)。

v1.6.0 (内部测试版)

  • 新增:价格颜色反馈功能(未公开发布,仅内部测试)。

v1.5.9

  • 修复:修正了提示信息中倍率计算错误的问题。
  • 优化:代码中传递原价给日志函数,确保计算准确。

v1.5.8

  • 修复:将价格字段读写方式从 FieldRef 回退为传统反射,确保修改成功。
  • 增强:在价格修改前后添加详细日志输出。

v1.5.7

  • 性能优化:尝试使用 FieldRef 代替反射(发现兼容性问题,v1.5.8 已回退)。
  • 代码精简:添加辅助方法 CreateBoolConfigCreateFloatConfig

v1.5.6

  • 调整:将默认最小倍率从 0.8 改为 0.5,默认最大倍率从 2.5 改为 2.0

v1.5.5

  • 增强:模组启动时打印当前倍率值,便于确认配置加载。
  • 调试:在价格计算函数中添加日志输出(仅在详细日志开启时显示)。

v1.5.4

  • 修复:将所有布尔配置项的验证方式从 .Acceptable() 改为 .Range(false, true)

v1.5.3

  • 修复:为所有布尔配置项添加 .Acceptable(new bool[] { true, false }) 尝试解决范围验证错误。

v1.5.2

  • 更新:更新文档说明。

v1.5.1

  • 修复:在 CreateConfigEntries 中为每个配置项添加 .File("RandomValueMod.cfg") 调用,解决空引用异常。

v1.5.0

  • 修复:移除了不可访问的 Sync.ApplyLocal() 调用,解决编译错误。
  • 完善:确保配置同步机制正常工作,所有配置项由 AdvancedREPO.Config 自动管理。
  • 版本:提升主版本号至 1.5.0,标志着配置同步架构的成熟稳定。

v1.4.9

  • 重大重构:将配置系统迁移至 AdvancedREPO.Config,实现主机强制统一配置。
  • 移除:所有手动编写的价格同步网络代码(RPC、超时回退等)。
  • 优化:基于“确定性随机”算法,客户端独立计算相同价格,零延迟。

v1.4.8

  • 增强:网络同步组件在物品生成时立即添加,确保 PhotonView 及时注册。
  • 新增:客户端网络请求超时机制,默认 2 秒后回退到本地计算。

v1.4.7

  • 更新:更新文档说明。

v1.4.6

  • 修复:修复了 Photon RPC 参数错误,解决多人游戏同步问题。

v1.4.5

  • 文档更新:更新 README,添加指向旧版(v1.3.9,含重量随机化)的链接。
  • 状态声明:明确声明旧版软件包已被标记为已弃用。

v1.4.4

  • 多人游戏优化:改进网络同步机制,添加客户端请求跟踪和重试机制。
  • 性能优化:网络请求清理机制,定期清理过期请求。

v1.4.3

  • 重大优化:大幅减少 Harmony 补丁数量,只补丁关键的抓取相关方法。
  • 性能修复:解决了游戏卡顿问题。

v1.4.2

  • 功能重构:将随机化时机从物品生成时改为抓取时。
  • 新增功能:抓取时触发价格随机化。

v1.4.1

  • 修复:添加详细调试日志,帮助排查抓取物品无反应的问题。

v1.4.0

  • 重构:移除所有重量随机化相关代码,专注于价格随机化。
  • 说明:重量修改易引发兼容性问题,故删除。

v1.3.13

  • 修复:静态类中的 Logger 调用错误,解决编译错误。

v1.3.12

  • 改进:网络同步代码,修复了双向同步的逻辑问题。

v1.3.11

  • 改进:网络同步组件的双向网络同步机制。

v1.3.10

  • 修复:主机与客户端单向同步问题,实现双向网络同步。

v1.3.9

  • 更新:更新文档说明。

v1.3.8

  • 更新:更新文档说明,增加单独的更新日志。

v1.3.7

  • 更新:更新文档说明,增加未来规划。

v1.3.6

  • 重构:移除所有重量和价格的默认值设置,完全尊重游戏原始数据。

v1.3.5

  • 修复:重量随机化中的 NaN 计算问题;单机模式下的网络警告问题。

v1.3.4

  • 恢复:完整的网络同步功能,包含 RPC 广播机制。

v1.3.3

  • 修复:模组加载时的依赖检测问题;移除重复集合定义。

v1.3.2

  • 新增:完整的网络同步功能框架。

v1.3.1

  • 修复:程序集引用问题,确保稳定编译。

v1.3.0

  • 重构:代码架构,提高了稳定性。
  • 新增:网络同步框架(实验性)。

v1.2.2

  • 更新:更新文档说明。

v1.2.0

  • 新增:现金袋随机化开关配置。
  • 优化:黑白名单系统关键词默认留空。

v1.1.0

  • 新增:完整的黑白名单系统,支持关键词匹配。
  • 改进:预设共享检测和修复机制。

v1.0.0

  • 初始版本发布:实现抓取时随机化贵重物品重量和价格的核心功能。