快速旅行与连锁一闪套装

快速旅行与连锁一闪套装

如果你曾同时使用过独立的“地图长按快速旅行”和“连锁一闪修改”这两个模组,你很可能遇到过一个令人沮丧的bug:一旦传送,整个地图就会消失,你会无尽地坠入虚空直到死亡。我从头构建了这个统一脚本,让这两个功能终于可以协同工作。

功能说明

  1. 随处快速旅行: 打开地图,在任意有效地面位置或已解锁的跃迁之镜上按住确认键,即可直接传送至该处。
  2. 自定义连锁一闪终结技: 将连锁一闪结尾默认的缓慢抓取动作替换为快速的连锁一闪斩、破一闪斩、空中一闪,或设为随机。
  3. 更快的冲刺前聚焦: 可选择缩短或跳过首次连锁一闪冲刺开始前的短暂停顿。
  4. 一体化 REFramework 菜单: 在单一菜单中随时开启或关闭任一功能,并调整终结技设置。

安装方法

  1. 首先从 reframework/autorun 文件夹中删除独立的 Chain Issen 和 Fast Travel lua 脚本(保留旧文件仍会导致虚空 bug)。
  2. 将 Onimusha_FastTravel_Issen_Suite.lua 放入 reframework/autorun。

致谢

给技术宅的细节

如果有人好奇为什么一个战斗模组会导致快速旅行时地图地板消失,以下是我查看逐帧日志时在底层实际发生的情况。

首先,在游戏传送你之前,快速旅行脚本会尝试强制角色退出当前正在播放的动画(如冲刺或奔跑),并将其置于干净的空手站立姿态。问题在于,独立的快速旅行模组在地图 UI 仍处于自身更新循环中时触发了这一姿态变更。与此同时,Chain Issen 模组正在拦截游戏中的每一次行动变更,以监视一闪终结技。由于两个模组在同一线程上争夺 REFramework 的钩子存储,游戏静默拒绝了站立姿态请求。你的角色在加载画面开始时仍卡在冲刺动画中。

其次,独立的 Chain Issen 模组同时在多达八个不同的伤害计算函数上放置钩子以缩放终结技伤害,而快速旅行模组内置的诊断记录器每十分之一秒发射十六条物理射线以检测附近墙壁。当游戏尝试卸载旧地图区块并流式加载新区域的地板碰撞时,所有这些后台钩子通信和射线检测堵塞了舞台网格管理器。当你的角色被移动到新坐标时,游戏已卸载旧区域但未能加载新地板网格——将你直接丢入虚空。不仅如此,它还降低了性能,让你观看更长的加载画面。

为解决此问题,我将两个脚本合并到一个共享的交通灯机制下:

不再从 UI 循环内部传送: 现在在地图上按住按钮只会保存目标坐标。实际传送会在下一个主场景更新开始时干净地执行。

加载期间完全休眠: 在你打开地图或触发跃迁的瞬间,Chain Issen 模块会完全休眠并清除任何残留的战斗数据,直到新区域加载完成。

更轻量的钩子: 我移除了沉重的伤害反应钩子和加载中的物理射线检测,并为行动钩子添加了即时退出,使它们在你未处于连锁一闪过程中时不做任何工作。