// 全部文案（原文保持干净，腐蚀在渲染层实施）。
// PRD 写死的台词在此逐字实现。

// 阿福每日公告（PRD §5，逐字。D4 与 D1 逐字相同）
export const ANNOUNCEMENTS: Record<number, string> = {
  1: "早上好呀！今天的幸福任务贴在板上啦。祝你开心！",
  2: "早上好呀！新的一天，新的幸福。祝你开心！",
  3: "早上好！今天要把幸福装得满满的哦。要开心！",
  4: "早上好呀！今天的幸福任务贴在板上啦。祝你开心！",
  5: "早上好。今天是自由日，你可以自由地选择幸福。要开心哦。",
  6: "明天就是庆典了。大家都会到场，大家都会微笑。你必须开心。",
  7: "庆典开始了。来吧。",
};

export const NPC_NAMES: Record<string, string> = {
  afu: "阿福", yuanyuan: "圆圆", dabao: "大宝", mimi: "咪咪",
  fu: "芙医生", gui: "龟爷爷", bird1: "双子鸟", bird2: "双子鸟",
  villager: "村民的声音", system: "", me: "",
};

export type ChoiceKind = "gentle" | "hesitant" | "negative";
export interface DialogChoice {
  label: string; kind: ChoiceKind; reply: string[];
}
export interface DialogNode {
  lines: string[];
  choices?: DialogChoice[];
}

// 三选项模板：温柔 +2 幸福 / 迟疑 +2 觉知 / 否定 = 悲伤行为
const choice = (g: string, gr: string, h: string, hr: string, n: string, nr: string): DialogChoice[] => [
  { label: g, kind: "gentle", reply: [gr] },
  { label: h, kind: "hesitant", reply: [hr] },
  { label: n, kind: "negative", reply: [nr] },
];

