Modded物品随机化 (MIR) (作者:SerpentineShel)

Modded物品随机化 (MIR) (作者:SerpentineShel)

此mod为您提供透明的MCM控制,用于游戏中模组战利品的随机分布,而不会取代基础游戏战利品。仅使用一个在运行时生效的pak文件,并在您打开容器时放置战利品。

MIR — 模组物品随机化

整合你所有的模组装备,并按照你的设定将其投入世界各地的战利品中。 本模组在 MCM 中为你提供了清晰、详细的控制选项,用于控制模组物品的投放位置——宝箱、尸体、衣柜、书架和木桶中,每种容器均可单独选择——投放频率由你控制,并可依据章节和玩家等级进行限制。衣柜提供服装,书架提供卷轴,木桶提供药水和箭矢,如果你愿意,还可以让模组在每个容器中提供更多种类的物品。本模组严格为添加式:它绝不会移除、替换、移动或重新定价任何物品。

如果你运行着几十个装备模组,你很可能见不到其中大部分装备。它们永远不会出现,因为模组装备通常是通过教程宝箱、营地宝箱、商人或控制台命令获得的——而不是通过正常游戏流程。MIR 会钩住战利品出现的瞬间:当你第一次打开宝箱、衣柜、书架或搜刮尸体时,MIR 会进行判定。若判定成功,你的模组池中的一件物品就会出现在你第一次打开该容器时的战利品面板中。

  • 为什么又做一个装备随机模组? 我用过其他装备随机化模组,但想要一个更符合我个人偏好的。你的偏好可能与我不同,所以我不说这个模组比其他模组更好——只是有所不同。
  • 主要区别: 这个模组严格用于根据你的偏好,通过游戏玩法将模组物品添加到游戏中。基础游戏战利品不受任何影响。
  • 无需额外运行程序。 MIR 在运行时自我生效;只需要一个 pak 文件。它会自动索引你所有的模组物品,并在你搜刮战利品时将其添加。
  • 专为精细调整、透明度和易用性而设计。 你可以排除特定物品和模组,MCM 中的每一项控制都很详细,而且(我希望)易于理解。

github.com/Shiney1965/BG3-Modded-Item-Randomizer

如何使用——请阅读

MIR 需要模组配置菜单 (MCM)。如果 MCM 不在你的加载顺序中,MIR 将自行禁用,不会向游戏添加任何内容。 它会通过一个游戏内小窗口和其日志告诉你这一点。请将 MCM 加载在 MIR 之上。

  • 使用默认设置运行一个游戏会话,正常游玩即可。25% 的判定率意味着平均每四个 MIR 实际判定的容器会出现一次物品——而且你打开的大部分容器(杂物、私人容器、携带的袋子、营地宝箱)根本不会被判定。你不会觉得物品像水龙头一样不停往外冒。
  • 打开 MCM(按下 INSERT 键,或从 ESC 菜单进入)并找到 MIR:四个标签页——常规、物品池、稀有度、排除列表——外加自定义的 MIR 浏览器标签页,在那里你可以调整类别份额并排除模组或物品。
  • MIR 浏览器上的每个类别行都显示开启、受限或关闭状态,并说明原因。权重设为 0 是那里关闭某个类别的唯一方式;一个只能出现在一种容器中的类别会通过该容器的设置来关闭。
  • 想要木桶和板条箱也参与?在“常规”标签页勾选 包含杂物容器。它们默认仅限于消耗品,该设置本身也会将游戏自有的药水、箭矢和炼金材料放入杂物容器——且仅限杂物容器。

功能

  • 模组战利品出现在你真正能找到战利品的地方——宝藏箱、保险箱、钱柜、石棺等,以及你第一次搜刮的每具尸体。预先放置的尸体也算;无需战斗。
  • 衣柜提供服装。它们有自己独立的容器类型,默认开启,装满外观服装和带属性的护甲,而不是巨剑。你的营地衣柜永远不会被触碰。
  • 书架提供卷轴。书柜、成排书籍、书堆、卷轴架和书桌是它们自己的类型,默认开启,包含卷轴——原版和模组的——并可选择添加其他所有物品。
  • 杂物容器提供消耗品。默认关闭。开启后,木桶、板条箱、花瓶和骨灰瓮会提供药水、箭矢和炼金材料——原版和模组的——而这些物品绝不会泄漏到宝箱中。
  • 可微调的两阶段判定。出现频率(基础概率、每次机会判定次数)与出现内容(每个类别有 0-100 的滑块)相互独立。MIR 浏览器会显示每个类别在每种容器中的实时百分比。
  • 同一存档中装备绝不会重复掉落——一个按存档记录的账本会将其从池中永久移除。消耗品(药水、箭矢、材料、卷轴)不受此限,可以重复出现。
  • 排除浏览器。按数量排序的每个提供物品的模组;深入模组可勾选排除整个模组或单个物品。即时生效,按 MCM 配置文件持久保存。
  • 模组已放置在游戏世界中的物品默认排除在池外,因此 MIR 绝不会发给你一份作者预设掉落的重复品。你可以单独将个别物品重新纳入。
  • 已知的实用工具模组默认被排除在外——拍照模式戒指、作弊生成器、框架库。
  • NPC 和队友装备被永久排除——没有开关。起始装备升级、NPC 重塑和进化、队友外观模组、加入队伍的队友模组。那些装备属于其角色;在遇到阿斯代伦之前,在一个地精的脚柜里发现他定制的外套不是什么好功能。如有要求,可以添加更多模组到列表中。
  • 可选的稀有度窗口,可根据你的角色等级和章节限制可生成的稀有度。
  • MIR 的设置不会写入你的存档。它们保存在 MCM 的按配置文件存储中。在游戏中途安装或移除都是安全的。

