// NPC 台词与系统旁白。原文案保持干净，文本腐蚀（§6.5）在渲染层实施。
// D4 全部对话与 D1 逐字相同：直接复用 D1 的数组引用。

import type { NpcId } from '../types';

// ---------- 每日闲聊（非任务状态时的默认对话） ----------

const AFU_D1 = ['任务都贴在板上啦，做完了就回家休息。祝你开心！'];
const YUANYUAN_D1 = ['新烤的蜂蜜面包，香吧？', '能帮我把面包送给大宝、咪咪和龟爷爷吗？谢谢你呀！'];
const DABAO_D1 = ['今天的邮件都送完啦。', '有我的面包吗？嘿嘿。'];
const MIMI_D1 = ['欢迎光临～', '店里什么都有哦，幸福也有卖，免费的。'];
const FUYISHENG_D1 = ['村里有诊所，但你不需要去那里哦。', '保持健康，保持幸福。'];
const GUIYEYE_D1 = ['天气真好啊。', '适合在长椅上坐一整天。'];
const BIRD_D1 = ['啾啾——啾啾——'];

export const NPC_LINES: Record<NpcId, Record<number, string[]>> = {
  afu: {
    1: AFU_D1,
    2: ['新的一天，新的任务。要开心哦！'],
    3: ['今天要把幸福装得满满的。满满的！'],
    4: AFU_D1, // 与 D1 逐字相同
    5: ['自由日。你可以自由地选择。……但大家都会看着你的选择。'],
    6: ['明天就是庆典了。你必须开心。'],
    7: ['庆典开始了。来吧。大家都在等你。'],
  },
  yuanyuan: {
    1: YUANYUAN_D1,
    2: ['邮差先生今天好像特别忙呢。'],
    3: ['莓果熟了吧？采回来我给你做果酱。'],
    4: YUANYUAN_D1, // 与 D1 逐字相同
    5: ['能帮我揉一会儿面吗？……不愿意也没关系哦。'],
    6: ['明天的庆典，我烤了好多面包。好多好多。'],
    7: ['庆典要开始了，快去吧。要笑着去哦。'],
  },
  dabao: {
    1: DABAO_D1,
    2: ['有三封信要送，我送不过来了。', '麻烦你帮我送给圆圆、咪咪和芙医生，好吗？'],
    3: ['今天一封邮件都没有。真奇怪。每天都有信的呀。'],
    4: DABAO_D1, // 与 D1 逐字相同
    5: ['自由日也要送信。这是我的工作。工作让人幸福。'],
    6: ['明天庆典的邀请函，全都送出去了。每一封都一样。'],
    7: ['去吧。大家都在等你。'],
  },
  mimi: {
    1: MIMI_D1,
    2: ['货架好像有点乱。', '帮我数一遍好吗？数清楚了就开心了。'],
    3: ['今天的阳光真甜呀。', '甜得让人想睡觉。一直睡。'],
    4: MIMI_D1, // 与 D1 逐字相同
    5: ['自由日……自由是什么呢？是甜的吗？'],
    6: ['雨？没有下雨呀。', '你看错了吧。今天也是大晴天。'],
    7: ['第 413 届了。', '每一届都很圆满。每一届。'],
  },
  fuyisheng: {
    1: FUYISHENG_D1,
    2: ['信？给我的？……谢谢。我会好好保管。'],
    3: ['有什么不舒服，随时来找我。……虽然你不会有不舒服的。'],
    4: FUYISHENG_D1, // 与 D1 逐字相同
    5: ['累了可以来坐坐。', '桌子上的东西，不要随便看哦。'],
    6: ['明天见。一定要来哦。疗程需要坚持。'],
    7: ['如果你想起了什么，就来找我。', '雾的那边，也可以去。'],
  },
  guiyeye: {
    1: GUIYEYE_D1,
    2: ['湖水一直很平静。……一直都是。'], // C9 第一段
    3: ['野餐吗？湖边的风景很好。一直很好。'],
    4: ['面包一直是那个味道。一直，一直。'], // C9 第二段
    5: ['井那边……等你想听的时候，再去听吧。'],
    6: ['孩子，今天是第几个今天？'], // C9 第三段
    7: ['去吧。', '记住：不开心，也是被允许的。'],
  },
  bird: {
    1: BIRD_D1, 2: BIRD_D1, 3: BIRD_D1, 4: BIRD_D1,
    5: BIRD_D1, 6: BIRD_D1, 7: BIRD_D1,
  },
  squirrel: { 1: [''], 2: [''], 3: [''], 4: [''], 5: [''], 6: [''], 7: [''] },
  hedgehog: { 1: [''], 2: [''], 3: [''], 4: [''], 5: [''], 6: [''], 7: [''] },
  fox: { 1: [''], 2: [''], 3: [''], 4: [''], 5: [''], 6: [''], 7: [''] },
  pig: { 1: [''], 2: [''], 3: [''], 4: [''], 5: [''], 6: [''], 7: [''] },
  chick: { 1: [''], 2: [''], 3: [''], 4: [''], 5: [''], 6: [''], 7: [''] },
};

