
NGE - 昆特牌正在恢复...重写中...移植中...
一个NGE更新/移植版本,重制了一个旨在恢复"开发过程中遗失"的昆特牌牌的模组。通过控制台为已有存档提供升级功能。完全向后兼容,仅包含CDPR原始作品内容。
查看大图昆特牌恢复...重写版(GRR)
由 Maciej Polanski 制作的模组,用他的话来说,这是"受到 adamaskoff 最近对旧模组更新的启发,而这个旧模组本身也只是对更早模组的更新。"
新的 NGE 更新似乎破坏了模组的功能,因为它新增了 GOG 卡牌——杰洛特、希里和萝卜。
我更新/合并了旧模组中的 gwintManager.ws 脚本,将其替换为次世代更新中的版本。
这也应该能修复因在启用旧模组时获得 GOG 卡牌而损坏的存档文件!
以及 2 个 XML 文件:gameplay/items/def_gwint_cards_final.xml 和 gameplay/items_plus/def_gwint_cards_final.xml。
原作者的脚本 modGwintRestoreRewritten.ws 完全未被改动。
他们替换卡牌的方法和 gwintManager 行为基本保持不变。
因此,我将在此复制粘贴旧描述以供参考。遗憾的是,他们关闭了账户,所以我无法联系他们以获取许可并更新他们的旧仓库。然而,所有功劳都归于他们,是他们发现了问题并在原始模组中全面解释了一切。
要使用这些命令,需要先打开调试控制台,可以在这里找到。
安装
将 modGwentRestoreNGE 放入《巫师3》游戏目录下的 Mods 文件夹中即可。
版本(选择其一)
- 1.0s:手动版本,兼容原版,你需要自己运行命令。
grrUpdateSafe向后兼容,而grrUpdateRisky不兼容。 - 1.0a:自动魔法版本,与原版不兼容。当昆特牌菜单打开时自动执行命令。感谢 byblomod。
针对原版。
这个模组是关于什么的?(技术小谈)
在内部,玩家可以拾取或赢得的 "cards-items" 与在昆特牌游戏中使用的 "cards-gwent"(GwintManager 类)是完全不同的实体。当玩家找到一个 card-item 时,该卡牌会作为隐形物品添加到物品栏中,然后一个新的 card-gwint 会被添加到 GwintManager 中。理论上,这应该是一对一的映射关系。但看起来负责北方和尼弗迦德牌组的人员搞混了,导致一些 cards-items 被映射到一个 card-gwint 上(形成堆叠卡牌),而其他 cards-gwint 则未被使用。
此外,卡牌物品的命名规则是 "xxx; xxx2; xxx3",而图片的命名规则是 "xxx; xxx_1; xxx_2"。这导致了一些图片被错误分配。GRR 试图解决这个问题,同时避免添加任何非 CDPR 的内容。
原版模式(100% 向后兼容)
- 安装模组后,AI 对手开始使用还原卡牌。
- 平衡性不受影响,因为这些只是旧卡牌的替代版本,仅更换了新图片。
- AI 卡组不会被保存,而是每次随机生成。
- 因此如果卸载模组,还原卡牌会安全消失,不会留下任何痕迹。
- 玩家不会获得任何恢复的卡牌,因为这样的存档游戏不会与原始版本 100% 相同。玩家可以使用下面描述的控制台命令,用恢复的卡牌替换自己堆叠的卡牌。这是与旧模组的主要区别,在旧模组中开始新游戏会让玩家获得恢复的卡牌——因此无法 100% 确定恢复到原始版本。
- 玩家可能会在某些卡牌上看到新的固定图片(例如贫弱的步兵)——如果卸载模组,这些图片会消失。
命令 grrUpgradeSafe(仍保持向后兼容)
GRR 允许玩家通过控制台命令 grrUpgradeSafe 自动将卡牌替换为带有附加功能的替代版本。
这将替换《巫师3》中一直存在的部分卡牌,用替代版本替换 GwintManager 中的一些卡牌。存档仍然向后兼容,但不完全相同。如果卸载此模组,被替换的卡牌将保持为单独的卡牌(不会堆叠),并且大多数会恢复为普通的基础图片。
此功能可以安全地多次调用。
并且应该如此,以替换下一次掠夺的卡牌。
建议使用此模组时调用此函数。
命令 grrUpgradeRisky(非向后兼容)
替代蓝衣铁卫和第二座攻城塔的卡牌原本仅以图片形式存在,因此在本模组中被创建出来——这意味着它们不具备向后兼容性。玩家可以通过控制台指令替换原有基础蓝衣铁卫卡牌,并免费获得新的攻城塔:grrUpgradeRisky
该游戏如果保存,与原版不兼容。
没有 GRR,昆特牌会崩溃,因为其代码无法处理不存在的卡牌。
由于 GwintManager 类的原生代码实现不佳,恢复的卡牌添加到玩家后无法撤销(据我所知)。
一些更技术性的讨论
我不确定 100% - 但看起来对于每张收到的卡牌,GwintManager 都会在其内部数组中生成一个条目,存储卡牌 ID 和卡牌数量。
移除卡片会减少该数字,但条目本身永远不会移除。因此,虽然这听起来可能很奇怪,被移除的卡牌"仍然存在于数据库中,数量为 0"。这仍然被视为"存在"并会破坏游戏平衡。所以一旦卡牌被添加并且已保存,永远不会被移除。对于"安全"卡牌没有问题,这在原版中也存在。但对于"风险"卡牌则没有兼容性。
模组新增了更多玩家可用的命令(使用需自行承担风险),用于通过 GRR 管理卡牌:grrAdd(Id)、grrRemove(Id)、grrVanilla。最后一个命令会尝试恢复原版状态——但请注意上述限制条件。此外,我认为保存一张"存在但数量为 0"的卡牌可能会导致游戏不稳定。
GRR 的所有操作都在 GwintManager 内部进行,即仅适用于"cards-gwint"。
GRR 不会影响游戏世界("cards-items")完全无关,预计不会以任何方式影响"昆特牌收藏家"成就。遇到该成就问题的玩家,应使用标准函数 addCardByName(name) 或 additem(name)。卡牌名称可在文件 content0\scripts\game\gui\menus\gwintManager.ws 末尾找到,位于将"card-item"名称转换为"card-gwent"ID 的函数内。
参考表 - 升级 GRR 功能
| 原版卡牌(数量) | 替换为(ID) |
|---|---|
| 3x gwint_card_poor_infantry | gwint_card_poor_infantry[125]; gwint_card_poor_infantry2[126]; gwint_card_poor_infantry3[127] |
| 3x gwint_card_crinfrid | gwint_card_crinfrid[130]; gwint_card_crinfrid2[131]; gwint_card_crinfrid3[132] |
| 3x gwint_card_kaedwen | gwint_card_kaedwen[150]; gwint_card_kaedwen2[151]; gwint_card_kaedwen3[152] |
| 2x gwint_card_catapult | gwint_card_catapult[140]; gwint_card_catapult2[141] |
| 4x gwint_card_impera_brigade | gwint_card_impera_brigade[245] [...246...247...] gwint_card_impera_brigade4[248] |
| 3x gwint_card_nausicaa | gwint_card_nausicaa[250]; gwint_card_nausicaa2[251]; gwint_card_nausicaa3[252] |
| 3x gwint_card_blue_stripes | gwint_card_blue_stripes[160]; gwint_card_blue_stripes2[161]; gwint_card_blue_stripes3[162] |
| 0x | gwint_card_siege_tower2[171] |





还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。