E:\Repos\ai-native-visual-rpg\src\data\characterPresets.ts:344:{ category: '专属品', name: `${character.name}的信物`, quantity: 2 }, E:\Repos\ai-native-visual-rpg\src\data\characterPresets.ts:1565:description: `${character.title}在此地活动。${character.description}`, E:\Repos\ai-native-visual-rpg\src\data\customWorldRuntime.ts:226:const name = `${prefix}${optionSeed || worldSeed}${noun}${index + 1}`; E:\Repos\ai-native-visual-rpg\src\data\customWorldRuntime.ts:234:description: `围绕“${profile.playerGoal}”即时生成的${category},适合在 ${profile.name} 中作为掉落、交易或补给资源。`, E:\Repos\ai-native-visual-rpg\src\data\customWorldVisuals.ts:12:{ packName: 'Pixel Battle Backgrounds - Pack 1', count: 121 }, E:\Repos\ai-native-visual-rpg\src\data\customWorldVisuals.ts:13:{ packName: 'Pixel Battle Backgrounds - Pack 2', count: 119 }, E:\Repos\ai-native-visual-rpg\src\data\customWorldVisuals.ts:14:{ packName: 'Pixel Battle Backgrounds - Pack 3', count: 170 }, E:\Repos\ai-native-visual-rpg\src\data\forgeSystem.ts:264:description: '为法修、雷法、过载 build 提供资源与爆发补强。', E:\Repos\ai-native-visual-rpg\src\data\forgeSystem.ts:389:name: item.name.includes('重铸') ? item.name : `${item.name}·重铸`, E:\Repos\ai-native-visual-rpg\src\data\itemDesign.ts:474:description: `${wuxiaName} / ${xianxiaName} 这件图标物资可在两个世界中以不同风格登场,适合作为${category}基础模板继续扩展。`, E:\Repos\ai-native-visual-rpg\src\data\itemDesign.ts:538:description: `${theme.setWuxia} / ${theme.setXianxia} 套装中的 ${piece.pieceName} 位。相邻编号代表同家族不同锻造阶段,适合围绕 ${theme.synergy.join("、")} 组 build。`, E:\Repos\ai-native-visual-rpg\src\data\itemDesign.ts:589:description: `${jewelryType} 家族的 ${descriptor.replace(/_/g, " ")} 款式。围绕 ${role} build 提供核心词条,也可以与同角色定位的项链/手镯/戒指拼成饰品流派。`, E:\Repos\ai-native-visual-rpg\src\data\itemDesign.ts:747:description: `${token} 系晶石适合做强度梯度:粉尘是材料,宝石是中阶插件,晶体是高阶核心件。`, E:\Repos\ai-native-visual-rpg\src\data\itemDesign.ts:820:description: "技能图标类物品会被设计成功法、符印、强化器或秘卷,用于支撑特定流派的 build 想象。", E:\Repos\ai-native-visual-rpg\src\data\itemDesign.ts:906:description: `${readable} 根据视觉和路径被自动归入 ${category} 家族,可作为 ${role} 向 build 的支撑件或素材件。`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:83:title: `平定${targetMonsterName}`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:84:description: `${issuerNpcName}希望你替他处理盘踞在 ${scene.name} 附近的敌对 NPC ${targetMonsterName}。`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:85:summary: `击败 1 名 ${targetMonsterName}`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:110:title: `清理${targetMonsterName}`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:111:description: `${issuerNpcName}希望你替他处理盘踞在${scene.name}附近的${targetMonsterName}。`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:112:summary: `击败 1 次 ${targetMonsterName}`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:133:title: `探明${scene.name}的藏宝线索`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:134:description: `${issuerNpcName}想知道${scene.name}附近那处宝藏是否安全,拜托你先去查明。`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:135:summary: `在 ${scene.name} 完成 1 次宝藏调查`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:154:title: `与 ${issuerNpcName} 切磋一场`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:155:description: `${issuerNpcName}想先摸摸你的底,如果你愿意,就和他点到为止地切磋一场。`, E:\Repos\ai-native-visual-rpg\src\data\questFlow.ts:156:summary: `和 ${issuerNpcName} 完成 1 次切磋`, E:\Repos\ai-native-visual-rpg\src\data\sceneEncounterPreviews.ts:33:npcName: 'Treasure', E:\Repos\ai-native-visual-rpg\src\data\sceneEncounterPreviews.ts:34:npcDescription: `You spot clues tied to ${treasureHint} ahead. It looks like a cache someone hid on purpose.`, E:\Repos\ai-native-visual-rpg\src\data\sceneEncounterPreviews.ts:36:context: 'Treasure', E:\Repos\ai-native-visual-rpg\src\data\scenePresets.ts:80:{ packName: 'Pixel Battle Backgrounds - Pack 1', count: 121 }, E:\Repos\ai-native-visual-rpg\src\data\scenePresets.ts:81:{ packName: 'Pixel Battle Backgrounds - Pack 2', count: 119 }, E:\Repos\ai-native-visual-rpg\src\data\scenePresets.ts:82:{ packName: 'Pixel Battle Backgrounds - Pack 3', count: 170 }, E:\Repos\ai-native-visual-rpg\src\data\scenePresets.ts:191:description: `${npc.description} 动机:${npc.motivation}`, E:\Repos\ai-native-visual-rpg\src\data\scenePresets.ts:219:description: `${character.description} 这名角色属于自定义世界“${profile.name}”的可扮演阵容。`, E:\Repos\ai-native-visual-rpg\src\data\scenePresets.ts:230:description: `你在${profile.name}的临时营地整备行装。${profile.summary}`, E:\Repos\ai-native-visual-rpg\src\data\stateFunctions.ts:372:description: '朝前方主动喊话试探,可能把藏着的 NPC、怪物或其他动静逼出来。', E:\Repos\ai-native-visual-rpg\src\data\stateFunctions.ts:445:description: '主动朝前方喊话试探,可能把附近潜着的 NPC 或怪物直接从远处引出来。', E:\Repos\ai-native-visual-rpg\src\hooks\combat\battlePlan.test.ts:9:name: 'Test Hero', E:\Repos\ai-native-visual-rpg\src\hooks\combat\battlePlan.test.ts:10:title: 'Hero', E:\Repos\ai-native-visual-rpg\src\hooks\combat\battlePlan.test.ts:11:description: 'A test character', E:\Repos\ai-native-visual-rpg\src\hooks\combat\battlePlan.test.ts:27:name: 'Basic Strike', E:\Repos\ai-native-visual-rpg\src\hooks\combat\battlePlan.test.ts:97:actionText: 'Attack', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:26:name: 'Hero', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:27:title: 'Wanderer', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:28:description: 'A reliable test hero.', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:49:name: 'Wolf', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:51:description: 'A test wolf.', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:83:npcName: 'Bandit', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:84:npcDescription: 'A bandit', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:86:context: 'bandit', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:127:actionText: 'Run', E:\Repos\ai-native-visual-rpg\src\hooks\combat\escapeFlow.test.ts:128:text: 'Run', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:7:name: 'Camp', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:8:description: 'A quiet camp.', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:13:name: 'Trail', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:14:description: 'A mountain trail.', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:52:name: 'Test Hero', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:53:title: 'Hero', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:54:description: 'A test character', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:70:name: 'Basic Strike', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:186:name: 'Wolf', E:\Repos\ai-native-visual-rpg\src\hooks\combat\resolvedChoice.test.ts:188:description: 'A wolf', E:\Repos\ai-native-visual-rpg\src\hooks\story\characterChat.ts:283:error: error instanceof Error ? error.message : 'Unknown AI error', E:\Repos\ai-native-visual-rpg\src\hooks\story\npcEncounterActions.ts:389:setAiError(error instanceof Error ? error.message : 'NPC dialogue AI is unavailable.'); E:\Repos\ai-native-visual-rpg\src\hooks\story\npcInteraction.ts:320:runtime.setAiError(error instanceof Error ? error.message : '未知 AI 错误'); E:\Repos\ai-native-visual-rpg\src\hooks\story\npcInteraction.ts:402:runtime.setAiError(error instanceof Error ? error.message : '未知 AI 错误'); E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:7:name: 'Camp', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:8:description: 'A quiet camp.', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:17:name: 'Trail', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:18:description: 'A mountain trail.', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:57:name: 'Hero', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:58:title: 'Wanderer', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:59:description: 'A reliable test hero.', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:81:description: `${name} description`, E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:94:npcName: 'Trader Lin', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:95:npcDescription: 'A traveling merchant.', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.test.ts:97:context: 'merchant', E:\Repos\ai-native-visual-rpg\src\hooks\story\storyGenerationState.ts:141:actionText: `Travel to ${targetScene.name}`, E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:576:actionText: 'Travel to ' + sceneName, E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:577:text: 'Travel to ' + sceneName, E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:578:detailText: 'Leave camp and head toward ' + sceneName + '.', E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:654:const actionText = `Speak with ${encounter.npcName}`; E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:659:detailText: 'Focus on the person in front of you first, then decide how to respond.', E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:1097:const actionText = 'Begin the adventure'; E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:1212:setAiError(error instanceof Error ? error.message : '未知 AI 错误'); E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:1264:setAiError(error instanceof Error ? error.message : '未知 AI 错误'); E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:1297:const actionText = `Exchange an opening judgment with ${encounter.npcName} at camp`; E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:1374:setAiError(error instanceof Error ? error.message : 'Unknown AI error'); E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:1407:setAiError(error instanceof Error ? error.message : '未知 AI 错误'); E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:1508:setAiError(error instanceof Error ? error.message : '未知 AI 错误'); E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:1794:setAiError(storyError instanceof Error ? storyError.message : 'Unknown AI error'); E:\Repos\ai-native-visual-rpg\src\hooks\useStoryGeneration.ts:1855:setAiError(error instanceof Error ? error.message : '未知 AI 错误'); E:\Repos\ai-native-visual-rpg\src\components\game-shell\PreGameSelectionFlow.tsx:48:{ label: 'QQ Group', value: '1094580241' }, E:\Repos\ai-native-visual-rpg\src\components\game-shell\PreGameSelectionFlow.tsx:49:{ label: 'WeChat', value: 'bzh253518756' }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:149:return ; E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:220:name: 'New Skill', E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:264:title="Characters" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:265:description="Browse the character roster and edit preset data." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:275:label: `${optionCharacter.name} 闂?${optionCharacter.title}`, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:315:title="Character Details" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:316:description="Edit the core character profile and preview settings." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:404:title="Skill Preview" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:405:description="Preview ranged skills for the selected character." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:450:title="Skill Setup" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:451:description="Configure the selected character's skills." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:629: E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:697:title="Attributes" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:698:description="Adjust the core character attributes." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:729: E:\Repos\ai-native-visual-rpg\src\components\preset-editor\CharacterPresetPanel.tsx:755:{ label: 'Unset', value: '' }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\MonsterPresetPanel.tsx:124:title="Section" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\MonsterPresetPanel.tsx:125:description="Editor section." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\MonsterPresetPanel.tsx:135:label: `${WORLD_LABELS[monster.worldType]} 闂?${optionMonster.name}`, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\MonsterPresetPanel.tsx:158:title="Monster Override Preview" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\MonsterPresetPanel.tsx:159:description="Editor section." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\MonsterPresetPanel.tsx:207: E:\Repos\ai-native-visual-rpg\src\components\preset-editor\MonsterPresetPanel.tsx:275: E:\Repos\ai-native-visual-rpg\src\components\preset-editor\MonsterPresetPanel.tsx:307: E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:159:return ; E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:177:title="NPC Library" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:178:description="Browse and select an NPC preset." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:188:label: `${optionNpc.name} (${item.sceneNames.join(' / ')})`, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:221:title="Skill Preview" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:222:description="Preview ranged skills from the linked character." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:264:title="Visual Preview" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:310:title="NPC Details" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:311:description="Edit the selected NPC preset." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\SceneNpcPresetPanel.tsx:371:title="Visual Editor" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:105:npcName: 'Treasure Ahead', E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:108:context: 'Treasure', E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:132:title="Scene Library" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:133:description="Browse and select a scene preset." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:145:label: `${WORLD_LABELS[scene.worldType]} - ${optionScene.name}`, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:170:title="Scene Preview" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:171:description="Preview monsters, NPCs, and treasure for the selected scene." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:179:{ label: 'Monster Preview', value: 'monster' }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:180:{ label: 'NPC Preview', value: 'npc' }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:181:{ label: 'Treasure Preview', value: 'treasure' }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:182:{ label: 'Empty', value: 'empty' }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:233:title="Scene Details" E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:234:description="Edit the selected scene preset." E:\Repos\ai-native-visual-rpg\src\components\preset-editor\ScenePresetPanel.tsx:271:options={[{ label: 'Unset', value: '' }, ...sceneOptions]} E:\Repos\ai-native-visual-rpg\src\components\preset-editor\shared.ts:42:{ id: 'characters', label: 'Characters', icon: User }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\shared.ts:43:{ id: 'npcs', label: 'NPC', icon: Users }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\shared.ts:44:{ id: 'scenes', label: 'Scenes', icon: MapIcon }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\shared.ts:45:{ id: 'monsters', label: 'Monsters', icon: Sword }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\shared.ts:46:{ id: 'items', label: 'Items', icon: Package }, E:\Repos\ai-native-visual-rpg\src\components\preset-editor\shared.ts:47:{ id: 'functions', label: 'Functions', icon: Braces }, E:\Repos\ai-native-visual-rpg\src\components\AdventureEntityModal.tsx:1073:
E:\Repos\ai-native-visual-rpg\src\components\CharacterDetailModal.tsx:257:
E:\Repos\ai-native-visual-rpg\src\components\CustomWorldEntityCatalog.tsx:25:{ id: 'story', label: 'NPC' }, E:\Repos\ai-native-visual-rpg\src\components\CustomWorldEntityCatalog.tsx:349: E:\Repos\ai-native-visual-rpg\src\components\CustomWorldEntityEditorModal.tsx:478:title="AI生成NPC形象" E:\Repos\ai-native-visual-rpg\src\components\CustomWorldEntityEditorModal.tsx:566:label: `${character.name} / ${character.title}`, E:\Repos\ai-native-visual-rpg\src\components\CustomWorldEntityEditorModal.tsx:758:title="AI生成场景" E:\Repos\ai-native-visual-rpg\src\components\CustomWorldEntityEditorModal.tsx:774:name: `自定义角色${profile.playableNpcs.length + 1}`, E:\Repos\ai-native-visual-rpg\src\components\CustomWorldEntityEditorModal.tsx:789:name: `自定义NPC${profile.storyNpcs.length + 1}`, E:\Repos\ai-native-visual-rpg\src\components\CustomWorldEntityEditorModal.tsx:811:name: `自定义场景${profile.landmarks.length + 1}`, E:\Repos\ai-native-visual-rpg\src\components\ItemCatalogEditor.tsx:458:
E:\Repos\ai-native-visual-rpg\src\components\ItemCatalogEditor.tsx:673:
E:\Repos\ai-native-visual-rpg\src\components\MedievalNpcAnimator.tsx:118:npcName: '预览 NPC', E:\Repos\ai-native-visual-rpg\src\components\MedievalNpcAnimator.tsx:119:npcDescription: '用于预览的 NPC 外形。', E:\Repos\ai-native-visual-rpg\src\components\NpcVisualEditor.tsx:539:setSaveMessage(error instanceof Error ? error.message : 'Save failed'); E:\Repos\ai-native-visual-rpg\src\components\NpcVisualEditor.tsx:723:label: `${option.encounter.npcName} (${option.sceneNames.join(' / ')})`, E:\Repos\ai-native-visual-rpg\src\components\StateFunctionEditor.tsx:106:{value: 'monster', label: '敌对NPC'}, E:\Repos\ai-native-visual-rpg\src\components\StateFunctionEditor.tsx:107:{value: 'npc', label: 'NPC'}, E:\Repos\ai-native-visual-rpg\src\components\StateFunctionEditor.tsx:310:npcName: '预览 NPC', E:\Repos\ai-native-visual-rpg\src\components\StateFunctionEditor.tsx:313:context: 'Preview', E:\Repos\ai-native-visual-rpg\src\components\StateFunctionEditor.tsx:325:context: 'Treasure', E:\Repos\ai-native-visual-rpg\src\components\StateFunctionEditor.tsx:803:setPlayError(error instanceof Error ? error.message : 'Failed to play preview'); E:\Repos\ai-native-visual-rpg\src\components\StateFunctionEditor.tsx:1064:setSaveMessage(error instanceof Error ? error.message : 'Failed to save option behavior overrides'); E:\Repos\ai-native-visual-rpg\src\components\StateFunctionEditor.tsx:1138: E:\Repos\ai-native-visual-rpg\src\editor\shared\jsonClient.test.ts:11:message: 'Detailed failure',