全站通知:

模块:Dialogue/data/accept birthday gift

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

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

import os
import json
from pathlib import Path

def load_fallback_dialogues():
    strings_file = Path(r"\Content (unpacked)\Strings\StringsFromCSFiles.zh-CN.json")
    
    fallback_dialogues = {}
    
    if strings_file.exists():
        try:
            with open(strings_file, 'r', encoding='utf-8') as f:
                strings_data = json.load(f)
            
            keys = [
                "NPC.cs.4274", "NPC.cs.4275", "NPC.cs.4276", "NPC.cs.4277",
                "NPC.cs.4278", "NPC.cs.4279", "NPC.cs.4280", "NPC.cs.4281"
            ]
            
            for key in keys:
                if key in strings_data:
                    fallback_dialogues[key] = strings_data[key]
                    
        except Exception as e:
            print(f"加载 StringsFromCSFiles 时出错: {e}")
    
    return fallback_dialogues

def process_stardew_birthday_dialogue():
    dialogue_dir = Path(r"\Content (unpacked)\Characters\Dialogue")
    
    if not dialogue_dir.exists():
        return
    
    all_birthday_gifts = {}
    
    for file_path in dialogue_dir.glob("*.zh-CN.json"):
        character_name = file_path.stem.replace(".zh-CN", "")
        
        try:
            with open(file_path, 'r', encoding='utf-8') as f:
                dialogue_data = json.load(f)
            
            birthday_gift_data = {}
            for key, value in dialogue_data.items():
                if key.startswith("AcceptBirthdayGift_"):
                    birthday_gift_data[key] = value
            
            if birthday_gift_data:
                all_birthday_gifts[character_name] = birthday_gift_data
                
        except Exception as e:
            continue
    
    return all_birthday_gifts

def add_fallback_dialogues(birthday_data, fallback_dialogues):
    rude_dialogues = {
        "AcceptBirthdayGift_Positive_1": fallback_dialogues.get("NPC.cs.4276", ""),
        "AcceptBirthdayGift_Positive_2": fallback_dialogues.get("NPC.cs.4274", ""),
        "AcceptBirthdayGift_Negative": fallback_dialogues.get("NPC.cs.4278", ""),
        "AcceptBirthdayGift_Neutral": fallback_dialogues.get("NPC.cs.4280", "")
    }
    
    polite_dialogues = {
        "AcceptBirthdayGift_Positive_1": fallback_dialogues.get("NPC.cs.4277", ""),
        "AcceptBirthdayGift_Positive_2": fallback_dialogues.get("NPC.cs.4275", ""),
        "AcceptBirthdayGift_Negative": fallback_dialogues.get("NPC.cs.4279", ""),
        "AcceptBirthdayGift_Neutral": fallback_dialogues.get("NPC.cs.4281", "")
    }
    
    if rude_dialogues and any(rude_dialogues.values()): 
        birthday_data["_FallbackDialogues_Rude"] = rude_dialogues
    
    if polite_dialogues and any(polite_dialogues.values()):
        birthday_data["_FallbackDialogues_Polite"] = polite_dialogues
    
    return birthday_data

def generate_lua_table(data, output_file="Birthday_Dialogue_Data.lua"):
    def dict_to_lua(obj, indent=0):
        spaces = "  " * indent
        if isinstance(obj, dict):
            if not obj:
                return "{}"
            
            lines = ["{"]
            for key, value in obj.items():
                key_str = key if key.isidentifier() else f'["{key}"]'
                value_str = dict_to_lua(value, indent + 1)
                lines.append(f"{spaces}  {key_str} = {value_str},")
            
            lines.append(f"{spaces}}}")
            return "\n".join(lines)
        
        elif isinstance(obj, str):
            escaped = obj.replace("\\", "\\\\").replace('"', '\\"').replace("\n", "\\n")
            return f'"{escaped}"'
        
        elif isinstance(obj, (int, float)):
            return str(obj)
        
        elif isinstance(obj, bool):
            return "true" if obj else "false"
        
        elif obj is None:
            return "nil"
        
        else:
            return f'"{str(obj)}"'

    try:
        lua_content = f"""-- Stardew Valley AcceptBirthdayGift 对话数据
-- 生成时间: {__import__('datetime').datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
-- 总角色数: {len(data)}
-- 数据结构: [角色名][对话键] = "对话内容"
-- 特殊键 _FallbackDialogues_Rude 包含 Manner=2 (Rude) 的通用生日对话
-- 特殊键 _FallbackDialogues_Polite 包含 Manner≠2 (Polite) 的通用生日对话

local birthday_dialogue_data = {dict_to_lua(data)}

return birthday_dialogue_data
"""
        
        with open(output_file, 'w', encoding='utf-8') as f:
            f.write(lua_content)
        
        print(f"成功生成 Lua 文件: {Path(output_file).absolute()}")
        return True
        
    except Exception as e:
        print(f"生成 Lua 文件时出错: {e}")
        return False

