
战斗撤销
添加一个战斗中的撤回系统。按Z键撤销上一张卡牌或药水,按Shift+Z键倒回整个回合。基于快照机制,恢复生命值、格挡、能量、牌堆、能力、意图和随机数。
查看大图StS2 Undo
把操作退回去 —— 在战斗中撤销出牌和回合
如果你的 STS2 是 beta 分支?
[这个文件(Sts2UndoMod-v0.0.12.zip)是 stable(稳定)分支的构建。 如果你在 Steam 中选择了 STS2 的 beta 测试(右键点击《杀戮尖塔 2》→ 属性 → 测试版),请改用 beta 分支的构建文件——打开本模组页面的“文件”标签,从那里下载 Sts2UndoMod-v0.0.12-beta.zip。如果在 beta 分支上运行这个 stable dll(反之亦然),第一次出牌时就会抛出 MissingMethodException,因为两个分支的 STS2 API 有所不同。
这两个文件之所以存在,只是因为 STS2 目前有两个并行的公开分支,且 API 有少量差异。一旦 STS2 将 v0.104.0+ 推送到公开的 stable 分支,这个 stable 文件将针对新 API 重新发布,两个文件会合并回一个下载。 如果你没有选择 beta 测试,这个文件就是你唯一需要的。
按 Z 键的效果
- 单步撤销 — 弹出最近的快照,并恢复到上一次出牌 / 使用药水 / 结束回合之前那一刻的精确战斗状态
- 整回合撤销 —
Shift+Z一键回退到当前玩家回合开始时的状态 - 战斗内撤销按钮 — 能量显示旁边会出现一个
↶ Z按钮;点击效果与按 Z 键相同 - 仅限战斗 — 撤销系统只在战斗进行中生效。地图上没有撤销,死亡动画结束后没有撤销,跨界面也没有撤销
- 30 个快照历史 — 每场战斗最多在内存中保留 30 个之前的状态;更旧的快照会被静默丢弃
工作原理
本模组会在以下任一动作开始时对战斗状态进行深度快照:
- 出牌(
PlayCardAction) - 结束回合(
EndPlayerTurnAction) - 使用或丢弃药水(
UsePotionAction、DiscardPotionGameAction)
按下 Z 键会弹出最近的快照并恢复以下内容:
- HP、格挡和能量
- 手牌、抽牌堆、弃牌堆、消耗堆(包括顺序)
- 所有生物身上的能力和层数
- 遗物、药水和球
- 怪物下一回合的意图
- RNG 状态 — 因此接下来的抽牌会与原本的走向完全一致
- 视觉状态 — 骨骼动画、色调、碰撞体和悬停提示焦点都会重置,与恢复的帧保持一致
这是一种快照方案,而不是命令/逆操作方案。要逐一还原 StS2 中每种状态交互的逆操作(例如“易伤”是由 X 遗物施加的,还是 Y 能力施加的,或是 Z 卡牌命中时施加的,等等)并不现实,因此本模组采用“捕获并恢复”的方式。
快捷键
Z— 撤销一步(上一次出牌 / 药水 / 结束回合)Shift+Z— 撤销到当前回合开始
你也可以点击能量显示旁边出现的 ↶ Z 按钮。
主要特性
- 单键撤销 — 一个快捷键覆盖最常见的情况(上一个动作)
- 整回合回退 — 当你想要重新规划整个回合时,用 Shift+Z 一键回滚
- 本地化撤销按钮 — 战斗内按钮,支持英语 / 韩语提示
- 死亡安全 — 死亡动画会正常播放完毕;你不能跨越死亡帧进行撤销
- 轻量捕获 — 遗物捕获使用游戏自带的
MutableClone而非完整的反射深克隆,因此每次出牌的额外开销几乎为零 - 视觉保真 — 复活的敌人、蜈蚣风格的尸体和悬停提示都能正确恢复;撤销后不会残留“DEAD”覆盖层或卡住的姓名牌
- 能力状态保真 — 子类型专属的能力字段(如 Kaiser 蟹 Boss 的背击朝向等)能够干净地往返保存,撤销后视觉效果和伤害倍率不会不同步
- 费用修正保真 — 从猛扑(
猛扑)、무자비(무자비)或 Havoc 获得CardEnergyCost._localModifiers的卡牌,现在可以在撤销时干净地往返保存,因此“下一次攻击/技能费用为 0”的效果会在回退消耗它的那张牌后重新生效 - 阶段转换保真 — TestSubject(
실험체)从阶段 1 转换到阶段 2 时,会播放正确的原版转换动画,而非普通死亡动画;单目标悬停瞄准在复用的 NCreature 节点上继续正常工作;阶段 2 中 HP 条按预期重新出现(设计上仍不支持跨越阶段边界的撤销) - 死亡复活随从支持 — 拥有 IllusionPower(
환상)的随从(如 이빨 달린 눈(이빨 달린 눈))死亡时不再卡死游戏。原版的复活流程原样运行,复活后单目标悬停瞄准在复用的 NCreature 上正常工作,并且复活后的 HP 条协调器会修正原版中 AnimateOut/AnimateIn 生命周期不一致的问题,确保 HP 条在死亡时可靠隐藏、复活时重新出现(设计上仍不支持跨越死亡本身的撤销) - Necrobinder Osty 支持 — 拥有
DieForYouPower的 Osty(골골이)不再在 1 HP 下回合复活时再次死亡并消失。完整的死亡/复活循环按原版运行——死亡动画在濒死-复活前的窗口期内正确播放,并且跨越 Osty 死亡/复活的撤销会正确恢复身体的存活/死亡视觉状态以匹配快照 - TheObscura(HIVE)卡死修复 — Boss 的
IllusionMove召唤随从被撤销后不再使战斗卡死;阶段/死亡时生成逻辑保持原版路径 - 检视界面卡死修复 — 战斗内撤销不再污染共享的 NInspectCardScreen 实例。此前,每次撤销时运行的孤儿卡清理会将屏幕内部的 NCard 加入队列释放,之后当你到达商人或任何卡牌奖励界面并右键点击卡牌时,检视覆盖层会在每次渲染时抛出 ObjectDisposedException 并且无法关闭,只能强制退出。现在清理会跳过由 Screen 类祖先持有的 NCard,因此检视界面可以承受任意多次战斗内撤销
- NPower 信号重复连接错误修复 — “Signal 'mouse_entered' is already connected”的 Godot 错误不再在每次撤销时出现。此前,能力刷新会在容器重建后手动重新调用每个 NPower 的
_Ready;但 Godot 在新 NPower 进入场景树时已经触发过一次,所以第二次调用会重复连接悬停信号 - 右键升级预览 — 战斗内右键点击手牌预览升级版本不再锁定输入或冻结预览状态。快照捕获被限制在 RMB(右键)窗口检查之后,因此合成性的预览驱动动作不会意外触发快照。v0.0.8 增加了
Godot.Input.IsMouseButtonPressed轮询回退方案,因此在 STS2 v0.103.2 上,当卡牌 UI 在我们的_Input前缀看到 RMB 事件之前就消耗了它时,该限制仍然有效 - 小型敌人死亡节奏 — Toadpole(
올챙이)及类似小型敌人的“倒地死亡”尾部动画被修剪,使尸体消失的节奏与灰烬溶解特效一致,而不是晚 1–2 秒
安装
- 从此页面下载
Sts2UndoMod-v0.0.12.zip - 将其中两个文件(
Sts2UndoMod.dll和Sts2UndoMod.json)解压到《杀戮尖塔 2》安装目录下的mods/Sts2UndoMod/文件夹中 - 启动游戏
- 开始一场战斗——在任意出牌、使用药水或结束回合后按
Z即可撤销
模组会在 Windows 上向 %APPDATA%\Sts2UndoMod\probe.log(或在 Linux/macOS 上为 ~/.config/Sts2UndoMod/probe.log)写入一个小型日志。报告问题时请附上该日志。
要求
- 启用了模组支持的《杀戮尖塔 2》
- 此文件针对 STS2 的 stable 分支(
v0.103.x)构建。如果你在 Steam 中选择了 STS2 测试版(STS2 → 属性 → 测试版),请下载-beta文件——由于 STS2 API 变更,stable dll 在 beta 分支上会抛出MissingMethodException - 多人模式下自动休眠 — 当你加入合作(主机 / 客户端)游戏时,模组会检测到并停止捕获快照;
↶ Z按钮不会出现,Z快捷键变为无效操作。与朋友一起玩时无需卸载模组——加入房间前不必禁用它。单人游戏不受影响
源码与许可证
- 源码:https://github.com/ing-gom/sts2-undo-mod
- MIT 许可证
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。