全站通知:

模块:GiftTastesNPC/data

来自星露谷物语维基
跳到导航 跳到搜索

当前页面的数据通过以下 Python 代码生成,后续如果游戏版本更新,可重新执行脚本,导出最新的数据。

本 Python 脚本部分内容与 MediaWiki 解析发生冲突,原脚本:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
星露谷物语 NPCGiftTastes.zh-CN.json 转 Lua 数据转换器

此脚本将 NPCGiftTastes.zh-CN.json 文件转换为 Lua 数据格式。

NPCGiftTastes数据格式说明:
1. Universal_* 键: 通用喜好,对所有村民有效
   - 值为用空格分隔的ID数组
   - 正数表示物品ID,负数表示类别ID

2. NPC名称键: 个人喜好,格式为用"/"分隔的字符串
   结构: 最爱对话/最爱物品ID/喜欢对话/喜欢物品ID/不喜欢对话/不喜欢物品ID/讨厌对话/讨厌物品ID/一般对话/一般物品ID
"""

import json
import os
import re
from typing import Dict, List, Any, Union


class NPCGiftTastesConverter:
    def __init__(self, input_file: str, output_file: str = None):
        """
        初始化转换器
        
        Args:
            input_file (str): 输入的JSON文件路径
            output_file (str): 输出的Lua文件路径,如果为None则自动生成
        """
        self.input_file = input_file
        self.output_file = output_file or self._generate_output_filename()
        
        # 通用喜好级别映射
        self.universal_levels = [
            'Universal_Love',
            'Universal_Like', 
            'Universal_Neutral',
            'Universal_Dislike',
            'Universal_Hate'
        ]
        
        # 个人喜好级别映射(索引对应NPC数据中的位置)
        self.personal_levels = [
            'love',      # 0,1 最爱
            'like',      # 2,3 喜欢  
            'dislike',   # 4,5 不喜欢
            'hate',      # 6,7 讨厌
            'neutral'    # 8,9 一般
        ]

    def _generate_output_filename(self) -> str:
        """生成输出文件名"""
        base_name = os.path.splitext(self.input_file)[0]
        return f"{base_name}.lua"

    def _escape_lua_string(self, text: str) -> str:
        """转义Lua字符串中的特殊字符"""
        if not text:
            return '""'
        
        # 转义特殊字符
        text = text.replace('\\', '\\\\')
        text = text.replace('"', '\\"')
        text = text.replace('\n', '\\n')
        text = text.replace('\r', '\\r')
        text = text.replace('\t', '\\t')
        
        return f'"{text}"'

    def _parse_id_list(self, id_string: str) -> List[Union[int, str]]:
        """解析空格分隔的ID列表,可以是数字或字符串"""
        if not id_string or id_string.strip() == '':
            return []
        
        ids = []
        for id_str in id_string.strip().split():
            try:
                # 尝试将ID转换为整数
                ids.append(int(id_str))
            except ValueError:
                # 如果不是数字,可能是特殊标识符 (例如物品的英文名),作为字符串保留
                ids.append(id_str)
        return ids

    def _parse_npc_data(self, npc_data: str) -> Dict[str, Any]:
        """
        解析NPC个人喜好数据
        
        格式: 最爱对话/最爱物品/喜欢对话/喜欢物品/不喜欢对话/不喜欢物品/讨厌对话/讨厌物品/一般对话/一般物品
        """
        parts = npc_data.split('/')
        
        # 确保有足够的部分(至少10个部分)
        while len(parts) < 10:
            parts.append('')
        
        result = {}
        
        for i, level in enumerate(self.personal_levels):
            dialogue_index = i * 2
            items_index = i * 2 + 1
            
            dialogue = parts[dialogue_index] if dialogue_index < len(parts) else ''
            items_str = parts[items_index] if items_index < len(parts) else ''
            
            result[level] = {
                'dialogue': dialogue.strip(),
                'items': self._parse_id_list(items_str)
            }
        
        return result

    def _convert_to_lua_table(self, data: Any, indent: int = 0) -> str:
        """将数据转换为Lua表格式"""
        indent_str = '    ' * indent
        
        if isinstance(data, dict):
            if not data:
                return '{}'
            
            lines = ['{']
            for key, value in data.items():
                # 确保键名是有效的Lua标识符或使用方括号语法
                if isinstance(key, str) and re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*$', key):
                    key_str = key
                else:
                    key_str = f'[{self._escape_lua_string(str(key))}]'
                
                value_str = self._convert_to_lua_table(value, indent + 1)
                lines.append(f'{indent_str}    {key_str} = {value_str},')
            lines.append(f'{indent_str}}}')
            return '\n'.join(lines)
        
        elif isinstance(data, list):
            if not data:
                return '{}'
            
            # 如果是纯数字数组,使用紧凑格式
            if all(isinstance(x, (int, float)) for x in data):
                return '{' + ', '.join(str(x) for x in data) + '}'
            # 否则,使用多行格式以提高可读性
            else:
                lines = ['{']
                for item in data:
                    item_str = self._convert_to_lua_table(item, indent + 1)
                    lines.append(f'{indent_str}    {item_str},')
                lines.append(f'{indent_str}}}')
                return '\n'.join(lines)
        
        elif isinstance(data, str):
            return self._escape_lua_string(data)
        
        elif isinstance(data, (int, float)):
            return str(data)
        
        elif isinstance(data, bool):
            return 'true' if data else 'false'
        
        elif data is None:
            return 'nil'
        
        else:
            return self._escape_lua_string(str(data))

    def convert(self) -> None:
        """执行转换"""
        print(f"开始转换: {self.input_file}")
        
        # 读取JSON文件
        try:
            with open(self.input_file, 'r', encoding='utf-8') as f:
                json_data = json.load(f)
        except FileNotFoundError:
            print(f"错误: 找不到文件 {self.input_file}")
            return
        except json.JSONDecodeError as e:
            print(f"错误: JSON解析失败 - {e}")
            return
        except Exception as e:
            print(f"错误: 读取文件失败 - {e}")
            return
        
        # 准备Lua数据结构
        lua_data = {
            'universal': {},
            'npcs': {}
        }
        
        # 处理通用喜好
        for level in self.universal_levels:
            if level in json_data:
                level_name = level.replace('Universal_', '').lower()
                lua_data['universal'][level_name] = self._parse_id_list(json_data[level])
        
        # 处理NPC个人喜好
        for key, value in json_data.items():
            if not key.startswith('Universal_'):
                lua_data['npcs'][key] = self._parse_npc_data(value)
        
        # 生成Lua文件内容
        lua_content = self._generate_lua_file(lua_data)
        
        # 写入Lua文件
        try:
            with open(self.output_file, 'w', encoding='utf-8') as f:
                f.write(lua_content)
            print(f"转换完成: {self.output_file}")
            print(f"- 通用喜好级别: {len(lua_data['universal'])}")
            print(f"- NPC数量: {len(lua_data['npcs'])}")
        except Exception as e:
            print(f"错误: 写入文件失败 - {e}")

    def _generate_lua_file(self, data: Dict[str, Any]) -> str:
        """生成完整的Lua文件内容"""
        header = '''--[[
星露谷物语 NPC礼物喜好数据 (中文版)
由脚本自动生成

数据结构说明:
- universal: 通用喜好,对所有NPC有效
  - love/like/neutral/dislike/hate: 各级别喜好的物品/类别ID数组
- npcs: 各NPC的个人喜好
  - [NPC名称]: NPC的个人喜好数据
    - love/like/neutral/dislike/hate: 各级别的对话和物品数据
      - dialogue: 对应级别的对话文本
      - items: 对应级别的物品/类别ID数组

注意: 
- 正数ID表示物品ID,负数ID表示类别ID
- 物品ID也可能是字符串形式(例如英文原名)
- 个人喜好会覆盖通用喜好
--]]

'''
        
        lua_table = self._convert_to_lua_table(data)
        
        return f'{header}local NPCGiftTastes = {lua_table}\n\nreturn NPCGiftTastes\n'


def main():
    """主函数"""
    # 请确保此路径是您系统中正确的路径
    input_file = r"C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Content (unpacked)\Data\NPCGiftTastes.zh-CN.json"
    
    # 检查输入文件是否存在
    if not os.path.exists(input_file):
        print(f"错误: 输入文件不存在: {input_file}")
        print("请检查 main() 函数中的 input_file 路径是否正确。")
        return
    
    # 创建转换器并执行转换
    converter = NPCGiftTastesConverter(input_file)
    converter.convert()
    
    print("\n脚本执行完毕!")


if __name__ == '__main__':
    main()
[ 查看 | 编辑 | 历史 | 刷新 ]上述文档的内容来自模块:GiftTastesNPC/data/doc
local NPCGiftTastes = {
	universal = {
		love = { 74, 446, 797, 373, 279 },
		like = { -2, -7, -26, -75, -80, 72, 395, 613, 634, 635, 636, 637, 638, 724, 459, 873, 394, 166 },
		neutral = { 194, 216, 262, 304, 815, "book_item" },
		dislike = {
			-4,
			-8,
			-12,
			-15,
			-16,
			-19,
			-22,
			-24,
			-25,
			-28,
			-74,
			78,
			169,
			246,
			247,
			305,
			309,
			310,
			311,
			403,
			419,
			423,
			535,
			536,
			537,
			725,
			726,
			749,
			271,
			"Book_PriceCatalogue",
			"category_trinket",
		},
		hate = {
			0,
			-20,
			-21,
			92,
			110,
			111,
			112,
			142,
			152,
			153,
			157,
			178,
			105,
			168,
			170,
			171,
			172,
			374,
			376,
			378,
			380,
			397,
			420,
			684,
			721,
			766,
			767,
			772,
			203,
			308,
			265,
			909,
			910,
		},
	},
	npcs = {
		Robin = {
			love = {
				dialogue = "这是给我的吗?哇哦,我爱死它了!!",
				items = { 224, 426, 636, "Book_Woodcutting" },
			},
			like = { dialogue = "谢谢!我很喜欢!", items = { -6, -79, 424, 709, "SkillBook_2" } },
			dislike = { dialogue = "呃……为什么给我这个?", items = { 16, 330 } },
			hate = { dialogue = "怎么回事……?这礼物太糟糕了!", items = {} },
			neutral = { dialogue = "谢谢。这个我也许用得着。", items = {} },
		},
		Demetrius = {
			love = { dialogue = "你把这个送给我?太棒了!", items = { 207, 232, 233, 400 } },
			like = { dialogue = "非常感谢!这个标本很有意思。", items = { -5, -79, 422, 107 } },
			dislike = { dialogue = "……这是什么?", items = { 80, 330 } },
			hate = { dialogue = "这个真恶心。", items = {} },
			neutral = { dialogue = "你想得真周到。", items = { -4 } },
		},
		Maru = {
			love = {
				dialogue = "那个是……?哇哦,@!太棒了!",
				items = { 72, 197, 190, 215, 222, 243, 336, 337, 400, 787, 910, 122 },
			},
			like = {
				dialogue = "真是份大礼!非常感谢!",
				items = { -260, 62, 64, 66, 68, 70, 334, 335, 725, 726, 909, "edible_mushroom" },
			},
			dislike = {
				dialogue = "噢!这是给我的?我要把它放在哪儿呢……",
				items = { -4, 330, 414, 410, 404, 724 },
			},
			hate = { dialogue = "呸!你觉得我会喜欢这个?", items = { 340, 342, 430, 416 } },
			neutral = { dialogue = "麻烦你了。", items = {} },
		},
		Sebastian = {
			love = {
				dialogue = "我真的很喜欢这东西。你怎么会知道的?",
				items = { 84, 227, 236, 575, 305, "FrogEgg" },
			},
			like = { dialogue = "谢谢,我喜欢这个。", items = { 267, 614, 276, "Book_Void", "SkillBook_4" } },
			dislike = { dialogue = "……?", items = { -81, -80 } },
			hate = { dialogue = "……我讨厌这个。", items = { -5, 459, 195, 201, 240, 330, -26, 873 } },
			neutral = { dialogue = "……谢谢。", items = { -4 } },
		},
		Linus = {
			love = {
				dialogue = "这份礼物真是太棒了!我这一天因为你变得格外特别。",
				items = { 88, 90, 234, 242, 280, "Book_Trash" },
			},
			like = { dialogue = "这礼物真不错。非常感谢!", items = { -5, -6, -79, -81 } },
			dislike = { dialogue = "唔……这个对我来说没什么用。", items = { -2, 330, 166 } },
			hate = {
				dialogue = "你为什么要给我这个?我住在帐篷里所以你觉得我喜欢垃圾吗?真差劲。",
				items = {},
			},
			neutral = { dialogue = "礼物?真好啊。", items = { 774, -4, 142 } },
		},
		Pierre = {
			love = { dialogue = "我最喜欢这个了!非常感谢!", items = { 202, "Book_PriceCatalogue" } },
			like = {
				dialogue = "你人真好。我喜欢这个。",
				items = { -5, -6, -7, 18, 22, 402, 418, 259, 227 },
			},
			dislike = { dialogue = "这可不是我的最爱……", items = { -2, -81, 330 } },
			hate = { dialogue = "拜托,再也别把这个带给我了。", items = { 167, -4, 199, 270, 229, 248 } },
			neutral = { dialogue = "礼物?谢谢!", items = {} },
		},
		Caroline = {
			love = {
				dialogue = "你把这个送给我?我开心得不知道说什么了。",
				items = { 213, 614, 593, 907 },
			},
			like = { dialogue = "噢,天哪!你真的送给我?", items = { -7, 18, 815, 402, 418, 16 } },
			dislike = { dialogue = "不,不,不……", items = { -81, 330, 300, 306, 307 } },
			hate = { dialogue = "这完全是垃圾。我感觉被侮辱了。", items = { 80, 296 } },
			neutral = { dialogue = "噢,这个不错。谢谢。", items = {} },
		},
		Abigail = {
			love = {
				dialogue = "我真的很喜欢这个!你是最棒的,@!",
				items = { 66, 128, 220, 226, 276, 611, 904, "Book_Void" },
			},
			like = {
				dialogue = "嘿,你怎么知道我饿了的?这个看起来好好吃!",
				items = { 119, 109, "SkillBook_4", "BasiliskPaw" },
			},
			dislike = { dialogue = "我能用这个干嘛?", items = { -5, -75, -79, 16, 245, 246 } },
			hate = { dialogue = "你在想什么?真差劲!", items = { 330 } },
			neutral = { dialogue = "你给我带了礼物?谢谢你啊。", items = {} },
		},
		Alex = {
			love = { dialogue = "嘿,真棒!我超爱这个!", items = { 201, 212, "Book_Defense" } },
			like = { dialogue = "这东西好酷!谢谢你啊。", items = { -5, 403, 107, "ParrotEgg" } },
			dislike = { dialogue = "呃……好的。谢谢你了。", items = { 16, 330, "book_item" } },
			hate = { dialogue = "你认真的吗?这是垃圾。", items = { 80 } },
			neutral = { dialogue = "谢谢!", items = { "FrogEgg" } },
		},
		George = {
			love = { dialogue = "这是我最喜欢的东西!谢谢。", items = { 20, 205 } },
			like = { dialogue = "谢谢你啊。", items = { 18, 195, 199, 200, 214, 219, 223, 231, 233 } },
			dislike = { dialogue = "真是个糟糕的礼物。", items = { -80, 16 } },
			hate = { dialogue = "这是我见过最烂的礼物了。多谢。", items = { 22, 80, 330 } },
			neutral = { dialogue = "礼物?唔……#$e#你想要什么回礼吗?", items = {} },
		},
		Evelyn = {
			love = {
				dialogue = "*喘气*……这真是了不起的礼物!$u#$e#你可真会逗老太太开心。",
				items = { 72, 220, 239, 284, 591, 595, "Raisins" },
			},
			like = {
				dialogue = "哎呀,它看上去棒极了!你人真好。",
				items = { -6, 18, 402, 418, 170, "forage_item_beach" },
			},
			dislike = { dialogue = "呃,我该把它放在哪儿呢?", items = { 16, 80 } },
			hate = {
				dialogue = "……它的味道好难闻。",
				items = { 225, 226, 227, 228, 219, 396, 248, 296, -4, 330 },
			},
			neutral = { dialogue = "真好啊。谢谢你,亲爱的。", items = {} },
		},
		Lewis = {
			love = { dialogue = "哇哦,这是我的最爱!非常感谢!", items = { 200, 208, 235, 614, 260 } },
			like = {
				dialogue = "谢谢,这个好棒!",
				items = { -80, 24, 88, 90, 192, 258, 264, 272, 274, 278, 258 },
			},
			dislike = { dialogue = "好吧,我想心意到了就行了……", items = { -6, 16, 330 } },
			hate = { dialogue = "这让我觉得恶心。多可怕的礼物啊。", items = { 80 } },
			neutral = { dialogue = "你真是太好了。感谢啊。", items = {} },
		},
		Clint = {
			love = {
				dialogue = "没错!我一直在找的就是这个!",
				items = { 60, 62, 64, 66, 68, 70, 336, 337, 605, 649, 749 },
			},
			like = { dialogue = "有趣的礼物。谢谢!", items = { 334, 335, "SkillBook_3" } },
			dislike = { dialogue = "*唉*……", items = { -80, 16, 80 } },
			hate = { dialogue = "这让我很失望。", items = {} },
			neutral = { dialogue = "谢谢你啊。", items = { -15 } },
		},
		Penny = {
			love = {
				dialogue = "非常感谢!我太喜欢这个了!",
				items = { 60, 376, 651, 72, 164, 218, 230, 244, 254, "book_item" },
			},
			like = { dialogue = "非常感谢!这看起来很特别。", items = { -6, 20, 22, "ancient_item" } },
			dislike = {
				dialogue = "呃,给我的?……谢谢。",
				items = { -4, 80, 330, 456, 457, 444, 440, 422, 420 },
			},
			hate = {
				dialogue = "啊……抱歉,但是我真的很讨厌这个。",
				items = { 446, 346, 348, 303, 304, 398, 459, 873 },
			},
			neutral = { dialogue = "谢谢,这看起来不错。", items = {} },
		},
		Pam = {
			love = {
				dialogue = "嘿,嘿!真是太棒了!万分感谢,孩子。",
				items = { 24, 90, 199, 208, 303, 346, 459, 873 },
			},
			like = {
				dialogue = "这次你做的很好,孩子。谢谢!",
				items = { -6, -75, -79, 18, 227, 228, 231, 232, 233, 234, 235, 236, 238, 402, 418 },
			},
			dislike = { dialogue = "这不是我想要的。", items = { -5, 16, 80, 330 } },
			hate = {
				dialogue = "这样真的很恶劣。$u#$e#(这是什么恶作剧吗?)",
				items = { 149, 151 },
			},
			neutral = { dialogue = "谢谢,孩子。", items = { -4, 167 } },
		},
		Emily = {
			love = {
				dialogue = "这礼物妙极了!太感谢你了。",
				items = { 60, 62, 64, 66, 68, 70, 241, 428, 440, "ParrotEgg" },
			},
			like = {
				dialogue = "非常感谢!这礼物让我感受到了正能量。",
				items = { 18, 82, 84, 86, 196, 200, 207, 230, 235, 402, 418 },
			},
			dislike = { dialogue = "……抱歉,@。我不喜欢这个。", items = { 78, 232, 233, 225, 226 } },
			hate = { dialogue = "这礼物有着强烈的负能量。我受不了。", items = { 212, 213, 227, 228 } },
			neutral = { dialogue = "谢谢!", items = {} },
		},
		Haley = {
			love = { dialogue = "天哪,这是我的最爱!!", items = { 221, 421, 610, 88 } },
			like = {
				dialogue = "*喘气*……给我的?非常感谢!",
				items = { 18, 60, 62, 64, 70, 88, 222, 223, 232, 233, 234, 402, 418 },
			},
			dislike = { dialogue = "呃……真是件蠢礼物。", items = { -5, -6, -75, -79, -81, 80, -27 } },
			hate = { dialogue = "恶心!", items = { -4, 16, 330, 74 } },
			neutral = { dialogue = "谢谢。我喜欢礼物。", items = {} },
		},
		Jas = {
			love = {
				dialogue = "*惊喜*……哇哦!非常感谢!$h",
				items = { 221, 595, 604, "doll_item", "toy_item", "FairyBox" },
			},
			like = {
				dialogue = "我爱礼物!非常感谢!",
				items = { 18, 60, 64, 70, 88, 232, 233, 234, 222, 223, 340, 344, 402, 418, 903, -6 },
			},
			dislike = { dialogue = "这是礼物吗?噢!$s", items = { -5, -81, -75, -79, 80 } },
			hate = { dialogue = "呕。好恶心。$s", items = { 253, 395, 459, -26, 16, 330, 873 } },
			neutral = { dialogue = "非常感谢!", items = {} },
		},
		Vincent = {
			love = {
				dialogue = "哇哦,太感谢你了!好极了!",
				items = { 221, 398, 612, 721, 903, "FrogEgg" },
			},
			like = {
				dialogue = "给我的?哇哦,谢谢!",
				items = { 18, 60, 64, 70, 88, 232, 233, 234, 222, 223, 340, 344, 402, 418, -6 },
			},
			dislike = { dialogue = "这个没什么意思……$s", items = { -5, -75, -79, -81, 80 } },
			hate = { dialogue = "呃,这是什么?$s", items = { 253, 395, 459, -26, 16, 330, 873 } },
			neutral = { dialogue = "谢谢!", items = {} },
		},
		Jodi = {
			love = {
				dialogue = "噢,你真是个甜心!我太喜欢这个了!",
				items = { 72, 200, 211, 214, 220, 222, 225, 231 },
			},
			like = {
				dialogue = "非常感谢!我的一天都因为它变得特别了。",
				items = { -5, -6, -79, 18, 402, 418 },
			},
			dislike = { dialogue = "嗯,我想我可以用它做堆肥……", items = { -81, 80, 248, 330 } },
			hate = { dialogue = "*呸*……我讨厌这个……", items = { 18, 22, 396 } },
			neutral = { dialogue = "你真是太好了!谢谢你啊。", items = {} },
		},
		Kent = {
			love = {
				dialogue = "噢……!我小时候妈妈经常给我这个。这让我回想起那段美好的时光。谢谢。",
				items = { 607, 649 },
			},
			like = {
				dialogue = "嘿,这真是个不错的礼物。谢谢你啊。",
				items = { -5, -79, 18, 402, 418, "Book_Bombs" },
			},
			dislike = {
				dialogue = "啊……啊……这是个……这到底是什么?嗯……唔……",
				items = { 80, 330, 416, 873 },
			},
			hate = {
				dialogue = "这个……在戈特洛集中营他们给过我这个。我一直试图忘了这件事。*发抖*",
				items = { -6, 227, 229, 456 },
			},
			neutral = { dialogue = "你人真好。家里人会喜欢的。", items = {} },
		},
		Sam = {
			love = { dialogue = "噢,太好了!这绝对是我的最爱!", items = { 90, 206, 562, 731 } },
			like = {
				dialogue = "谢谢!我真的很喜欢。",
				items = { 167, 210, 213, 220, 223, 224, 228, 232, 233, 239, -5 },
			},
			dislike = { dialogue = "嗯……这……有点意思。", items = { -81, 80, 152, 330, -75 } },
			hate = { dialogue = "你是故意的,对吗?", items = { 306, 307, 342, -15 } },
			neutral = { dialogue = "你给我带了这个?谢谢!", items = {} },
		},
		Leah = {
			love = {
				dialogue = "噢!这正是我想要的!非常感谢!",
				items = { 196, 200, 348, 606, 651, 426, 430 },
			},
			like = {
				dialogue = "这礼物真不错!非常感谢!",
				items = { -5, -6, -79, -81, 18, 402, 169, 406, 408, 418, 86 },
			},
			dislike = {
				dialogue = "唔……我想每个人口味不一样。",
				items = { -2, 152, 330, 221, 223, 229, 232, 233, 241, 209, 194 },
			},
			hate = { dialogue = "真是个糟糕的礼物,对吧?", items = { 305, 211, 210, 206, 216 } },
			neutral = { dialogue = "谢谢。", items = {} },
		},
		Shane = {
			love = {
				dialogue = "哇哦,@!你怎么知道我最喜欢这个的?",
				items = { 206, 215, 260, 346 },
			},
			like = { dialogue = "真是太棒了!谢谢!", items = { -5, -79, 303 } },
			dislike = { dialogue = "我才不喜欢这个。", items = { -81, 152, 330 } },
			hate = { dialogue = "我才不喜欢这个。", items = { 80, 342 } },
			neutral = { dialogue = "噢,你给我带了东西?谢谢!", items = { 203 } },
		},
		Marnie = {
			love = {
				dialogue = "真是一份好到令人难以置信的礼物!谢谢。",
				items = { 72, 221, 240, 608 },
			},
			like = { dialogue = "非常感谢!", items = { -5, -6, 402, 418, "SkillBook_0" } },
			dislike = { dialogue = "噢。我想我会收下它的。", items = { 16, 152 } },
			hate = { dialogue = "这东西一文不值。我搞不懂你怎么想的。", items = { 330 } },
			neutral = { dialogue = "非常感谢!这看起来不错。", items = {} },
		},
		Elliott = {
			love = { dialogue = "@,好漂亮的礼物!非常感谢!", items = { 715, 732, 218, 444, 637, 814 } },
			like = {
				dialogue = "这是给我的吗?棒呆了!",
				items = { 727, 728, -79, 60, 80, 82, 84, 149, 151, 346, 348, 728, "book_item" },
			},
			dislike = { dialogue = "唔……我不太喜欢这个。", items = { 16, 206, 330, -79, -81, -6 } },
			hate = {
				dialogue = "这东西让我感觉很糟糕。我只能扔掉它了。",
				items = { 80, 154, 300, 296, 155 },
			},
			neutral = { dialogue = "噢,礼物!非常感谢!", items = { -4, "forage_item_beach" } },
		},
		Gus = {
			love = {
				dialogue = "你把这个送给我?我开心得不知道说什么了。",
				items = { 72, 213, 635, 729, 907 },
			},
			like = { dialogue = "噢,天哪!你真的送给我?", items = { 348, 303, -7, 18, 430 } },
			dislike = { dialogue = "不,不,不……", items = { 16, 330 } },
			hate = { dialogue = "这完全是垃圾。你冒犯到我了。", items = { 80, 167, 648 } },
			neutral = { dialogue = "噢,这个不错。谢谢。", items = {} },
		},
		Dwarf = {
			love = {
				dialogue = "嘿,我太喜欢这个了。你可以在矿洞里找到好东西。",
				items = { 554, 60, 62, 64, 66, 68, 70, 749, 162 },
			},
			like = {
				dialogue = "啊,这让我想起了家。",
				items = { 78, 82, 84, 86, 96, 97, 98, 99, 121, 122 },
			},
			dislike = { dialogue = "唔……这就是人类喜欢的东西吗?", items = { -5, 16, -81, 330 } },
			hate = { dialogue = "我才不在乎你是什么物种。这就是一文不值的垃圾。", items = {} },
			neutral = { dialogue = "礼物!谢谢。", items = { -6, -28 } },
		},
		Wizard = {
			love = {
				dialogue = "啊,这里面充满了强大的奥术能量。这会给我的研究带来巨大的帮助。非常感谢!",
				items = { 155, 422, 769, 768, "Book_Mystery" },
			},
			like = {
				dialogue = "非常感谢。这东西有一些很有趣的属性。",
				items = { -12, 72, 82, 84, 337, "category_trinket" },
			},
			dislike = {
				dialogue = "这个?……我想我可以把它投入火里,然后看看会发生什么。",
				items = { -5, -6, -81, 16, 330, 766 },
			},
			hate = {
				dialogue = "呃……这些东西很普通。请你以后不要再用它们打扰我。",
				items = {},
			},
			neutral = { dialogue = "谢谢。我想这会很有用的。", items = {} },
		},
		Harvey = {
			love = {
				dialogue = "这是为我准备的吗?这是我最喜欢的东西!就好像你和我有心灵感应一样。",
				items = { 348, 237, 432, 395, 342 },
			},
			like = {
				dialogue = "真是个不错的礼物。非常感谢!",
				items = { -81, -79, -7, 402, 614, 418, 422, 436, 438, 442, 444, 422 },
			},
			dislike = {
				dialogue = "唔……你确定这个健康?",
				items = { -4, 424, 426, 330, 233, 232, 238, 234, 223, 222, 221, 220, 216, 211, 210, 208, 206, 205 },
			},
			hate = { dialogue = "……我想我对它过敏。", items = { 296, 245, 397, 396, 394, 393, 392 } },
			neutral = { dialogue = "谢谢你啊。你人真好。", items = {} },
		},
		Sandy = {
			love = {
				dialogue = "噢!我真的超喜欢收到来自镇里的礼物。我太开心了!~",
				items = { 18, 402, 418, 905 },
			},
			like = { dialogue = "看起来很棒。太谢谢啦!", items = { -75, -79, 88, 428, 436, 438, 440 } },
			dislike = { dialogue = "噢!嗯。谢谢你了。", items = { -4, 330 } },
			hate = { dialogue = "*吸气*……这是什么?", items = {} },
			neutral = { dialogue = "这是给我的吗?非常感谢!", items = {} },
		},
		Willy = {
			love = {
				dialogue = "真是太棒了!如果我的老爹还活着,看到这个他会抓狂的。",
				items = { 72, 143, 149, 154, 276, 337, 698, 459, 336, "Book_Crabbing", "Book_Roe" },
			},
			like = {
				dialogue = "这看起来很不错。非常感谢!",
				items = {
					66,
					340,
					699,
					707,
					198,
					202,
					209,
					212,
					213,
					214,
					219,
					225,
					727,
					730,
					728,
					732,
					265,
					395,
					729,
					"SkillBook_1",
				},
			},
			dislike = { dialogue = "嗯……你喜欢这种东西?哈", items = { -7, -81, 330 } },
			hate = { dialogue = "……*吸气*……我想我可以把它扔到鱼饵桶里。", items = {} },
			neutral = { dialogue = "一个礼物!谢谢你啊。", items = { -4, 227, 228, 242 } },
		},
		Krobus = {
			love = {
				dialogue = "这真是份惊艳的礼物。收到这个东西,在我的族里可以说是很荣幸的事情。",
				items = { 72, 16, 276, 337, 305, 308, 879, "Book_Void" },
			},
			like = { dialogue = "非常感谢你。", items = { 66, 265, 336, 340, 203 } },
			dislike = { dialogue = "人类的口味……还真是有趣。", items = { -7, -81, 330 } },
			hate = { dialogue = "噢!嗯。我会收下的。", items = {} },
			neutral = { dialogue = "谢谢。", items = {} },
		},
		Leo = {
			love = {
				dialogue = "我超喜欢的。我要把它放进窝里。",
				items = { 444, 289, 834, 906, "ParrotEgg" },
			},
			like = { dialogue = "真的是给我的吗?太棒了……", items = { 852, 396, 392, 394, 397, 905 } },
			dislike = {
				dialogue = "啊……不知道这个我能不能消化……",
				items = { -7, -81, 330, 303, 459, 342, 346, 348 },
			},
			hate = {
				dialogue = "(嗅嗅)……为什么要给我这个?你想让我帮你把它埋起来吗?",
				items = { 257, 253, 247, 271, 283, 304, 303, 346, 873, 348, 459, 167 },
			},
			neutral = { dialogue = "我接受你的礼物。", items = { -4, 395 } },
		},
	},
}
return NPCGiftTastes