def main():
    print("开始处理 Stardew Valley 生日对话数据...")
    
    fallback_dialogues = load_fallback_dialogues()
    result = process_stardew_birthday_dialogue()
    
    if result:
        result = add_fallback_dialogues(result, fallback_dialogues)
        
        if generate_lua_table(result):
            print("处理完成!")
            total_dialogues = sum(len(dialogues) for dialogues in result.values())
            print(f"总对话数: {total_dialogues}")
        else:
            print("生成 Lua 文件失败")
    else:
        print("没有提取到对话数据")

if __name__ == "__main__":
    main()
-- Stardew Valley AcceptBirthdayGift 对话数据
-- 生成时间: 2025-07-03 18:53:15
-- 总角色数: 22
-- 数据结构: [角色名][对话键] = "对话内容"
-- 特殊键 _FallbackDialogues_Rude 包含Manner=2(Rude)的通用生日对话
-- 特殊键 _FallbackDialogues_Polite 包含Manner≠2(Polite)的通用生日对话

local birthday_dialogue_data = {
  Abigail = {
    AcceptBirthdayGift_Positive = "欸,你还记得我的生日啊……谢谢你,@!我很喜欢这个!$h",
    AcceptBirthdayGift_Negative = "欸,你还记得我的生日啊……谢谢你,@!$h#$b#呃,这个……(闻了一下)……这是什么东西?$s",
  },
  Alex = {
    AcceptBirthdayGift_Loved = "太好了,我超喜欢这个东西……@,谢谢你送我生日礼物。",
    AcceptBirthdayGift_Negative = "什么鬼……?呃,不知道你老家那边觉得这个怎么样,对我来说这就是垃圾。$a",
  },
  Caroline = {
    AcceptBirthdayGift_Positive = "谢谢你,亲爱的,你能记得我生日真是太好了。$h",
    AcceptBirthdayGift_Negative = "呃……这个是……生日礼物?哦……好的,谢谢你过来。$a",
  },
  Clint = {
    AcceptBirthdayGift_Positive = "一般不会有人送我生日礼物。@,我很感动,谢谢你。",
    AcceptBirthdayGift_Negative = "是给我的生日礼物吗?这个,呃……很耐人寻味,不过你能记得,我还是很感激。",
  },
  Demetrius = {
    AcceptBirthdayGift_Positive = "是礼物!……送的时机恰到好处,今天可是我出生的纪念日,谢谢你!$h",
    AcceptBirthdayGift_Negative = "是礼物!……送的时机恰到好处,今天可是我出生的纪念日。$h#$b#我来拆开看看……$h#$b#……啊。$s",
  },
  Dwarf = {
    AcceptBirthdayGift_Positive = "啊!我在书上看到过这个传统……这个是“生日礼物”吧?唔,很有意思……",
    AcceptBirthdayGift_Negative = "啊!我在书上看到过这个传统……这个是“生日礼物”吧?#$b#所以送别人垃圾也是一个传统?",
  },
  Elliott = {
    AcceptBirthdayGift_Positive = "你还记得我的生日我很荣幸!谢谢你!$h",
    AcceptBirthdayGift_Negative = "又过了一年,又一根白发……这个礼物也许可以作为我衰老的纪念。$s",
  },
  Emily = {
    AcceptBirthdayGift_Positive = "啊,你还记得我的生日!@,谢谢你!你有心了。$h",
    AcceptBirthdayGift_Negative = "啊,你还记得我的生日!@,谢谢你!你——$h#$b#……(闻了两下)……什么味道?$s#$b#……这是什么东西……?$s",
  },
  Haley = {
    AcceptBirthdayGift_Loved = "嘶……这是送我的吗?哇,@,这是我收到的最棒的生日礼物!$h",
    AcceptBirthdayGift_Liked = "哇,你给我准备生日礼物了?我很喜欢!$h",
    AcceptBirthdayGift_Negative = "好恶心!我生日你就送我这个?你在搞什么东西!$a",
  },
  Harvey = {
    AcceptBirthdayGift_Positive = "啊!非常感谢!我没想到会有人知道今天是我的生日。$h",
    AcceptBirthdayGift_Negative = "啊!这个……呃,聊胜于无吧。我没想到会有人知道今天是我的生日。",
  },
  Jas = {
    AcceptBirthdayGift_Positive = "哇,是生日礼物!我很喜欢!$h",
    AcceptBirthdayGift_Negative = "是生日礼物吗?啊……我不喜欢。$s",
  },
  Krobus = {
    AcceptBirthdayGift_Positive = "哇,这是我孵化日的纪念礼物吗!谢谢你!$h",
    AcceptBirthdayGift_Negative = "啊……你们说的“生日礼物”就是这种东西吗?我不是很懂人类……$s",
  },
  Leah = {
    AcceptBirthdayGift_Positive = "哎,@,谢谢你!这个生日我过得很难忘。$h",
  },
  Lewis = {
    AcceptBirthdayGift_Positive = "嚯,你还记得我这个老镇长的生日啊。你有心了,这个礼物我很喜欢!$h",
    AcceptBirthdayGift_Negative = "嚯,你还记得我这个老镇长的生日啊……这是什么东西?$h#$b#呃……这个嘛,心意到了就行了。",
  },
  Maru = {
    AcceptBirthdayGift_Positive = "哇,这是给我的生日礼物吗?我很喜欢!谢谢你记得我的生日!$h",
    AcceptBirthdayGift_Negative = "哇,这是给我的生日礼物吗?我……呃,那什么,我没说错!还是谢谢你记得我的生日。",
  },
  Penny = {
    AcceptBirthdayGift_Loved = "啊!这是给我的吗?算是……生日礼物?$3#$b#(吸鼻子)……抱歉。$s#$b#我就是有点……没习惯别人对我这么好。#$b#……呃,我超喜欢这个,真的。非常感谢你。",
    AcceptBirthdayGift_Positive = "给我的生日礼物吗?你对我真好!我很喜欢。$h",
    AcceptBirthdayGift_Negative = "给我的生日礼物吗?你对我真好!我拆开看看……$h#$b#……怎么回事?!$12#$b#……唉,好吧。原来是个刻薄的玩笑。$s#$b#我真傻,我早该明白的……$s",
  },
  Sam = {
    AcceptBirthdayGift_Positive = "哦哦哦哦!你还记得啊!这就对了嘛!$h",
    AcceptBirthdayGift_Negative = "哦哦哦哦!你还记——$h#$b#……(闻了两下)……这是什么怪味……?$8#$b#……啊。$5",
  },
  Sebastian = {
    AcceptBirthdayGift_Positive = "哇,真的吗?没想到你会给我这个,不过看起来很不错,谢谢你。$h",
    AcceptBirthdayGift_Negative = "呃……行吧,你的心意我领了。",
  },
  Shane = {
    AcceptBirthdayGift_Loved = "啊,今天是我生日吗?我都快忘了呢。#$b#我真的很喜欢这个。谢谢你。$h",
    AcceptBirthdayGift_Liked = "啊,今天是我生日吗?对哦……我差点忘了。谢谢你。",
  },
  Vincent = {
    AcceptBirthdayGift_Positive = "是给我的生日礼物吗?我能现在就拆开吗?#$b#哇!我正好想要这个!好耶!$h",
    AcceptBirthdayGift_Negative = "是生日礼物吗?啊……好像没什么意思。$s",
  },
  _FallbackDialogues_Rude = {
    AcceptBirthdayGift_Positive_1 = "今天是我的生日吗?嗯,看来是这样呢。谢谢。挺不错的。$h/今天是我的生日吗?嗯,看来是这样呢。谢谢。挺不错的。$h",
    AcceptBirthdayGift_Positive_2 = "你记得我的生日?我真是受宠若惊啊,谢谢。$h",
    AcceptBirthdayGift_Negative = "今天我生日,你居然送我这个?你是在开玩笑吗?$s/今天我生日,你居然送我这个?是在开玩笑吗?$s",
    AcceptBirthdayGift_Neutral = "给我的生日礼物?谢谢。",
  },
  _FallbackDialogues_Polite = {
    AcceptBirthdayGift_Positive_1 = "你记得我的生日!谢谢你。你真是太贴心了。$h",
    AcceptBirthdayGift_Positive_2 = "生日礼物?你真有心!我很喜欢这件礼物。$h",
    AcceptBirthdayGift_Negative = "噢!是给我的生日礼物吗?……谢谢。$s/噢!是给我的生日礼物吗?……谢谢。$s",
    AcceptBirthdayGift_Neutral = "噢,一个生日礼物!谢谢。/噢,一个生日礼物!谢谢。",
  },
}

return birthday_dialogue_data