87 lines
3.9 KiB
TypeScript
87 lines
3.9 KiB
TypeScript
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: '暂时不接',
|
||
},
|
||
};
|