语音框架(Regent Mesugaki Voice)

语音框架(Regent Mesugaki Voice)

这是一个用于在《杀戮尖塔2》中响应各种事件播放语音片段的框架。默认支持Regent的Mesugaki语音!

杂项

VoiceModFramework

一个适用于《杀戮尖塔2》的角色语音播放框架。默认支持瑞金特的雌小鬼语音!

这个模组最初是名为“Regent Mesugaki Voice”的单个模组,但语音播放系统得到了极大扩展,因此重生为了一个框架!

它会根据游戏内的各种事件自动播放角色语音,并在对话气泡中显示字幕。

添加语音包无需DLL。只需放置一个文件名包含“voicepack”的JSON文件(例如 Test_voicepack.json)和音频文件(mp3或ogg),即可为对应角色启用语音。当其他模组作者发布他们自己的角色语音包时,他们只需依赖于此框架即可。


功能特性

  • 零配置语音包 — 只需放置 voicepack.json 和音频文件即可自动检测并注册。语音包侧无需DLL。
  • 超过20种自动触发事件 — 使用卡牌、受到HP伤害(未格挡/穿透)、满格挡、获得增益、施加减益、获得星币、击败敌人、战斗开始/胜利/失败、低血量(每场战斗一次)、空闲(玩家回合期间)、使用药水、卡牌升级、商店购买、宝箱等。
  • 特定卡牌语音 — 添加 card_{CardID}/ 文件夹,即可为特定卡牌播放专属语音。
  • 字幕显示 — 带有角色图标的对话气泡覆盖层。支持日语、英语、简体中文和韩语。
  • 原版气泡模式 — 可选择使用游戏自带的头顶对话气泡 (NSpeechBubbleVfx)。
  • 自定义字体 — 可按语言指定 .ttf / .otf 字体,以正确渲染日语、中文、韩语等文本。
  • 对话气泡图片替换 — 将原生气泡精灵替换为自定义图像 (PNG/JPG/WEBP)。
  • 富文本支持 — 字幕JSON支持Godot 4的BBCode标签(加粗、颜色、波浪、震动、彩虹等)。
  • 打字机效果 — 逐字显示文本。速度可按每秒字符数 (cps) 设置。在原版气泡模式下无效。
  • 音频缓存与连续播放防止 — 在开局时预解码文件。防止同一文件夹中的相同文件连续播放。
  • 游戏内设置 — 音量 (dB)、触发概率 (%)、分类别开关、空闲触发延迟(秒)、字幕位置(四角可选)、缩放、淡入时间等。

安装方法

  1. 将 VoiceModFramework 文件夹放入游戏目录下的 mods/ 文件夹。 如果你已安装「Regent Mesugaki Voice」,请先删除它。
  2. 启动游戏。所有模组文件夹将被自动扫描,包含 voicepack.json 的语音包将被自动加载。

无需额外设置。各种设置可在游戏内的模组设置面板中更改。


如何创建语音包(简化版)

无需任何DLL即可发布。

  1. mods/ 内创建一个文件夹(例如 MyCharacterVoice/)。
  2. 创建一个文件名包含“voicepack”的JSON文件(例如 voicepack.json),并写入以下内容:
    {
      "character_id": "Character_ID",
      "voices_dir": "voices"
    }
    
  3. 将音频文件 (.ogg 或 .mp3) 放入分类子文件夹中:
    • voices/card/ ← 使用任意卡牌时播放
    • voices/damage/ ← 受到HP伤害时播放
    • voices/combat_start/ ← 战斗开始时播放
    • voices/victory/ ← 胜利时播放
    • ...
  4. 启动游戏,该语音包将被自动检测,并在使用目标角色的对局中启用。

你也可以从游戏内的 ModConfig 菜单自动执行此操作!请在进入你想要应用语音的角色的战斗画面后执行。

角色ID可通过 设置 → VoiceMod → 工具 → 导出 character_ids.json 查看。

关于字体替换、对话气泡图片替换、富文本和API钩子等高级功能,请参阅 [模组作者指南(施工中)]


面向其他模组作者(基于DLL的注册)

对于拥有DLL的模组,你可以直接在 ModEntry.Init() 中进行注册:

VoiceModApi.Register(new VoicePackConfig
{
    CharacterId   = "MYCHARACTER",
    VoicesDir     = Path.Combine(modDir, "voices"),
    SubtitleDir   = Path.Combine(modDir, "voices"),
    IconPath      = Path.Combine(modDir, "icon.png"),
    SubtitleColor = "#FFCC88",
});

你也可以从你自己的Harmony补丁中触发语音:

VoiceModApi.PlayCurrentPackVoice("my_custom_category");

尚未完全测试,不确定是否能完美运行。如有任何bug,请报告。 详情请参阅 [模组作者指南]

欢迎创建并发布依赖于此框架的语音包。无需署名,但若能提及,将不胜感激!

推荐模组:

  • Regent Skin Mod by anaertailin
  • Regent Cards Anime Rework by DoublePigeon

享受欢乐的雌小鬼尖塔时光!


V1.12 更新

修复了在非战斗阶段(如地图移动、商店和休息区域)时,韩语和简体中文字幕不显示的问题。 我最初以为是字幕的问题,但最终原因是一个函数的引用错误。