要求

  • 博德之门 3——在补丁 8 上开发和测试。
  • BG3 脚本扩展器(版本 29+)。必需——MIR 完全是脚本扩展器 Lua 脚本。
  • 模组配置菜单 (BG3MCM)——硬性要求,运行时强制检查。针对 v1.40.1 开发和测试。将其加载在 MIR 之上。如果 MCM 不在你的加载顺序中,MIR 不会构建物品池,不会对任何东西进行判定,也不会注入任何内容,并会在游戏内和日志中说明 ( !mir_status 显示 mcm=MISSING - MIR DORMANT )。
  • 一个模组管理器(推荐 BG3 模组管理器)——MIR 必须在你活动的加载顺序中。
  • 仅限 Windows(脚本扩展器仅支持 Windows)。MCM 的配置窗口需要使用鼠标和键盘操作。

安装 / 卸载

  • 将 MIR.pak 放入 %LocalAppData%\Larian Studios\Baldur's Gate 3\Mods,在 BG3MM 中激活,将模组配置菜单放在 MIR 之上,保存加载顺序,启动游戏。
  • 验证:脚本扩展器控制台会打印 MIR v1.0.1 ... 已加载横幅;输入 server,然后输入 !mir_status,查找 catalogBuilt=true 和 mcm=detected。
  • 卸载:停用并删除 pak。存档中途卸载是安全的——MIR 只会添加东西;已生成的物品只是你仍拥有模组的普通物品,它们会留在原处。
  • 游戏中途安装也完全没问题。MIR 只识别安装后你交互的容器和尸体。你上周清空的一个宝箱,就 MIR 而言尚未判定过,所以下次打开时它会进行判定。

完整的说明、设置参考和控制台参考位于下载中的 README 和 INSTALL 文件中(Markdown、Word 和 PDF 格式)。

配置——四个 MCM 标签页,外加 MIR 浏览器

  • 常规——主开关、基础生成概率、每次机会判定次数、尸体判定、包含杂物容器(默认开启 仅消耗品,这也会单独允许原版和模组消耗品进入杂物容器)、螺壳舰飞船排除、物品获得通知,以及容器类别控制:衣柜(外观服装 / 带属性服装 / 也生成非服装物品)和书架(卷轴 / 也生成所有其他物品——两项都不勾选则书架不生成任何物品)。
  • 物品池——包含基础游戏物品、外观物品、模组消耗品、基础游戏消耗品、卷轴(一个开关同时控制原版和模组;书架无论如何都会得到卷轴);实用程序围栏;已放置在游戏世界中的物品过滤器。
  • 稀有度——可选,默认关闭。根据角色等级(1-5、6-10、11-15、16-20+ 级区间)和章节限制可生成的稀有度范围,为每个区间选择最低和最高稀有度;两条规则中最具限制性的那条生效。炼金材料不受窗口限制(游戏未赋予它们稀有度,因此在一个限定下它们都会消失)。
  • 排除列表——MIR 精选的实用程序和 NPC 装备围栏的只读视图,已根据你的加载顺序筛选,外加你自己的按模组、按物品以及无论如何都允许的 UUID 列表。
  • MIR 浏览器(自定义标签页)——唯一编辑类别份额的地方:16 个类别(武器、盾牌、身体护甲、头盔、手套、靴子、斗篷、戒指、项链、营地服装、营地鞋、内衣、药水和灵药、箭矢、炼金材料、卷轴),每个都有衍生的开启 / 受限 / 关闭状态,每种容器的实时百分比,以及 0-100 的权重滑块。还有可搜索、分页的排除浏览器。

每项更改即时生效——无需重启,无需重新加载。设置按 MCM 配置文件持久保存,全局跨存档——绝不在存档文件中。

兼容性

兼容:各类装备 / 护甲 / 服装模组(它们是原材料)、修改商人库存的模组(MIR 不接触商人)、添加容器或尸体的模组。

根据代码层面而非联合游戏测试的分析,也预期能共存:容器战利品控制 (Volitio) 和随机物品框架 (GraphicFade)(除非你将 MIR 应用于游戏物品)。

