1
Gwent 正在恢复... 重写中

1 Gwent 正在恢复... 重写中

重制版模组,旨在恢复“开发过程中遗失”的昆特牌。通过控制台为已有存档提供升级途径。完全向后兼容,仅包含CDPR原始作品。

Bug修复

昆特牌修复...重写版 (GRR)

概述

"昆特牌修复...重写版"(GRR)灵感来源于adamaskoff最近对旧模组的更新,而该旧模组本身是对更早模组的更新。

但这次有一个控制台命令可以升级已有的游戏。

并且在控制台明确请求之前,不会给玩家任何恢复的卡牌,因此可以保持完全的原始兼容性。

代码基于新文件重写,所以差异很干净。

可选下载 - 包含所有非英雄卡牌改为中立卡牌的版本(应Reoneress要求)。

这个模组是关于什么的?(简短技术讨论)

在内部,玩家可以拾取或赢得的"卡片物品"与在昆特牌(GwintManager类)中使用的"昆特牌卡片"是完全不同的实体。当玩家找到一张卡片物品时,该卡片会作为不可见物品添加到物品栏中,然后一张新的昆特牌卡片会被添加到GwintManager中。理论上,这应该是一对一的映射关系。但看起来负责处理北方领域和尼弗迦德牌组的人员搞混了,导致一些卡片物品被映射到同一张昆特牌卡片上(形成堆叠卡片),而其他昆特牌卡片则未被使用。

此外,卡牌物品的命名规则为"xxx; xxx2; xxx3",而图片命名规则为"xxx; xxx_1; xxx_2"。这导致了一些图片分配错误的情况。

GRR 试图解决这一问题,同时避免添加任何非 CDPR 的内容。

原版模式(100%向后兼容)

  • 安装模组后,AI对手将开始使用恢复的卡牌。
  • 游戏平衡性不受影响,因为这些只是旧卡牌的替代版本,仅更换了新图片。
  • AI卡组不会被保存,而是每次随机生成。
  • 因此如果卸载模组,恢复的卡牌会安全消失,不会留下任何痕迹。
  • 玩家不会获得任何恢复的卡牌,因为这样的存档游戏将无法与原始版本保持100%一致。玩家可以通过下文描述的控制台命令,用恢复的卡牌替换自己堆叠的卡牌。这是与旧模组的主要区别——在旧模组中,开始新游戏会让玩家获得恢复的卡牌,因此无法确保100%回归原始版本。
  • 玩家可能会在某些卡牌上看到新的固定图片(例如劣质步兵)——如果卸载模组,这些图片会消失。

命令 "grrUpgradeSafe"(仍保持向后兼容)

GRR允许玩家通过控制台命令 grrUpgradeSafe 自动将卡牌替换为带有附加功能的替代版本

这将替换《巫师3》中一直存在的部分卡牌为替代版本。存档仍然向后兼容,但并非完全相同。如果卸载该模组,被替换的卡牌将保持为独立卡牌(不会堆叠),且大多数会恢复为普通基础图片。

此功能可以安全地多次调用。 并且应该如此,以替换下一批被掠夺的卡牌。

建议调用此函数来使用此模组。

命令 "grrUpgradeRisky"(非向后兼容)

替代蓝衣铁卫卡牌和第二座攻城塔的卡牌原本仅以图片形式存在,因此在本模组中被创建出来——这意味着它们不具备向后兼容性。

玩家可以通过控制台命令:grrUpgradeRisky 替换其基础的蓝条纹卡牌,并免费获得一个新的攻城塔

如果保存此类游戏,将不兼容原版游戏。 没有GRR的情况下,昆特牌会损坏,因为其代码无法处理不存在的卡牌。

由于GwintManager类的原生代码实现不佳,恢复给玩家的卡牌无法撤销(据我所知)。

一些更技术性的讨论

我不确定100% - 但看起来对于任何收到的卡牌,GwintManager都会在其内部数组中生成一个条目,存储卡牌ID和卡牌数量。移除卡牌会减少该数量,但条目本身永远不会被删除。因此,虽然这听起来可能很奇怪,被移除的卡牌"仍然存在于数据库中,数量为0"。这仍然算作"存在"并破坏了Gwent。所以一旦卡牌被添加并保存,就永远不会被移除。对于"安全"卡牌没有问题,这些卡牌在原版中也存在。但对于"风险"卡牌则没有兼容性。

Mod添加了更多命令,玩家可以(自行承担风险)使用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 进行的升级

堆叠卡牌 升级后
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]