// 每个具名 NPC 的每日闲聊（D4 与 D1 逐字相同——完美的重复）
export const NPC_TALK: Record<string, Record<number, DialogNode>> = {
  afu: {
    1: { lines: ["新来的孩子就是你呀。这里是蜜糖村，大家都很幸福哦。", "任务贴在公告板上，去看看吧。"] },
    2: { lines: ["昨天睡得好吗？在这里，每天都会睡得很好。"] },
    3: { lines: ["幸福要装得满满的才行。满满的。"] },
    4: { lines: ["新来的孩子就是你呀。这里是蜜糖村，大家都很幸福哦。", "任务贴在公告板上，去看看吧。"] },
    5: {
      lines: ["自由日也要有自由日的样子。"],
      choices: choice(
        "我很自由呀！", "对嘛！自由地开心，就是最好的自由。",
        "自由……是什么意思？", "……就是字面的意思呀。别想太多。",
        "我不想要这种自由。", "……村长听不懂你在说什么呢。"
      ),
    },
    6: { lines: ["明天所有人都会到场。所有人。"] },
    7: { lines: ["来吧，站到中间来。"] },
  },
  yuanyuan: {
    1: { lines: ["面包要趁热吃哦。"] },
    2: { lines: ["今天的面包也是一样的味道。一样，就很好。"] },
    3: {
      lines: ["多吃一点，甜甜的就不难过啦。"],
      choices: choice(
        "谢谢你，圆圆。", "嘿嘿，不客气。明天也来呀。",
        "为什么不能难过？", "咦？难过……难过是什么呀？",
        "我不喜欢甜的。", "……怎么会呢。大家都喜欢的。"
      ),
    },
    4: { lines: ["面包要趁热吃哦。"] },
    5: { lines: ["今天是自由日呢。不过面包还是要烤的。"] },
    6: { lines: ["庆典的蛋糕会很大、很甜。大家都会笑的。"] },
    7: { lines: ["快去广场呀。"] },
  },
  dabao: {
    1: { lines: ["我是邮差大宝。有信我就送，没信我也在。"] },
    2: { lines: ["信要送到才算数。"] },
    3: { lines: ["今天没有新的信。明天也许会有吧。"] },
    4: { lines: ["我是邮差大宝。有信我就送，没信我也在。"] },
    5: { lines: ["有几封信……收件人的门牌号不存在。", "大概是我记错了吧。哈哈。"] },
    6: { lines: ["庆典的邀请函，每家都有。", "连不存在的那几家，也有。"] },
    7: { lines: ["都到齐了。"] },
  },
  mimi: {
    1: {
      lines: ["欢迎欢迎！新面孔！要不要来点糖？"],
      choices: choice(
        "好呀，谢谢！", "甜甜的最幸福啦！明天也来哦！",
        "呃……先不用了。", "咦？糖哎？是糖哎？",
        "我不吃糖。", "……不吃糖的孩子，咪咪还是第一次见。"
      ),
    },
    2: { lines: ["数字对得上就好。数字总是对得上。"] },
    3: { lines: ["今天阳光真好，朋友。甜甜的日子，永远这样就好啦。"] },
    4: {
      lines: ["欢迎欢迎！新面孔！要不要来点糖？"],
      choices: choice(
        "好呀，谢谢！", "甜甜的最幸福啦！明天也来哦！",
        "呃……先不用了。", "咦？糖哎？是糖哎？",
        "我不吃糖。", "……不吃糖的孩子，咪咪还是第一次见。"
      ),
    },
    5: { lines: ["自由日？自由日买点糖最幸福啦。开心，要开心。"] },
    6: { lines: ["明天大家都会来买微笑……", "不对，是带着微笑来买糖。嘻嘻。"] },
    7: { lines: ["庆典开始了哦。大家都在笑。"] },
  },
  fu: {
    1: { lines: ["村里有诊所，但你不需要去那里哦。"] },
    2: { lines: ["村里有诊所，但你不需要去那里哦。"] },
    3: { lines: ["村里有诊所，但你不需要去那里哦。"] },
    4: { lines: ["村里有诊所，但你不需要去那里哦。"] },
    5: { lines: ["睡得好吗？梦到过白色的房间吗？", "……只是随口一问。"] },
    6: { lines: ["如果哪天你觉得累了——", "往雾的方向走。不要回头。"] },
    7: { lines: ["去吧。无论你选哪边，我都会在这里。"] },
  },
  gui: {
    1: { lines: ["坐一坐吧，孩子。湖水很平静。"] },
    2: { lines: ["湖水一直很平静。"] }, // C9 第一段
    3: { lines: ["老骨头晒晒太阳，就很满足喽。"] },
    4: { lines: ["面包一直是那个味道。"] }, // C9 第二段
    5: { lines: ["井里的水，很深，很深。"] },
    6: { lines: ["孩子。", "今天……是第几个今天？"] }, // C9 第三段
    7: { lines: ["去吧。别回头，或者……回头。都行。"] },
  },
};

// 任务对话（T1/T4/T5/T11 等发起与递送）
export const QUEST_LINES = {
  t1Give: ["刚出炉的蜂蜜面包！", "帮我送给大宝、咪咪和龟爷爷，好吗？"],
  t1Deliver: {
    dabao: "哇，是圆圆的蜂蜜面包！谢谢你！",
    mimi: "甜甜的面包，幸福的味道！",
    gui: "替我谢谢圆圆。",
  } as Record<string, string>,
  t4Give: ["这三封信，帮我送给圆圆、咪咪和芙医生。", "拜托啦。"],
  t4Deliver: {
    yuanyuan: "给我的信？谢谢你呀。",
    mimi: "信？好久没收到过信了……哦不，昨天也收到了吧。",
    fu: "……谢谢。我收下了。",
  } as Record<string, string>,
  t5Ask: ["帮我清点一下货架好吗？就数一数，很快的。"],
  t5Done: ["都数完啦？谢谢谢谢！"],
  t11Ask: "今天能帮我揉面吗？当然，你也可以拒绝的……大概。",
  t11Work: ["（你把面团揉了又揉。面团很软，很甜。）", "谢谢你！揉过的面会更幸福哦。"],
  t11Refused: "……好的。没关系。真的没关系。",
  t12Ask: "（公告板上积了一层薄灰。要擦拭吗？）",
  t12Refused: "（你转身离开了公告板。背后好像有目光。）",
  wipe1: "（你擦去了一角灰尘。）",
  wipe2: "（灰下浮现出旧字迹——）",
  wipe3: "（公告板干净了。崭新得像什么都没发生过。）",
};