不兼容——不要将以下模组与 MIR 同时运行:随机装备战利品及其系列模组、Fade 的装备分配 AIO 的随机化功能,以及任何通过重写战利品数据来随机化或重新放置战利品的其他模组。其中两个同时使用轻则导致生成率叠加,重则产生冲突的战利品表。请选择一个。

注意事项:

  • 任务模组: 放置在特定 NPC 或特定世界容器中的物品默认被排除在外,StoryItem/IsKey 模板也始终被排除,但任务模组通过自身脚本生成的物品无法被检测——如果你想要确定性,请手动排除此类模组。
  • 自动搜刮 / 战利品吸尘模组可能会绕过 MIR。MIR 在玩家打开容器或首次搜刮尸体时触发的引擎事件上进行判定;一个能在远处清空容器的模组可能不会触发这些事件。如果你从未看到任何生成物品,这是首先要检查的。
  • 远程容器访问(远程营地宝箱命令等)会完全绕过 MIR。这是有意设计的。
  • 多人游戏: MIR 以服务器为权威,由主机管理设置。非主机玩家的排除写入将被拒绝。

已知限制

  • MCM 是强制性的。没有仅默认模式。 游戏内通知是一个脚本扩展器窗口,因此在脚本扩展器的 UI 层损坏的情况下,唯一的通知就是 MIR_log.txt 中的横幅。
  • 如果你开启“包含基础游戏物品”,基础游戏重复是预期的——游戏会手动放置原版物品,在 MIR 无法看到的关卡数据中,所以 MIR 无法知道一个原版物品已经在等着你。这就是该设置默认为关闭的原因。模组物品则不同:MIR 可以看到模组何时放置自己的物品,并默认将这些物品排除在池外;!mir_placed_mods 会列出放置自己物品的模组。
  • 放置过滤器会移除外观重型物品池中的很大一部分——几乎所有在背包中提供整个目录的服装模组都会被识别,这正是过滤器应有的工作方式。!mir_tables 和 !mir_placed_mods 显示你自己的数据;如果它移除的比你想要的多,请将其关闭。
  • 游戏后期出装备率下降——装备不会重复,因此随着游戏进程推进,类别会逐渐清空。添加更多模组或提高基础概率。
  • 重新加载会重新判定。 没有确定性种子:重新加载一个在容器打开前的存档,判定会再次进行。
  • 容器分类基于名称。盾牌通过副手槽检测(模组的副手武器可能被标记为盾牌);药剂师和裁缝台算作书桌;有一个酒架形似卷轴架。模组卷轴检测是启发式的。
  • MCM 的一些怪癖:只读的排除视图仍显示可点击的复选框(点击无效),MCM 的列表组件可能需要重新打开标签页才能显示从浏览器中写入的排除项。

控制台命令

脚本扩展器控制台,先输入 server:!mir_status !mir_pool !mir_share !mir_exclude !mir_include !mir_excludes !mir_forceinclude !mir_rarity !mir_clutter !mir_wardrobes !mir_bookshelves !mir_scrolls !mir_consumables !mir_util !mir_placed !mir_enable !mir_chance !mir_rolls !mir_dry !mir_mods !mir_placed_mods !mir_tables !mir_ledger !mir_rebuild !mir_mcm_sync !mir_flush。完整表格见 README。大多数控制台更改仅限当前会话,并会在任何完全重新同步时被 MCM 值替换——但 !mir_share、!mir_exclude、!mir_include 和 !mir_forceinclude 会通过 MCM 写入并持久保存。

鸣谢

  • 作者:Serpentine (SerpentineShel)
  • BG3 脚本扩展器:Norbyte——MIR 完全构建于此之上
  • 模组配置菜单:AtilioA 及贡献者——整个配置界面
  • Larian Studios——感谢 MIR 所借重的战利品系统
  • 感谢 BG3 模组社区,以及让 MIR 值得运行的装备模组作者们

AI 使用声明

MIR 在开发过程中获得了 AI 编程助手(Anthropic 的 Claude)在代码、研究和文档方面的大量协助。其中不包含任何 AI 生成的艺术、图像、音频或其他媒体——只有代码和文本。所有设计决策、测试和最终发布均由作者完成。

源代码

MIR 是开源的。完整源代码(脚本扩展器 Lua、MCM 蓝图、构建脚本、文档)在 GitHub 上: github.com/Shiney1965/BG3-Modded-Item-Randomizer

许可证

MIT——完整文本随下载附送,名为 LICENSE。MIR 不捆绑任何第三方文件;请参阅下载中的 LICENSE-THIRD-PARTY.md。欢迎在你的模组中自由复用代码;只需保留版权声明。

报告问题

在本页面评论或在 GitHub 上开启 issue,请附上你的 BG3、脚本扩展器和 MCM 版本,MIR_log.txt 的相关部分(位于你的脚本扩展器文件夹中),以及 !mir_status 和 !mir_pool 的输出。