export function npcLinesOf(id: NpcId, day: number): string[] {
  const d = Math.min(7, Math.max(1, day));
  return NPC_LINES[id][d] ?? ['……'];
}

// ---------- 三选项回应（温柔/迟疑/否定，§6.1/6.2/6.3） ----------

export const CHOICE_REPLIES: Record<'gentle' | 'hesitant' | 'deny', string> = {
  gentle: '你真好呀！今天也要开心哦！',
  hesitant: '……嗯？你还好吗？没关系，一定没关系的。',
  deny: '…………（ta 的微笑没有变化，但转过头看了你一眼）',
};

// ---------- 任务专用台词 ----------

/** T1/T8 取面包 */
export const TAKE_BREAD_LINES = ['圆圆把蜂蜜面包包好递给你：', '「麻烦你啦！送给大宝、咪咪和龟爷爷，一人一个。」'];
export const ALREADY_TOOK_BREAD = ['面包已经拿好啦，快送给大家吧。'];

/** T1/T8 收件人台词（D4 复用 D1，逐字相同） */
export const BREAD_RECEIVERS: Record<string, string[]> = {
  dabao: ['哇，蜂蜜面包！谢谢你！', '（大宝三口就吃完了）'],
  mimi: ['面包～谢谢啦。', '店里有很多好东西哦，随便看，慢慢看。'],
  guiyeye: ['哦……面包。谢谢，孩子。', '（龟爷爷小口小口地吃着）'],
};

/** T2/T9 浇花 */
export const WATER_FLOWER_LINES = ['你给花坛浇了水。花开得更精神了。'];
export const WATER_FLOWER_DONE = ['花坛已经浇过水了。花儿对你点头。'];

/** T4 送信 */
export const TAKE_LETTERS_LINES = ['大宝把三封信交给你：', '「圆圆、咪咪、芙医生，一人一封。拜托啦！」'];
export const LETTER_RECEIVERS: Record<string, string[]> = {
  yuanyuan: ['圆圆接过信：「给我的？谢谢你呀！」'],
  mimi: ['咪咪接过信：「信？哦……谢谢。」'],
  fuyisheng: ['芙医生接过信，看了一眼署名，轻轻收进抽屉。'],
};
/** 第三封信署名乱码 0.2 秒（C4）闪显文字 */
export const LETTER_GLITCH_TEXT = '寄件人：PT-0▓';

/** T5 清点货架 */
export const SHELF_COUNT_LINES = [
  '你开始帮咪咪清点货架。',
  '罐头，一个，两个，三个……',
  '……同样的罐头，一排，两排，三排。整整九格。',
  '所有标签都是空白的。',
];
export const SHELF_COUNT_DONE = ['咪咪：「数清楚啦？你真能干！开心了吧？」'];

/** T6 采莓果 */
export const BERRY_PICK_LINES = ['你摘下一捧熟透的莓果。甜甜的。'];
export const BERRY_EMPTY_LINES = ['这丛莓果已经摘过了。'];

/** T7 湖畔野餐 */
export const PICNIC_LINES = [
  '你在湖边的野餐布上坐下。',
  '面包，莓果，微风，湖面的倒影轻轻摇晃。',
  '一切都很完美。完美得让人想哭——',
  '……不。完美得让人开心。',
];
export const PICNIC_DONE = ['野餐布还铺在那里。湖面很平静。一直。'];

