闭嘴玄马

闭嘴玄马

在战斗中让低级幻魔安静下来。静香、武藏、NPC和首领们继续交谈。

[size=4][b]描述[/b][/size]
[size=4][b]低级幻魔不会闭嘴。现在它们会了。[/b][/size]

“现身吧!”“我要刺穿你!”“你躲不开这一击!”——每一场战斗中的每一个杂兵,一遍又一遍,贯穿整个游戏。它们说的东西,你光看它们动作就已经知道了。

这个模组让它们闭嘴。[b]静的建议、武藏、每一个 NPC 和每一个 Boss 都保持原样。[/b]

它对一个你从未遇到过的敌人也有效,无需事先听过任何一句台词。它不是通过偷听来学习该切掉什么——它在敌人第一次开口的那一刻,读取敌人自身携带的消息表。

[size=4][b]安装说明[/b][/size]
[b]1. 先安装 REFramework[/b](见下方“前置要求”)。你需要将
[b]dinput8.dll[/b] 放在游戏可执行文件旁边。

[b]2. 将此压缩包解压到游戏文件夹中[/b],与可执行文件放在一起。路径已经匹配——无需移动任何东西。

[code]<游戏文件夹>/dinput8.dll <- REFramework,需单独安装
<游戏文件夹>/reframework/autorun/... <- 本压缩包[/code]
[b]3. 启动游戏。[/b] 它会立即生效。打开 REFramework 菜单
(默认按键为 [b]Insert[/b]),在 [b]Script Generated UI[/b] 下找到
[b]Shut Up, Genma[/b],即可更改它要切掉的内容。

你的设置会写入
[b]reframework/data/ShutUpGenma/settings.json[/b]。没有学习数据,也没有需要
迁移的内容——模组所需的一切每次都会从游戏中读取。

要卸载,请删除 [b]reframework/autorun/ShutUpGenma.lua[/b]、它旁边的文件夹,
以及 [b]reframework/data/ShutUpGenma/[/b]。

[size=4][b]主要功能[/b][/size]
[b]五个开关,默认全部开启[/b]

[list]
[][b]让幻魔沉默[/b] - 总开关[/]
[][b]保留 Boss 对话[/b] - Boss 是对你说话;杂兵是对你嘲讽[/]
[][b]攻击预警[/b] - “我要把你串起来”、“正在瞄准”[/]
[][b]其他所有内容[/b] - 发现你、开始战斗、嘲讽[/]
[][b]也切掉对话往来[/b] - 切掉整个往来对话,包括静的那一半[/]
[/list]
[b]预警是单独的开关,因为它们是信息。[/b]“正在瞄准”
会告诉你接下来要发生什么。让它静音会让战斗更难,而这应该由你来决定,
而不是由模组替你做主。

[b]静会继续说话[/b]

这是最难的部分,所以这里说明它为什么有效。一条战斗台词会分别记录谁
[i]触发[/i]了它,以及谁[i]说出[/i]它——而静的“干得好!”
是由幻魔触发的。如果按触发者过滤,你就会在试图让幻魔闭嘴的同时,
也让她闭嘴了。

这个模组从不查看触发者。它读取消息定义上的说话者 id,只有当那个说话者
是幻魔时才会切掉。武藏、静以及每一个 NPC 从设计上就不在范围内,
而不是靠一份名单来排除。

Boss 和杂兵是通过 [b]游戏自身的判定[/b] 来区分的,而不是靠这里维护的一份
Boss id 列表。列表会在新增敌人的那一刻就过时。

[b]对话往来[/b]

当幻魔说话,而武藏或静回应时,[b]两半属于同一个
请求[/b]——这一点通过给请求打上其自身地址的标记得到确认。其中一半
无法被单独切掉。

默认情况下整个往来都会被切掉。不会有人对着沉默作答。代价是真实存在的,
也值得说明:当幻魔和静在同一段往来中说话时,她的那一半也会随之被切掉。
她单独给出的建议则不受影响。

关闭 [b]也切掉对话往来[/b] 后,这些往来会被完整保留——代价是大量
杂兵噪音会继续留在游戏中。

[b]它读取的是游戏,而不是你的游玩过程[/b]

每个敌人都携带自己的表:

[code]enemy GameObject
-> EnemyParamHolder -> ParamPack
_BattleMsgCondInfo flag -> group
_BattleMsgGroupInfo group -> messages
_BattleMessageInfo message -> speaker[/code]
它们会在该敌人第一次发出请求时被读取,耗时一两毫秒。
这就是为什么新敌人从它的第一句台词起就会沉默,而不是在那之后。

[b]不会重写任何内容[/b]

请求会在变成台词之前就被拒绝。请求一直在被拒绝——
因冷却、因频率、因优先级——所以这是游戏本身就设计好要处理的状态。
早期版本改为清空已说台词列表,结果把对话系统卡死到
游戏结束菜单都无法出现。那种做法已经废弃。

[b]为错误报告而构建[/b]

面板会显示被切掉了什么、保留了什么、读取到的每个敌人的说话者表,
以及一个将所有这些写入日志的开关。设置会在每次加载和每次切换时打印,
因此日志绝不会被误读为“模组什么都没做”,而真相其实是“模组当时是关闭的”。

在完整游戏(TDB 82)上开发和测试。

[size=4][b]前置要求[/b][/size]
[b]REFramework nightly,build 1414 或更高版本。[/b]
[list]
[]从 [url=https://github.com/praydog/REFramework-nightly/releases]praydog/REFramework-nightly[/url] 下载[/]
[][b]稳定版无法使用[/b] - 它们不包含 Onimusha[/]
[]Build 1414 是第一个包含 Onimusha 崩溃修复的 nightly[/]
[][b]只解压其中的 dinput8.dll[/b]。praydog 自己的发布说明
警告说,在非 VR 环境中解包 VR 文件会让游戏不稳定,
并破坏抗锯齿[/
]
[/list]
REFramework 并未在此捆绑。它按自己的时间表更新,若附带一份副本,
会把用户固定在发布当天恰好为最新的那个 nightly 上。

无需其他模组。游戏 pak 文件中的内容未被修改——一切都在
运行时发生。

可与
[url=https://www.nexusmods.com/onimushawayofthesword/mods/116]Give Me My Y Button Back[/url]
以及
[url=https://www.nexusmods.com/onimushawayofthesword/mods/121]Give Me My Time Back[/url] 一起使用。

[size=4][b]致谢[/b][/size]
[url=https://github.com/praydog]praydog[/url],感谢 REFramework。没有它,
这一切都不存在,而对 Onimusha 的支持在 demo 发布后几天内
就登陆了 nightly。