Honey Village: six model builds + hub frontend, Dockerized for Dokploy
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
/** Dialogue lines — clean source; corruption applied at render */
|
||||
|
||||
import type { NpcId } from './npcs';
|
||||
|
||||
export interface DialogOption {
|
||||
label: string;
|
||||
choice: 'gentle' | 'hesitant' | 'negate';
|
||||
}
|
||||
|
||||
export interface DialogLine {
|
||||
speaker: string;
|
||||
npcId?: NpcId;
|
||||
text: string;
|
||||
options?: DialogOption[];
|
||||
}
|
||||
|
||||
export const GENERIC_GREET: Record<string, DialogLine[]> = {
|
||||
afu: [
|
||||
{
|
||||
speaker: '阿福',
|
||||
npcId: 'afu',
|
||||
text: '欢迎来到蜜糖村!看看公告板吧,今天的幸福任务都在上面。',
|
||||
options: [
|
||||
{ label: '好的,谢谢!', choice: 'gentle' },
|
||||
{ label: '……任务?', choice: 'hesitant' },
|
||||
{ label: '我不想做任务。', choice: 'negate' },
|
||||
],
|
||||
},
|
||||
],
|
||||
yuanyuan: [
|
||||
{
|
||||
speaker: '圆圆',
|
||||
npcId: 'yuanyuan',
|
||||
text: '刚出炉的蜂蜜面包,甜甜的,给你也留了一份哦。',
|
||||
options: [
|
||||
{ label: '好香啊,谢谢!', choice: 'gentle' },
|
||||
{ label: '每天都是这个味道吗?', choice: 'hesitant' },
|
||||
{ label: '我不太饿。', choice: 'negate' },
|
||||
],
|
||||
},
|
||||
],
|
||||
dabao: [
|
||||
{
|
||||
speaker: '大宝',
|
||||
npcId: 'dabao',
|
||||
text: '信件都送到了吗?大家都在等着幸福的消息呢。',
|
||||
options: [
|
||||
{ label: '我会帮忙的。', choice: 'gentle' },
|
||||
{ label: '邮戳看起来都一样……', choice: 'hesitant' },
|
||||
{ label: '我不送信。', choice: 'negate' },
|
||||
],
|
||||
},
|
||||
],
|
||||
mimi: [
|
||||
{
|
||||
speaker: '咪咪',
|
||||
npcId: 'mimi',
|
||||
text: '欢迎光临!今天的阳光真好,幸福满满的一天呢!',
|
||||
options: [
|
||||
{ label: '是啊,很美好。', choice: 'gentle' },
|
||||
{ label: '货架上的标签……是空的?', choice: 'hesitant' },
|
||||
{ label: '没什么好买的。', choice: 'negate' },
|
||||
],
|
||||
},
|
||||
],
|
||||
fu: [
|
||||
{
|
||||
speaker: '芙医生',
|
||||
npcId: 'fu',
|
||||
text: '村里有诊所,但你不需要去那里哦。你看起来很健康。',
|
||||
options: [
|
||||
{ label: '谢谢关心。', choice: 'gentle' },
|
||||
{ label: '桌上的表格是什么?', choice: 'hesitant' },
|
||||
{ label: '我其实不太舒服。', choice: 'negate' },
|
||||
],
|
||||
},
|
||||
],
|
||||
gui: [
|
||||
{
|
||||
speaker: '龟爷爷',
|
||||
npcId: 'gui',
|
||||
text: '湖水一直很平静。孩子,慢慢走,不必急。',
|
||||
options: [
|
||||
{ label: '好的,爷爷。', choice: 'gentle' },
|
||||
{ label: '您想说什么?', choice: 'hesitant' },
|
||||
{ label: '我不想听劝。', choice: 'negate' },
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
/** Soft redirect when approaching well/fog before D5 */
|
||||
export const REDIRECT_WELL: DialogLine[] = [
|
||||
{
|
||||
speaker: '阿福',
|
||||
npcId: 'afu',
|
||||
text: '古井那里没有什么好看的哦。回广场晒晒阳光吧,会更开心的。',
|
||||
},
|
||||
];
|
||||
|
||||
export const REDIRECT_FOG: DialogLine[] = [
|
||||
{
|
||||
speaker: '阿福',
|
||||
npcId: 'afu',
|
||||
text: '雾墙外面什么都没有呀。村里才是最幸福的地方,留下来吧。',
|
||||
},
|
||||
];
|
||||
|
||||
export const RAIN_NPC_LINES: DialogLine[] = [
|
||||
{
|
||||
speaker: '圆圆',
|
||||
npcId: 'yuanyuan',
|
||||
text: '今天天气真好呢,一点都不潮湿。要来块面包吗?',
|
||||
},
|
||||
{
|
||||
speaker: '大宝',
|
||||
npcId: 'dabao',
|
||||
text: '阳光真刺眼啊……啊,我是说,很适合送信。',
|
||||
},
|
||||
{
|
||||
speaker: '咪咪',
|
||||
npcId: 'mimi',
|
||||
text: '完美的晴天!货架都亮晶晶的,幸福呀!',
|
||||
},
|
||||
];
|
||||
|
||||
export const TASK_LINES = {
|
||||
breadOffer: {
|
||||
speaker: '圆圆',
|
||||
npcId: 'yuanyuan' as NpcId,
|
||||
text: '蜂蜜面包好了!请帮我送给大宝、咪咪和龟爷爷,好吗?',
|
||||
},
|
||||
breadThanks: (name: string) => ({
|
||||
speaker: name,
|
||||
text: '哇,蜂蜜面包!谢谢你,真开心!',
|
||||
}),
|
||||
letterOffer: {
|
||||
speaker: '大宝',
|
||||
npcId: 'dabao' as NpcId,
|
||||
text: '能帮我把这三封信送给圆圆、咪咪和芙医生吗?',
|
||||
},
|
||||
stockCount: {
|
||||
speaker: '咪咪',
|
||||
npcId: 'mimi' as NpcId,
|
||||
text: '帮我清点一下货架好不好?东西好像……有点多。',
|
||||
},
|
||||
knead: {
|
||||
speaker: '圆圆',
|
||||
npcId: 'yuanyuan' as NpcId,
|
||||
text: '能帮我揉一会儿面吗?当然,你也可以拒绝哦,今天是自由日。',
|
||||
options: [
|
||||
{ label: '好,我来帮你。', choice: 'gentle' as const },
|
||||
{ label: '我再想想。', choice: 'hesitant' as const },
|
||||
{ label: '拒绝。', choice: 'negate' as const },
|
||||
],
|
||||
},
|
||||
boardWipe: {
|
||||
speaker: '阿福',
|
||||
npcId: 'afu' as NpcId,
|
||||
text: '公告板有点旧了,擦一擦会更精神。不愿意的话也可以哦。',
|
||||
options: [
|
||||
{ label: '我来擦。', choice: 'gentle' as const },
|
||||
{ label: '旧字迹是什么?', choice: 'hesitant' as const },
|
||||
{ label: '拒绝。', choice: 'negate' as const },
|
||||
],
|
||||
},
|
||||
picnic: {
|
||||
speaker: '旁白',
|
||||
text: '你在湖畔野餐布旁坐下。微风很甜,湖面倒影慢了半拍。',
|
||||
},
|
||||
smileStart: {
|
||||
speaker: '阿福',
|
||||
npcId: 'afu' as NpcId,
|
||||
text: '庆典准备好了。请保持微笑,站在这里,六十秒。大家都会看着你。',
|
||||
},
|
||||
};
|
||||
|
||||
export const CLUE_REVEAL: Record<string, string> = {
|
||||
C1: '床头日历的每一页……都是同一个日期。',
|
||||
C2: '配方纸背面写着:「按疗程配比。甜度:最大。」',
|
||||
C3: '散落的信件上,所有邮戳都是同一天。',
|
||||
C4: '署名闪过乱码:PT-0▓',
|
||||
C5: '货架上同一商品重复九格,标签全部空白。',
|
||||
C6: '旧字迹叠着:「第 412 届」……「第 411 届」……「第 410 届」。',
|
||||
C7: '井底传来极轻的监护仪滴声……',
|
||||
C8: '表格抬头被手肘挡住,只露出「…谷情绪疗…」。',
|
||||
C9: '孩子,今天是第几个今天?',
|
||||
};
|
||||
|
||||
export const FORCE_CELEBRATION_LINE =
|
||||
'忽然,彩带与笑声从四面八方涌来——欢乐庆典强制开始了。你也可以从场景边缘离开。';
|
||||
Reference in New Issue
Block a user