// 线索文本（PRD §8）
export const CLUE_TEXT: Record<string, string[]> = {
  C1: ["（床头挂着一本日历。）", "（每一页……都是同一个日期。）"],
  C2: ["（配方纸的背面有一行手写小字：）", "「按疗程配比。甜度：最大。」"],
  C3: ["（邮筒旁散落着几封信。）", "（所有邮戳，是同一天。）"],
  C4: ["（信的署名处闪过一行字——）", "「PT-0▓」", "（0.2 秒后，它变回了「蜜糖村邮政」。）"],
  C5: ["（同一种商品，重复排了九格。）", "（标签上，全部空白。）"],
  C6: ["「第 412 届丰收庆典」", "（下面覆盖着更早的字——「第 411 届」「第 410 届」……）"],
  C7: ["（你俯身向井口。井底传来极轻的——）", "（滴。滴。滴。）", "（像某种仪器的声音。）"],
  C8: ["（桌上的表格抬头被芙医生的手肘挡住了。）", "（只露出——「…谷情绪疗…」）"],
  C9: ["（龟爷爷望着湖面，没有再说话。）"],
};

// 梦境过场（侵蚀越高，梦境越"漏"）
export const DREAMS: Record<number, string[]> = {
  1: ["这一天很甜。", "梦里也是甜的。"],
  2: ["梦里有面包的香气。", "还有一点点……消毒水的味道？"],
  3: ["白色。", "有人在很远的地方念一个编号。"],
  4: ["同样的一天。", "同样的梦。", "同样的。"],
  5: ["井很深。", "井底有声音在数数。", "滴。滴。滴。"],
  6: ["明天大家都会微笑。", "必须微笑。", "必须。"],
};

// 结局文案（PRD §9）
export const ENDING_TEXT = {
  E1: ["从此，每一天都很幸福。", "每一天。"],
  E2: ["疗程重新开始。"],
  E4: ["系统检测到疗程无效。"],
  E3chart: (name: string, dur: string) => [
    "蜜糖谷情绪疗养中心",
    `姓名：${name}`,
    "编号：PT-07",
    `本次疗程时长：${dur}`,
  ],
};

// 劝离（D5 前古井/雾墙）
export const DISSUADE = {
  well: ["那边什么都没有哦。", "回来吧，广场今天很热闹呢。"],
  fog: ["雾的那边什么都没有哦。", "从来没有人需要去那边。"],
};

export const MISC = {
  bedEarly: "（天还亮着。还不困。）",
  bedSleep: "（睡吧。明天也会是幸福的一天。）",
  boardDone: "（今天的任务都完成啦。板上贴着一朵小红花。）",
  breadNeed: "（先去面包房找圆圆取面包吧。）",
  letterNeed: "（先去村口找大宝取信吧。）",
  festivalHintFog: "（雾墙的方向，有风声。）",
  rainNpc: "今天天气真好呀。",
  wellStare: "（你注视着井口。井口也注视着你。）",
  fogStare: "（雾没有流动。一丝都没有。）",
  picnic: ["（你在野餐布上坐下。）", "（湖面很亮，亮得过分。）", "（水里那个你，笑得和你一模一样——", "不，比你慢了一点点。）"],
  t14Start: "（保持微笑。不要动。60 秒。）",
  t14Cancel: "（你动了。任务中断了。）",
  t14Done: "（60 秒到了。大家都很满意。）",
  festivalGather: "（全村的目光，都转向了你。）",
};
