import type { FunctionDocumentationEntry } from '../types'; /** * npc_chat_quest_offer_* * * NPC 聊天态里的临时委托处理 function。它们不是新的任务系统, * 而是高好感聊天中 pending quest offer 的查看、更换和放弃入口。 */ const QUEST_OFFER_SOURCE = 'src/data/functionCatalog/npc/npcChatQuestOffer.ts'; const QUEST_OFFER_EXECUTOR = 'server-rs/crates/api-server/src/runtime_story/compat.rs -> resolve_runtime_story_choice_action'; export const NPC_CHAT_QUEST_OFFER_VIEW_FUNCTION: FunctionDocumentationEntry = { id: 'npc_chat_quest_offer_view', domain: 'npc', title: '查看委托', source: QUEST_OFFER_SOURCE, summary: '查看当前聊天中 NPC 刚提出但尚未领取的委托。', detailedDescription: '它用于 pending quest offer 阶段,只打开或返回当前待领取任务详情,不把任务写入正式 quest log。', trigger: 'NPC 聊天触发待领取委托后,任务处理态选项中出现。', execution: '后端读取当前 pending quest offer,并返回可展示的任务详情与领取入口。', result: '玩家可以查看任务目标和奖励,确认领取前不会改变正式任务日志。', active: true, runtime: { storyMode: 'local_only', uiMode: 'none', executor: QUEST_OFFER_EXECUTOR, animationNote: '不触发角色位移动画,重点是切换任务详情展示。', storyNote: '只保留当前委托上下文,不生成新的聊天剧情。', uiNote: '展示待领取任务详情,等待玩家领取、替换或返回聊天。', compactDetailText: '查看这份委托', }, }; export const NPC_CHAT_QUEST_OFFER_REPLACE_FUNCTION: FunctionDocumentationEntry = { id: 'npc_chat_quest_offer_replace', domain: 'npc', title: '更换委托', source: QUEST_OFFER_SOURCE, summary: '让 NPC 重新生成一份聊天内待领取委托。', detailedDescription: '它不会本地改写现有任务文案,而是重新走任务生成链,替换当前 pending quest offer。', trigger: 'NPC 聊天任务处理态中,玩家不满意当前委托时出现。', execution: '后端调用任务生成链生成新 quest offer,并覆盖当前聊天态 pending offer。', result: '当前待领取委托被替换,聊天仍停留在任务处理态,正式 quest log 不变。', active: true, runtime: { storyMode: 'local_effect_then_generate', uiMode: 'none', executor: QUEST_OFFER_EXECUTOR, animationNote: '不触发战斗或移动演出,只追加轻量聊天反馈。', storyNote: '重新生成 pending quest offer,并说明 NPC 换了一个委托。', uiNote: '继续显示查看、更换、放弃这组任务处理选项。', compactDetailText: '换一个委托', }, }; export const NPC_CHAT_QUEST_OFFER_ABANDON_FUNCTION: FunctionDocumentationEntry = { id: 'npc_chat_quest_offer_abandon', domain: 'npc', title: '放弃委托', source: QUEST_OFFER_SOURCE, summary: '丢弃当前聊天中尚未领取的委托。', detailedDescription: '它只清理 pending quest offer,不影响已经写入 quest log 的正式任务,也不会扣除奖励或结算任务失败。', trigger: 'NPC 聊天任务处理态中,玩家暂时不想接这份委托时出现。', execution: '后端清空当前聊天态 pending quest offer,并恢复普通 NPC 聊天选项。', result: '待领取委托消失,玩家回到自由聊天或离开 NPC 的正常流程。', active: true, runtime: { storyMode: 'local_only', uiMode: 'none', executor: QUEST_OFFER_EXECUTOR, animationNote: '不触发额外演出,只回到普通聊天态。', storyNote: '追加玩家暂时不接委托的轻量反馈。', uiNote: '恢复普通 npc_chat 建议和自定义输入。', compactDetailText: '暂时不接', }, };