84 lines
1.9 KiB
TypeScript
84 lines
1.9 KiB
TypeScript
/**
|
|
* RPG 运行时任务辅助与道具意图共享契约。
|
|
* 该文件只承载 quest / runtime item 辅助类型,不混入 runtime story 主状态。
|
|
*/
|
|
import type { JsonObject } from './common';
|
|
|
|
export const QUEST_NARRATIVE_TYPES = [
|
|
'bounty',
|
|
'escort',
|
|
'investigation',
|
|
'retrieval',
|
|
'relationship',
|
|
'trial',
|
|
] as const;
|
|
export type SharedQuestNarrativeType = (typeof QUEST_NARRATIVE_TYPES)[number];
|
|
|
|
export const QUEST_OBJECTIVE_KINDS = [
|
|
'defeat_hostile_npc',
|
|
'inspect_treasure',
|
|
'spar_with_npc',
|
|
'talk_to_npc',
|
|
'reach_scene',
|
|
'deliver_item',
|
|
] as const;
|
|
export type SharedQuestObjectiveKind = (typeof QUEST_OBJECTIVE_KINDS)[number];
|
|
|
|
export const QUEST_URGENCY_LEVELS = ['low', 'medium', 'high'] as const;
|
|
export type SharedQuestUrgency = (typeof QUEST_URGENCY_LEVELS)[number];
|
|
|
|
export const QUEST_INTIMACY_LEVELS = [
|
|
'transactional',
|
|
'cooperative',
|
|
'trust_based',
|
|
] as const;
|
|
export type SharedQuestIntimacy = (typeof QUEST_INTIMACY_LEVELS)[number];
|
|
|
|
export const QUEST_REWARD_THEMES = [
|
|
'currency',
|
|
'resource',
|
|
'relationship',
|
|
'intel',
|
|
'rare_item',
|
|
] as const;
|
|
export type SharedQuestRewardTheme = (typeof QUEST_REWARD_THEMES)[number];
|
|
|
|
export const RUNTIME_ITEM_FUNCTIONAL_BIAS_VALUES = [
|
|
'heal',
|
|
'mana',
|
|
'cooldown',
|
|
'guard',
|
|
'damage',
|
|
] as const;
|
|
export type SharedRuntimeItemFunctionalBias =
|
|
(typeof RUNTIME_ITEM_FUNCTIONAL_BIAS_VALUES)[number];
|
|
|
|
export const RUNTIME_ITEM_TONE_VALUES = [
|
|
'grim',
|
|
'mysterious',
|
|
'martial',
|
|
'ritual',
|
|
'survival',
|
|
] as const;
|
|
export type SharedRuntimeItemTone = (typeof RUNTIME_ITEM_TONE_VALUES)[number];
|
|
|
|
export type RuntimeItemIntentRequest<
|
|
TContext = JsonObject,
|
|
TPlan = JsonObject,
|
|
> = {
|
|
context: TContext;
|
|
plans: TPlan[];
|
|
};
|
|
|
|
export type RuntimeItemIntentResponse<TIntent = JsonObject> = {
|
|
intents: TIntent[];
|
|
};
|
|
|
|
export type QuestGenerationRequest<
|
|
TState = JsonObject,
|
|
TEncounter = JsonObject,
|
|
> = {
|
|
state: TState;
|
|
encounter: TEncounter;
|
|
};
|