/** T11 帮圆圆揉面（可拒绝） */
export const KNEAD_ASK = ['圆圆：「能帮我揉一会儿面吗？面团要揉得软软的，才会幸福。」'];
export const KNEAD_ACCEPT = ['你挽起袖子揉面。面团暖暖的。', '圆圆：「揉得真好！谢谢你！」'];
export const KNEAD_REFUSE = ['你摇了摇头。', '圆圆笑着说：「没关系哦。」', '她的笑，比平时慢了半拍。'];

/** T12 擦拭公告板（可拒绝，C6） */
export const WIPE_ASK = ['公告板上贴着一张抹布。要擦拭公告板吗？'];
export const WIPE_ACCEPT = [
  '你开始擦拭公告板。',
  '擦到一半，新漆下面浮出更早的字迹：',
  '「第 412 届丰收庆典」下面，盖着「第 411 届」「第 410 届」……',
];
export const WIPE_REFUSE = ['你放下了抹布。', '公告板静静地看着你。'];

/** T13 挂彩带 */
export const RIBBON_LINES = ['你把彩带挂了上去。广场更喜庆了。'];
export const RIBBON_DONE = ['这里已经挂好彩带了。'];

/** T14 保持微笑 60 秒 */
export const T14_INTRO = [
  '阿福：「最后一项任务：保持微笑，六十秒。」',
  '「站在原地，不要动。大家都会看着你。」',
];
/** T14/T15：与阿福对话时的地点指引 */
export const T14_HINT = ['阿福：「去广场中央站好。保持微笑，不要动。」'];
export const T15_HINT = ['阿福：「庆典场地在广场北边。大家都在等你。」'];
export const T14_MOVE_WARN = ['阿福：「不要动哦。微笑。」'];
export const T14_DONE = [
  '六十秒到了。',
  '阿福：「做得很好。你一直都是个幸福的孩子。」',
  '（远处，天色暗了下来。好像……要下雨了？）',
];

/** T15 庆典 */
export const T15_INTRO = [
  '第 413 届丰收庆典，正式开始。',
  '全村的人都来了。每个人都在微笑。',
  '阿福站在台上：「让我们——永远幸福下去！」',
];

// ---------- 线索/交互专用台词 ----------

export const CALENDAR_BEFORE = ['日历上是今天的日期。明天会翻到新的一页吧。'];
export const RECIPE_BEFORE = ['一张配方纸，写着面包的做法。字迹很工整。'];
export const DOCTOR_DESK_BEFORE = ['芙医生的桌子很整洁。'];
export const WELL_DISSUADE = [
  '你刚靠近古井，身后传来温和的声音：',
  '「那边的井很深哦，不要靠太近。来，我们回去玩吧。」',
  '（被温柔地劝离了）',
];
export const FOG_DISSUADE = [
  '「前面雾好大呀，今天还是不要去那边啦。」',
  '「要开心哦！」',
  '（被温柔地劝离了）',
];
export const WELL_LISTEN_START = ['你俯下身，仔细听井底的声音。'];
export const WELL_LISTEN_ABORT = ['你直起身。井底恢复了安静。'];
export const FOG_WALL_LINES = ['雾很浓，像一堵墙。', '你盯着它看了很久。雾后面……好像有白色的光。'];
export const FOG_WALL_BLOCKED = ['雾太浓了，过不去。'];
export const MAILBOX_BEFORE = ['邮筒擦得很亮。'];

// ---------- 系统旁白 ----------

export const NARRATOR = {
  duskBell: '（远处传来钟声。天黑了，该回家睡觉了。）',
  notSleepy: '还不困呢。今天的幸福任务还没完成哦。',
  noSleepD7: '今天是庆典，不能睡觉哦。去吧。',
  celebrationStart: [
    '村民们不知什么时候围了过来。',
    '「你不开心吗？」「要开心哦！」「开心起来！开心起来！」',
    '（欢乐庆典开始了。从场景边缘离开，就能逃开……）',
  ],
  celebrationEnd: ['……你感觉好多了。', '必须好起来。'],
  celebrationEscape: ['你逃开了。', '身后的笑声还在响。笑声。笑声。'],
  rainStart: '（下雨了。村里第一次下雨。）',
  firstFull: '（幸福满了。满得溢出来。世界白得刺眼——）',
} as const;

/** 黄昏后、任务未完成时睡觉的提示复用 notSleepy */
export function sleepBlockedLine(): string {
  return NARRATOR.notSleepy;
}
