/** 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 =
  '忽然，彩带与笑声从四面八方涌来——欢乐庆典强制开始了。你也可以从场景边缘离开。';
