角色模组
对话气泡
为点击、喂食与状态变化添加文字回应。
气泡与语音各自负责什么?
note/bubble_conf.json 决定何时显示什么文字,以及引用哪一个图标或声音名称。图片与声音本身在通知配置中登记。
这些是预设的事件文字,不需要把每一条交给 AI 生成;它们也不同于带选项的对话物品。
先做一个文字气泡
下面是一份完整的 note/bubble_conf.json 起点,先不引用声音和图标:
{
"pat_random_1": {
"icon": null,
"message": "USERTAG,今天也一起加油吧!",
"start_audio": null,
"end_audio": null
}
}
这类气泡在点击时概率触发,不保证每次点击都出现。添加更多条目时,使用 pat_random_2、pat_random_3 等编号。
常见触发事件
| 名称 | 用途 |
|---|---|
fv_lvlup |
好感等级提升 |
fv_drop |
饥饿导致好感下降时的提醒 |
hp_low / hp_zero |
饱食度偏低 / 为零 |
feed_done |
喂食后 |
feed_required |
索要指定食物 |
pat_focus |
专注期间点击 |
pat_frequent |
频繁点击 |
pat_random_数字 |
随机点击回应 |
USERTAG 会替换成用户设定的称呼。feed_required 中的 ITEMNAME 会替换成请求的食物名,改写句子时应保留它。
给气泡配上声音
先在 note/note.json 登记声音,例如合并下面的字段;chat.wav 放在 note/:
{
"random_1": {"sound": "chat.wav", "sound_priority": 1}
}
再把气泡中的 start_audio 改成 "random_1"。end_audio 同理,icon 引用登记的图标名称。这里填写的是 名称,不是文件路径;不用时保留 null。
检查实际触发
先检查文字是否过长,再测试对应事件。确认音效配置、气泡配置和素材都在同一角色的 note/ 下。旧资料中的系统图标注册表名称不要直接当成模组文件名;本教程的模组通知文件使用 note.json。
What do bubbles and voice settings each do?
note/bubble_conf.json sets event text and references registered icon or sound names. The actual assets are registered in the notification configuration.
These are predefined event messages, not lines that must be generated by AI. They are also distinct from dialogue items with choices.
Start with a text-only bubble
This complete starting example for note/bubble_conf.json does not require an icon or sound:
{
"pat_random_1": {
"icon": null,
"message": "Let's make today a good one, USERTAG!",
"start_audio": null,
"end_audio": null
}
}
Random click bubbles are probabilistic, so they do not appear on every click. Add more as pat_random_2, pat_random_3 and so on.
Common events
| Name | Purpose |
|---|---|
fv_lvlup |
Affection level-up |
fv_drop |
Affection loss caused by hunger |
hp_low / hp_zero |
Low / zero satiety |
feed_done |
After feeding |
feed_required |
Asking for a specific food |
pat_focus |
Clicking during focus time |
pat_frequent |
Frequent clicking |
pat_random_number |
Random click response |
USERTAG becomes the user’s chosen form of address. In feed_required, ITEMNAME becomes the requested food name; keep it when rewriting the sentence.
Add a sound
First register the sound in note/note.json, merging this field and placing chat.wav in note/:
{
"random_1": {"sound": "chat.wav", "sound_priority": 1}
}
Then set the bubble’s start_audio to "random_1". end_audio works similarly, and icon references a registered icon name. Use names, not file paths here. Leave unused fields as null.
Test the actual event
Check text length, then trigger the relevant event. Keep notification settings, bubble settings and assets in the same character’s note/ folder. Do not copy a system registry file name from older material as the mod file name; this guide uses note.json for mod notifications.
文档持续完善中。 查看原始开发文档 ↗