打开主菜单
首页
随机
登录
设置
关于Stardew Valley Wiki
免责声明
Stardew Valley Wiki
搜索
查看“模组:对话”的源代码
←
模组:对话
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
← [[使用模组:目录|目录]] 这个页面解释了游戏如何存储对话文本,它的格式,以及游戏如何解析它。它将会是一个提供给模组制造者的高级指南。 ==数据== 这些对话文本存储在四组文件中。 ===角色-特殊对话=== <tt>Characters\Dialogue\*.xnb</tt> 包含了大部分角色对话里 (一个文件夹对应一个角色). 游戏将从下面的一部分内容中选择对话,依照这里排列好的指令顺序来读取对话。<br /><small>*指越往下的对话格式,读取优先度会比上面的对话还要低。*</small> ====特殊对话==== 以下是一些针对特定情况的预设键(Key): *请注意是使用英文,中文只是方便大家理解* {| class="wikitable" |- ! 密钥格式(key format) ! 描述(description) |- | <tt>邀请跳舞拒绝<br />danceRejection</tt> | 用来显示邀请NPC跳舞[[花舞节]]时被拒绝的对话。(如果是在多人联机,已被其他玩家邀请且同意的NPC会使用其他对话来拒绝玩家。*不过大部分自制NPC是没有做出这个对话*) |- | <tt>离婚<br />divorced</tt> | 和NPC离婚之后会触发的对话。 |- | <tt>{{t|地点}}_入口<br />{{t|location}}_Entry</tt> | 玩家在指定的地方{{t|location}}从入口进来有50%的几率让你的NPC说特定的话,这个对话可以使用多个对话,只需使用 <code>/</code> 隔开对话与对话;游戏会随机读取其中对话。<br /><small>例子: <tt>SeedShop_Entry: "嗨,皮埃尔!/现在,我需要的是.../啊!看起来真不错!/今晚准备做我的特制酱料!/皮埃尔!今天的新品是什么?/皮埃尔!今天要一起出门玩吗?"</tt></small> |- | <tt>等会再来吧<br />ComeBackLater<br />打呼噜<br />Snoring</tt> | *一般NPC不需要,所以可以跳过这段*<br />当你还未达成布告栏上的击杀怪物的任务,[[吉尔]]就会触发这些对话。 <tt>ComeBackLater</tt> 只会显示一次,后续的对话就会触发<tt>Snoring</tt>。 |} ====地点对话==== 依照顺序,除了上面的对话以外,接下来将会依照顺序读取以下对话。 <br /><small>*指上面四个<tt>danceRejection</tt>、<tt>divorced</tt>、<tt>{{t|location}}_Entry</tt>、<tt>ComeBackLater</tt>和<tt>Snoring</tt>的优先度大于以下的对话*</small> 变化/变体: * 每一个特定键(Key)可以选择性的使用 [[#季节|季节]]来作出季节变化, 比如 <tt>springMountain_47_23</tt>,即春天在山上地图的某个坐标会触发此对话。 游戏会依照以下顺序来读取变体: <tt>{{t|season}}{{t|key}}</tt>, and <tt>{{t|key}}</tt>. 为了方便大家理解,下面没有列出这些变体。 {| class="wikitable" |- ! 密钥格式(key format) ! 描述(description) |- | <tt>{{t|地点}}_{{t|x轴坐标}}_{{t|y轴坐标}}</tt><br /><tt>{{t|location}}_{{t|x}}_{{t|y}}</tt> | 当NPC站在{{t|x}}, {{t|y}}的某个你所填充的地点,就会触发这个对话.<br /><small>例子: <tt>Mountain_47_23: "这里很安静,又有风可以吹,为什么我不能来这里?"</tt></small> |- | <tt>{{t|地点}}_{{t|星期几}}</tt><br /><tt>{{t|location}}_{{t|dayName}}</tt> | 当NPC在指定地点的指定一天[[#Days of week|星期几]].<br /><small>例子: <tt>Saloon_Fri: "星期五的酒吧总会很热闹,我不讨厌这样的气氛。"</tt></small> |- | <tt>{{t|地点}}{{t|好感}}</tt><br /><tt>{{t|location}}{{t|hearts}}</tt> | 当你和NPC的好感有指定{{t|hearts}}以上,将会触发这个对话。指定好感{{t|hearts}} 将会读取10,8,6,4,2这几个数值(不填任何数字则为0),优先度为10>8>6>4>2>0(除此之外的数值无法被读取,比如说1)<br /><small>例子: <tt>Saloon8: "欢迎光临,@。我很高兴今天也能看到你过来这里!酒吧的大门永远为你而开。*当然,酒吧永远都是中午12点开门。*"</tt></small> |- | <tt>{{t|地点}}</tt><br /><tt>{{t|location}}</tt> | 当NPC身处在指定地点,就会触发此对话。<br /><small>例子: <tt>Saloon: "呼哇~终于可以在酒吧尽情放松了~"</tt></small> |} ====雨天对话==== <tt>Characters\Dialogue\rainy.xnb</tt>文件里每一个NPC都有对应的'''一个'''对话。如果你的情况是:还未结婚或者离婚、当天是雨天、并且上述的对话条件没有达成,你将会有50%几率读取这个雨天对话。*由于是50%,所以你可能会触发平时的对话然后说出“今天天气真好”这种诡异的对话……* 雨天对话需要使用content的EditData来添加在游戏里,以下为麻薯君的例子: <source lang="json"> { "Action": "EditData", "Target": "Characters/Dialogue/rainy", "Entries": { "Mochi":"下雨啦!$1#$e#农作物不用浇水真是太棒了!$1#$b#不过我已经有了洒水器,所以无论是晴天雨天都没关系。#$e#所以你的洒水器都有了吗?$1" } }, { "Action": "EditData", "Target": "Characters/Dialogue/rainy", "Entries": { "Mochi":"下雨了你却没有避雨吗?#$b#你也是辛苦了。$8#$b#你过来我这里吧。#$b#着凉了可不好。$1" }, "When": { "Hearts:Mochi": "4, 5, 6, 7" } }, { "Action": "EditData", "Target": "Characters/Dialogue/rainy", "Entries": { "Mochi":"你看看你!#$b#不带伞还淋湿了全身上下。$6#$b#我帮你擦擦头发。$1#$b#%麻薯君拿出毛巾帮你擦干头发#$b#嗯,擦干了!$1#$e#喝点咖啡吧!$1[395]#$e#快喝吧!$1" }, "When": { "Hearts:Mochi": "8, 9, 10" } } </source> ====一般对话==== 除上面以外,游戏将选择使用以下其中一个关键格式的对话(按优先顺序来读取): # <tt>{{t|季节}}_{{t|密钥}}_inlaw_{{t|伴侣名字}}</tt> <tt>{{t|season}}_{{t|key}}_inlaw_{{t|spouseName}}</tt> # <tt>{{t|季节}}_{{t|密钥}}</tt> <tt>{{t|season}}_{{t|key}}</tt> # <tt>{{t|密钥}}_inlaw_{{t|伴侣名字}}</tt> <tt>{{t|key}}_inlaw_{{t|spouseName}}</tt> # <tt>{{t|密钥}}</tt> <tt>{{t|key}}</tt> 关于以上各个变体: <tt>{{t|season}}</tt>是指[[#季节Seasons|季节]] (比如说 <tt>spring_14</tt>); 如果玩家和对应NPC<tt>_inlaw_{{t|伴侣名字}}</tt> 结婚,这个对话将会不顾其他对话并先读取这个对话。(比如说 <tt>Sat_inlaw_Abigail</tt>,就是在星期六与伴侣“阿比盖尔”对话将触发此对话。); 以及 <tt>{{t|key}}</tt> 指的是以下密钥格式。 {| class="wikitable" |- ! 密钥格式(key format) ! 描述(description) |- | <tt>{{t|1到28日}}</tt><br /><tt>{{t|dayOfMonth}}</tt> | '''第一年'''的设定好的某一日会触发此对话。<br />'''注意: 这个第一年限定的对话和其他的密钥格式是不一样的,这点常常把模组制造者搞乱了。'''<br /><small>例子: <tt>10: "你昨晚有看那个体育频道吗?#$b#等会,你有电视吗……?"</tt></small> |- | <tt>{{t|1到28日}}_{{t|1或2年}}</tt><br /><tt>{{t|dayOfMonth}}_{{t|firstOrLaterYear}}</tt> | 根据你所填的[[#第一/第一以后的年份|1或2年]]触发指定日期的对话。填的是“1”的话,第一年以后(即第二、三年)不会再触发;“2”则第一年以后触发。<br /><small>例子: <tt>2_1: "我的丈夫肯特在国外工作。这也是为什么你没看到他在这里。#$b#我坚信只要我家肯特的旅途结束了,就会安全回家的!!#$e#需要什么东西吗?"</tt></small> |- | <tt>{{t|星期几}}{{t|几心}}_{{t|1或2年}}</tt><br /><tt>{{t|dayOfWeek}}{{t|hearts}}_{{t|firstOrLaterYear}}</tt> | 在[[#第一/第一以后的年份|1或2年]]的某一年,根据你所填的[[#星期里的某天/星期几Days of week|星期几]]并且你与NPC至少有{{t|hearts}}心好感将会触发此对话。指定好感{{t|hearts}} 将会读取10,8,6,4,2这几个数值(不填任何数字则为0),优先度为10>8>6>4>2>0(除此之外的数值无法被读取,比如说1)<br />'''Bug:''' 仅当一个等效的{{t|dayOfWeek}}{{t|hearts}}密钥也存在时才显示。<br /><small>例子: <tt>Thu2_2: "好吧,我爸回来了。你们见过了吗?#$b#我很高兴他能安然无恙地回来。"</tt></small> |- | <tt>{{t|星期几}}{{t|几心}}</tt><br /><tt>{{t|dayOfWeek}}{{t|hearts}}</tt> | 根据你所填的[[#星期里的某天/星期几Days of week|星期几]] 并且你与NPC至少有{{t|hearts}}心好感将会触发此对话。指定好感{{t|hearts}} 将会读取10,8,6,4,2这几个数值(不填任何数字则为0),优先度为10>8>6>4>2>0(除此之外的数值无法被读取,比如说1)<br /><small>例子: <tt>Sun4: "嘿,@.#$e#今天过得怎么样?"</tt></small> |- | <tt>{{t|星期几}}_{{t|1或2年}}</tt><br /><tt>{{t|dayOfWeek}}_{{t|firstOrLaterYear}}</tt> | 在[[#第一/第一以后的年份|1或2年]]的某一年,根据你所填的[[#星期里的某天/星期几Days of week|星期几]]将触发此对话。<br />'''Bug:'''只有当等效的{{t|dayOfWeek}}密钥存在时才显示。<br /><small>例子: <tt>Sat_1: "爸爸快要回来了!#$b#我希望爸爸能给我带些玩具回来。$u"</tt></small> |- | <tt>{{t|星期几}}</tt><br /><tt>{{t|dayOfWeek}}</tt> | 根据你所填的[[#星期里的某天/星期几Days of week|星期几]]将会触发此对话。<br /><small>例子: <tt>Mon: "嗨嗨!你正在休息吗?"</tt></small> |} ====备用方案==== 如果以上对话都不存在,那么游戏会从<tt>Strings\StringsFromCSFiles.xnb</tt>自动读取密钥为<tt>NPC.cs.4061</tt>的对话. (我去查了,结果是: "嗨。"……好吧,作者偷懒我懂。) 为了让大家方便,我这里就直接提供我个人整理过的一般对话模板,当天节日对话是需要通过CP的content载入+TMXL的节日站位搭配使用,以下为麻薯君(感谢贴吧@你的麻糬君丫*我谢我自己*)提供的模板: <source lang="json"> { //SPECIAL DIALOGUE "Introduction": "",//介绍 "danceRejection": "",//有人邀请或者好感没到的拒绝跳舞对话 "divorced": "",//分手之后的对话 "breakUp": "",//离婚之后的对话 "dumped_girls": "",//触发修罗场(女之后的对话 "secondChance_girls": "",修罗场7天后的原谅对话 "dumped_guys": "",//同上(男修罗场 "secondChance_guys": "",//同上(男修罗场 "stardrop_gift": "",//14心伴侣送星之果实对话 "give_flowersA": "",//送花的对话 "give_flowersB": "",//同上,为版本2 "give_pendant": "",//求婚 "rejectNPCA": "",//交往被拒绝 "rejectNPCB": "",//同上,为版本2 "reject_two_heartA": "",//同上,二心以上 "reject_two_heartB": "",//同上,二心以上,为版本2 "reject_four_heartA": "",//同上,四心以上 "reject_four_heartB": "",//同上,四心以上,为版本2 "engageA": "",//与别人订婚时求婚 "engageB": "",//同上,为版本2 "marriedA": "",//与别人结婚后求婚 "marriedB": "",//同上,为版本2 "refusal_knownA": "",不可攻略的角色被求婚的对话 "refusal_knownB": "",//同上,为版本2 "refusal_botherA": "",不可攻略的角色被求婚的对话(不要问我差别,我也不懂 "refusal_botherB": "",//同上,为版本2 "refusal_no_heartsA": "",不可攻略的角色被求婚的对话(为0心 "refusal_no_heartsB": "",//同上,为版本2 //节日对话 "spring_1": "",//新年 "spring_12":"",//蛋蛋节前一天 "Spring_23":"",//花舞节前一天 "summer_10":"",//宴会前一天 "summer_27":"",//月光水母前一天 "fall_15":"",//展览会前一天 "fall_26":"",//万灵节前一天 "winter_7":"",//冰雪节前一天 "winter_24":"",//冬日星节日前一天 //春季和一般对话 "Mon":"", "Mon2":"", "Mon4":"", "Mon6":"", "Mon8":"", "Mon10":"", "Tue":"", "Tue2":"", "Tue4":"", "Tue6":"", "Tue8":"", "Tue10":"", "Wed":"", "Wed2":"", "Wed4":"", "Wed6":"", "Wed8":"", "Wed10":"", "Thu":"", "Thu2":"", "Thu4":"", "Thu8":"", "Thu10":"", "Fri":"", "Fri2":"", "Fri4":"", "Fri6":"", "Fri8":"", "Fri10":"", "Sat":"", "Sat2":"", "Sat4":"", "Sat6":"", "Sat8":"", "Sat10":"", "Sun":"", "Sun2":"", "Sun4":"", "Sun6":"", "Sun8":"", "Sun10":"", //夏季对话~ "summer_Mon":"", "summer_Mon2":"", "summer_Mon4":"", "summer_Mon6":"", "summer_Mon8":"", "summer_Mon10":"", "summer_Tue":"", "summer_Tue2":"", "summer_Tue4":"", "summer_Tue6":"", "summer_Tue8":"", "summer_Tue10":"", "summer_Wed":"", "summer_Wed2":"", "summer_Wed4":"", "summer_Wed6":"", "summer_Wed8":"", "summer_Wed10":"", "summer_Thu":"", "summer_Thu2":"", "summer_Thu4":"", "summer_Thu6":"", "summer_Thu8":"", "summer_Thu10":"", "summer_Fri":"", "summer_Fri2":"", "summer_Fri4":"", "summer_Fri6":"", "summer_Fri8":"", "summer_Fri10":"", "summer_Sat":"", "summer_Sat2":"", "summer_Sat4":"", "summer_Sat6":"", "summer_Sat8":"", "summer_Sat10":"", "summer_Sun":"", "summer_Sun2":"", "summer_Sun4":"", "summer_Sun6":"", "summer_Sun8":"", "summer_Sun10":"", //秋季对话~ "fall_Mon":"", "fall_Mon2":"", "fall_Mon4":"", "fall_Mon6":"", "fall_Mon8":"*", "fall_Mon10":"", "fall_Tue":"", "fall_Tue2":"", "fall_Tue4":"", "fall_Tue6":"", "fall_Tue8":"", "fall_Tue10":"", "fall_Wed":"", "fall_Wed2":"", "fall_Wed4":"", "fall_Wed6":"", "fall_Wed8":"", "fall_Wed10":"", "fall_Thu":"", "fall_Thu2":"", "fall_Thu4":"", "fall_Thu6":"", "fall_Thu8":"", "fall_Thu10":"", "fall_Fri":"", "fall_Fri2":"", "fall_Fri4":"", "fall_Fri6":"", "fall_Fri8":"", "fall_Fri10":"", "fall_Sat":"", "fall_Sat2":"", "fall_Sat4":"", "fall_Sat6":"", "fall_Sat8":"", "fall_Sat10":"", "fall_Sun":"", "fall_Sun2":"", "fall_Sun4":"", "fall_Sun6":"", "fall_Sun8":"", "fall_Sun10":"", //冬季对话 "winter_Mon":"", "winter_Mon2":"", "winter_Mon4":"", "winter_Mon6":"", "winter_Mon8":"", "winter_Mon10":"", "winter_Tue":"", "winter_Tue2":"", "winter_Tue4":"", "winter_Tue6":"", "winter_Tue8":"", "winter_Tue10":"", "winter_Wed":"", "winter_Wed2":"", "winter_Wed4":"", "winter_Wed6":"", "winter_Wed8":"", "winter_Wed10":"", "winter_Thu":"", "winter_Thu2":"", "winter_Thu4":"", "winter_Thu6":"", "winter_Thu8":"", "winter_Thu10":"", "winter_Fri":"", "winter_Fri2":"", "winter_Fri4":"", "winter_Fri6":"", "winter_Fri8":"", "winter_Fri10":"", "winter_Sat":"", "winter_Sat2":"", "winter_Sat4":"", "winter_Sat6":"", "winter_Sat8":"", "winter_Sat10":"", "wintar_Sun":"", "winter_Sun2":"", "winter_Sun4":"", "winter_Sun6":"", "winter_Sun8":"", "winter_Sun10":"", } </source> ===婚后对话=== 在游戏文件里<tt>Characters\Dialogue\MarriageDialogue.xnb</tt>是放置所有NPC的婚后对话,每个NPC可以选择属于自己的对话文件,比如阿比盖尔的<tt>Characters\Dialogue\MarriageDialogueAbigail.xnb</tt>。当游戏查找对话时,它会使用NPC文件中的Key/对话(如果有这个格式的对话存在的话),否则会使用预设婚后对话或者默认对话(不过默认对话基本上都是空的)。 每一个对话里拥有的密钥格式来自于以下其中一个格式: {| class="wikitable" |- ! 密钥格式(key format) ! 描述(description) |- | <tt>{{t|季节}}_{{t|1到28日}}</tt><br /><tt>{{t|season}}_{{t|day}}</tt> | 根据你所填的季节{{t|season}}日子{{t|day}}将会触发此对话。<br /><small>例子: <tt>fall_1</tt>: "''这个气氛……我不会感觉错的,角落的蘑菇、散落的枯叶、橘色的南瓜……是只有在秋天才看得到的景色。就在今天,秋季降临了,我说的没错吧?亲爱的?''"</small> |- | <tt>露台_{{t|伴侣}}</tt><br /><tt>patio_{{t|spouse}}</tt> | 当你的伴侣在你出货箱右上的平台刷新时,就会触发此对话。*通常是在非雨天/非雪天会刷新。* |- | <tt>{{t|天气}}_{{t|白天或晚上}}_{{t|随机}}</tt><br /><tt>{{t|weather}}_{{t|dayOrNight}}_{{t|random}}</tt> | 婚后日常对话。{{t|weather}}可以填充<tt>Rainy</tt>或者<tt>Indoor</tt>,前者是下雨天的情况,后者是除雨天以外的天气。(虽然不知道为什么指令是Indoor“室内”,但指令就是这样……) {{t|dayOrNight}}可以填充<tt>Night</tt>或者<tt>Day</tt>,前者是游戏时间为'''下午6点以后'''会触发的对话,后者为'''下午6点以前'''触发。{{t|random}}可以填写的内容是0,1,2,3,4,所以你会有五个对话且随机触发。<br /><small>例子: <tt>Rainy_Night_3</tt>: "''每当夜幕降临,我很喜欢把家里的灯光调暗一点,然后好好地聆听那份寂静……$8''"</small> |- | <tt>好玩/快乐/有趣离去_{{t|伴侣名字}}</tt><br /><tt>funLeave_{{t|spouse}}</tt> | 未完成的指令,当你的伴侣在家里准备出门去鹈鹕镇逛逛时会触发的对话。(但是原文只是给出了TODO*task yet to be done*未完成的指令。) |- | <tt>工作离去_{{t|伴侣}}</tt><br /><tt>jobLeave_{{t|spouse}}</tt> | 未完成的指令,当你的伴侣在家里准备出门回到ta们的工作岗位时会触发的对话。(只限原版NPC即潘妮、玛鲁和哈维。不确定未来会不会更完善。) |- | <tt>好玩/快乐/有趣回家_{{t|伴侣名字}}</tt><br /><tt>funReturn_{{t|spouse}}</tt> | 当你的伴侣在下午一点之后回到家里但还未抵达ta们的目标坐标,会触发这个对话, 只限星期一触发 (给任何NPC)或者星期五(如果不是玛鲁/哈维/潘妮)。<br /><small>例子: <tt>funReturn_Abigail</tt>: "''嘿!今天你过得好吗?我过得很好哦。散步果然使人精神振奋呢。$h''"</small> |- | <tt>工作回家_{{t|伴侣}}</tt><br /><tt>jobReturn_{{t|spouse}}</tt> | 当你的伴侣在下午一点之后回到家里但还未抵达ta们的目标坐标,但只限于<tt>funReturn</tt>不被显示。<br /><small>例子: <tt>jobReturn_Penny</tt>: "''#$c .5#晚上好。我今天很好,感谢!那你过得怎么样?$h#$e#贾斯和文森特今天表现不太好。我还是很担心…''"</small> |- | <tt>{{t|季节}}_{{t|伴侣}}</tt><br /><tt>{{t|season}}_{{t|spouse}}</tt> | 当你和伴侣有达到9心以上的好感,将会有5%概率触发此对话。<br /><small>例子: <tt>fall_Abigail</tt>: "''我是不是闻到了你身上的南瓜味?或者事实是我在发白日梦……$h''"</small> |- | <tt>户外_{{t|伴侣}}</tt><br /><tt>Outdoor_{{t|spouse}}</tt> | 有20%的概率触发伴侣在家外面站着时会触发此对话。<br /><small>例子: <tt>Outdoor_Abigail</tt>: "''我就呆在这里,好吗?#$e#这里有好多稀奇古怪的昆虫和东西在!*咯咯笑*$h''"</small> |- | <tt>户外_{{t|随机}}</tt><br /><tt>Outdoor_{{t|random}}</tt> | 有80%的概率触发伴侣在家外面站着时会触发此对话。{{t|随机}}可以填写的内容是0,1,2,3,4,所以你会有五个对话且随机触发。<br /><small>例子: <tt>Outdoor_3</tt>: "''我们的地产包含了洞穴可真是太赞了!那是我梦寐以求的事情!$h''"</small> |- | <tt>伴侣房_{{t|伴侣}}</tt><br /><tt>spouseRoom_{{t|spouse}}</tt> | 当伴侣位于ta们的伴侣房时会触发的对话。<br /><small>例子: <tt>spouseRoom_Abigail</tt>: "''$c .5#我比你起得早,我就去喂了小大卫。它整个早晨都很兴奋呢。#$e#我希望你不介意豚鼠的味道。"''</small> |- | <tt>一个孩子_{{t|随机}}</tt><br /><tt>OneKid_{{t|random}}</tt> | 如果你有一个孩子,并且你的伴侣位于厨房,将会触发此对话。{{t|随机}}可以填写的内容是0,1,2,3,4,所以你会有五个对话且随机触发。<br /><small><tt>OneKid_1</tt>: "''我在想,%kid1会不会长大以后变成和你一样的农夫?''"</small> |- | <tt>两个孩子_{{t|随机}}</tt><br /><tt>TwoKids_{{t|random}}</tt> | 如果你有两个孩子,并且你的伴侣位于厨房,将会触发此对话。{{t|随机}}可以填写的内容是0,1,2,3,4,所以你会有五个对话且随机触发。<br /><small><tt>TwoKids_2</tt>: "''我梦到了关于%kid2长大之后变成了著名的怪物猎人。我甚至开始想着小小装备套装了。''"</small> |- | <tt>{{t|感情}}_{{t|随机}}</tt><br /><tt>{{t|affection}}_{{t|random}}</tt> | 当伴侣在家里并且是早上11点到下午6点时''或者''当天的对话并没有达成以上情况时,会触发此对话。{{t|感情}}随机的内容为当伴侣好感为9心以下,50%概率触发<tt>感情不和</tt><tt>Bad</tt> 或者 <tt>感情平淡</tt><tt>Neutral</tt>的对话; 10心以上50%概率触发<tt>感情美满</tt><tt>Good</tt>的对话或者11心以上75%概率触发<tt>感情美满</tt><tt>Good</tt>的对话;除此之外的概率将会触发<tt>感情平淡</tt><tt>Neutral</tt>的对话。{{t|随机}}可以填写的内容是0,1,2,3,4,5,6,7,8,9,所以你会有10个对话且随机触发。<br /><small>例子: <tt>Good_5</tt>: "''我只是在好好欣赏一下我的美人鱼吊坠……直到死亡,我会很自豪地让它陪伴我身边。$l''"</small> |} 为了让大家方便,我这里就直接提供我亲友整理过的婚后对话模板,以下为萌新(感谢贴吧@萌新不萌新-)提供的模板: <source lang="json"> { "Rainy_Day_0": "",//下雨天白天 "Rainy_Day_1": "", "Rainy_Day_2": "", "Rainy_Day_3": "", "Rainy_Day_4": "", "Rainy_Night_0": "",//下雨天晚上 "Rainy_Night_1": "", "Rainy_Night_2": "", "Rainy_Night_3": "", "Rainy_Night_4": "", "Indoor_Day_0": "",//室内白天 "Indoor_Day_1": "", "Indoor_Day_2": "", "Indoor_Day_3": "", "Indoor_Day_4": "", "Indoor_Night_0": "",//室内晚上 "Indoor_Night_1": "", "Indoor_Night_2": "", "Indoor_Night_3": "", "Indoor_Night_4": "", "Outdoor_0": "",//门口 "Outdoor_1": "", "Outdoor_2": "", "Outdoor_3": "", "Outdoor_4": "", "OneKid_0": "%kid1",//第一个孩子 "OneKid_1": "", "OneKid_2": "", "OneKid_3": "", "OneKid_4": "", "TwoKids_0": "%kid2",//第二个孩子 "TwoKids_1": "", "TwoKids_2": "", "TwoKids_3": "", "TwoKids_4": "", "Good_0": "",//高心几率对话 "Good_1": "", "Good_2": "", "Good_3": "", "Good_4": "", "Neutral_0": "", "Neutral_1": "", "Neutral_2": "", "Neutral_3": "", "Neutral_4": "", "Bad_0": ".",//低心几率触发 "Bad_1": "", "Bad_2": "", "Bad_3": "", "Bad_4": "", "spring_1": "",//每年春1对话 "spring_12": "",//复活节前一天对话 "spring_23": "",//花舞节前一天对话 "summer_1": "",//每年夏1对话 "summer_10": "",//夏威夷宴会前一天对话 "summer_28": "",//水母节当天对话 "fall_1": "",//每年秋1对话 "fall_15": "",//展览会前一天对话 "fall_26": "",//万灵节当天对话 "winter_1": "",//每年冬1对话 "winter_7": "",//冰雪节前一天对话 "winter_28": "",//当年最后一天对话,冬日星当天对话 "patio_Michael": "",//在外面天井的对话(Michael记得改为你自己的崽的名字) "spouseRoom_Michael": "",//在配偶房的对话(Michael记得改为你自己的崽的名字) } </source> ===事件文件=== <tt>Data\Events\*.xnb</tt>包含了事件脚本,事件里也有全部的对话。(看看 [[使用模组:事件数据]]). ===动画描述=== <tt>Data\animationDescriptions.xnb</tt>包含了简短的动画描述,以配合行程上所显示的动作。(这里我来说明一下,行程有两种方式可以显示对话/描述,一种是行程对话scheduledialogue,另外的就是动画描述animationDescriptions,如果你想要NPC在行程里有显示动画和对话,需要额外给animation加上描述才能同时拥有动画和对话,行程对话在动画时是无法显示的,这点请各位注意一下。) ===Strings from CS 文件=== <tt>Strings\StringsFromCSFiles.xnb</tt>包含了各种各样的预设对话。这个文件里有着预设好的对话、大部分NPC共同使用的对话(比如NPC会说ta们的XXX喜欢/讨厌什么东西)、硬核事件(比如婚礼的致辞)等等。 这个文件的条目格式为<tt>"<key>": "对话字符串"</tt> <tt>"<key>": "dialogue string"</tt>,它可以是任意的特殊标识符。这些键必须完全匹配游戏里所需要的键,但这些键只是游戏专属的特殊标识符— 即使这些键看起来就像<tt>{{t|file name}}.{{t|line number}}</tt>,这最初只是用于分配IDs的,并且这些IDs没有任何意义或者作用。(甚至它也不需要匹配当前的文件名或行号)。*说句一般人看得懂的话,其实就是StringsFromCSFiles这个文件里的对话全部都是无法被我们添加进入游戏代码里,最多只能通过某些小手段把dialogue string改成你想要的句子* ====NPC-specific通用对话==== *如果你使用的是上面对话模板的"give_flowersA"和"give_flowersB",你还需要额外去下载{{nexus mod|2544|Canon-Friendly Dialogue Expansion for All Friend-able Characters}}来运行这个对话,唯一缺点就是如果有其他NPC模组是没有这些对话,会陷入死循环。* 用点小聪明,你可以让每个NPC做出不同的反应,而不是使用常规的预设对话。打个比方,你可以使用CP模组{{nexus mod|1915|Content Patcher}}来改变<tt>NPC.cs.3962</tt> 和<tt>NPC.cs.3963</tt> (送花交往对话反应),与<tt>NPC.cs.3980</tt> (送吊坠求婚对话反应): <source lang="json"> { "Action": "EditData", "Target": "Strings/StringsFromCSFiles", "Entries": { "NPC.cs.3962": "$q 10001 give_flowersA#?!...#$r 10001 0 give_flowersA# [送出花束]", "NPC.cs.3963": "$q 10001 give_flowersB#?!...#$r 10001 0 give_flowersB# [送出花束]", "NPC.cs.3980": "$q 10001 give_pendant#?!...#$r 10001 0 give_pendant# 你愿意和我结婚吗?" } } </source> 以这个为例子,每一个NPC会从[[使用模组:对话数据#NPC-specific通用对话|角色对话]]文件里的<tt>give_flowersA</tt>, <tt>give_flowersB<打个比方/tt>, 和 <tt>give_pendant</tt> 读取对应的反应对话. (看看以下[[#格式|格式]]的信息可以了解更多的语法)记得要把全部可婚NPC都要加上,否则会有BUG。例子,你可以给海莉加上这个: <source lang="json"> { "Action": "EditData", "Target": "Characters/Dialogue/Haley", "Entries": { "give_flowersA": "噢,这花束真漂亮。$1#$b#...什么?你想要成为我的男朋友?$8^...什么?你想要成为我的女朋友?$8#$b#....我以为我们已经在一起了。$1", "give_flowersB": "哦哦哦,@! 我愿意成为你人生中的真命天子。$1", "give_pendant": ".....$8#$b#@,我不知道我现在该说什么……$8#$b#...$7#$b#好...我接受了...$4#$b#我等不及要告诉镇长这个消息了... 我想全部计划得花上3天就能准备好。$1" } } </source> 这个可以添加其他通用对话,你甚至可以通过已经回答问题的IDs来避免“送花束”的重复问答。*原文直译不太行,我来解释一下,使用$q指令的问答对话会有对应的ID,比如上面使用的是$q 10001(作为问题ID)和$r 10001(作为回答ID),回答后的回答ID会被游戏存档记录,所以也有可能会导致向其他NPC求婚时会出现BUG。总结一下就是,建议使用这个对话格式而不是上面有问答ID的* ==运算法== 从游戏里发现下列对话: # 事件对话从适当的事件命令中读取 (看看[[模组目录:事件数据]]). # 特定位置的对话从 <tt>StringsFromCSFiles {{t|location}}.cs</tt>读取。 # 其他角色对话文件将从角色-特定文件读取。 # 如果找不到对话,游戏就诉诸于 <tt>StringsFromCSFiles</tt> 文件硬编码的对话(特殊键的前置为 <tt>NPC.cs</tt> NPC.cs). ==格式== 对话内容包含了可以改变对话框的tokens和commands, 改变内容(比如说根据玩家当前性别读取对应性别的对话),注入值等等。这些都被解析为<tt>Dialogue</tt>分类。 特殊tokens: {| class="wikitable" |- ! 密钥格式(key format) ! 描述(description) |- | <tt>#</tt> | 把两个对话指令隔开的符号。 |- | <tt>{</tt> | 未完成的指令,用于"breakSpecialCharacter"指令。*反正我们现在没有用到就是了* |- | <tt>^</tt> | 根据玩家性别切换对话的指令。这个符号的前面句子是男性玩家可见,符号后面为女性玩家可见。<br />''例子: <code>早上好,@先生!^早上好,@小姐!</code>'' |- | <tt>%</tt> | 把带有人物肖像的对话框变成旁边式对话框。<br />''例子: <code>"%阿比盖尔沉迷于她的歌曲里"</code>'' |- | <tt>*</tt> | 未完成的指令,用于"quickResponseDelineator"指令。*不过大部分人用于表示某些情绪或者动作,比如说*笑*、*嘀咕*、*打哈欠*、*打喷嚏*等等,某种意义上是偷懒专用* |} ===肖像指令=== 下列指令是用于切换对话框右侧的NPC表情的。表情指令通常放在句子的最后一个: :<code>"fall_Fri6": "在我很小的时候,爸爸就领养了我。$s#$b#抱歉,我可能又说了让你不舒服的话了……$u#$e#算了……今天你的农场打理得怎么样?",</code> {| class="wikitable" |- ! 密钥格式(key format) ! 描述(description) |- | <tt>$neutral</tt> | 切换角色表情为默认/一般表情。 |- | <tt>$h</tt> | 切换角色表情为开心表情。 |- | <tt>$s</tt> | 切换角色表情为伤心表情。 |- | <tt>$u</tt> | 切换角色表情为特殊表情。 |- | <tt>$l</tt> | 切换角色表情为脸红/喜欢表情。 |- | <tt>$a</tt> | 切换角色表情为生气表情。 |- | <tt>${{t|id}}</tt> | 根据id的数字切换对应位置的表情。这些肖像ID顺序从左到右,从上到下并以<tt>$0</tt>开始计算。全部角色都有固定6个基础表情: <tt>$0</tt> (默认/一般), <tt>$1</tt> (开心), <tt>$2</tt> (伤心), <tt>$3</tt> (特殊), <tt>$4</tt> (脸红/喜欢), and <tt>$5</tt> (生气)。你可以为角色创造自制表情以用在对话或者事件剧情里。<br/>注意: <tt>$1</tt>不能放在对话的最前面,因为会和以下的指令冲突(参考下面的<tt>$1</tt>)。 |} ===对话指令=== {| class="wikitable" |- | <tt>$q {{t|回答ID}} {{t|回馈}}#{{t|内容}}</tt><br /><tt>$q {{t|response IDs}} {{t|fallback}}#{{t|text}}</tt> | 提出问题的对话格式(问答对话指令的前缀)。如果{{t|response IDs}} (根据你是选择了前面的回答ID或者后者的ID,这个<code>/</code>是用来隔开回答ID)已经在之前回答问题时已经触发过,那么问题将会直接读取你对应的回答反应(或者这段对话的其他部分),除此之外,如果你上一次已经回答过这个问答,{{t|fallback}}可以搭配$p指令来制作下一次遇到这个问题时会说的话。注意: 问答ID需要是独一无二的,和事件一样,以防止和其他NPC的问答ID冲突而导致对话被跳过。可以去看看[[使用模组:事件数据|这个事件的界面]]以得到更多资讯。 |- | <tt>$r {{t|回答ID}} {{t|增加多少好感度}} {{t|反应}}#{{t|答案1的内容}}</tt><br /><tt>$r {{t|response ID}} {{t|friendship}} {{t|reaction}}#{{t|answer text}}</tt> | 为$q问答对话添加回答选项。 {{t|answer text}}是你想要给玩家选择的回答。{{t|response ID}}是将对应的回答归类为你所填充的ID,以此让你能在以后的某些指令使用(同一个ID可以同时被多个回答归类)。 {{t|friendship}}是玩家选择这个答案之后可以让NPC的好感度产生变化,正数会增加好感,负数为减少好感。{{t|reaction}}是玩家回答后根据答案所填充的{{t|reaction}}读取对应NPC反应,基本上是在<tt>Content\Characters\Dialogue\*.xnb</tt>文件里读取这个对话(事件也是一样,反应的对话在Dialogue)。 |- | <tt>$p {{t|回答ID}}#{{t|达成ID的内容}}|{{t|没有达成的内容}}</tt><br /><tt>$p {{t|response ID}}#{{t|match text}}|{{t|no-match text}}</tt> | p代表"对话的先决条件"(dialoguePrerequisite)。根据之前玩家所回答的ID而显示不同的对话。如果之前玩家选择的回答和这个{{t|response ID}}是一样的,那么{{t|match text}}将会被显示;相反的,如果没有选择到对应ID,{{t|no-match text}}就会被显示. 这些对话内容是使用<code>|</code>这个符号分开不同内容。可以使用<code>#</code>来搞出多个内容(虽然目前我只看到两个内容,不知道三个以上的内容是否存在)。这并不需要是对话字符串中的第一个命令(就是你可以在一般对话之后放{{t|$p}}指令,虽然,这样的变化我也没试过……希望有个好人可以帮忙验证真假)。 |- | <tt>$b</tt> | 暂时停止对话,直到玩家点一下对话框就可以延续{{t|$b}}以后的对话。(这里举个明显可以看到差别的例子,那就是对话框右下方或者人物肖像的左下方,会出现向下的箭头。) |- | <tt>$e</tt> | 结束当前对话,并且关闭对话框使玩家可以恢复行动。再次与NPC对话才能触发<tt>$e</tt>以后的对话。(这里举个明显可以看到差别的例子,那就是对话框右下方或者人物肖像的左下方,会出现中间有X的小方格,并且你可以看到对话框缩小并消失。) |- | <tt>$k</tt> | 未完成的指令。代表"对话杀死"(dialogueKill)。(貌似至今为止是没有看过作者使用,看看未来有没有被赋予意义) |- | <tt>$c {{t|概率}}#{{t|内容1}}#{{t|内容2}}</tt><br /><tt>$c {{t|probability}}#{{t|text1}}#{{t|text2}}</tt> | 根据{{t|probability}}0到1以内的概率显示{{t|text1}}的对话内容;除此之外,将触发{{t|text2}}的对话内容。比如:<code>$c 0.9</code>是90%概率会触发{{t|text1}}并且剩余的10%概率会触发{{t|text2}}。 注意: 替代器命令(在下方可见)不能在{{t|text1}}正常运行。这并不需要是对话字符串中的第一个命令(指可以放在正常对话的后面)。'''这个完全不看游戏内的运气。'''(警告:由于不看游戏内运气且星露谷的概率不是一般抽卡游戏的伪随机*指有保底*,所以如果要搞这个随机对话最好不要像我把条件弄得太严苛*我的条件是限第一年夏季星期二6心好感50%概率触发*如果不是想要搞个小彩蛋真的没必要……) |- | <tt>$d {{t|bus|joja|cc|kent}}</tt> | "根据世界状态而显示的对话"(dialogueDependingOnWorldState)<br/> <code>"Tue4": "$d</code> {{t|dependence}}<code>#|当"dependence"的数值是存在会触发的对话内容|除此之外的情况会触发的对话内容",</code><br/> 这些"dependence"拥有4个数值: "bus": 巴士是否被修复; "joja": 乔家超市是否还在营业; "cc": 社区中心是否被修复; "kent": 肯特是否回来。这个指令必须在对话字符串中的第一个指令,且不允许有其他对话。<br /><small>例子: <tt>Sun2: "$d bus#今天去找桑迪玩玩吧~|巴士什么时候才修好啊,想去沙漠玩……"</tt></small> |- | <tt>$y</tt> | 未完成的指令。代表"对话快捷反应"(dialogueQuickResponse):一个简单的问答对话。类似$q指令的运作,但是是一个且都是在同一个文本里。它并没有"对话的先决条件"(dialoguePrerequisite)$p或者好感度变化。它可以直接被触发。(注意:你只能放置在对话字符串的最后一个,否则你的问题、回答和反应都会乱成一团糟。如果不信邪可以尝试复制坏例子的那个对话并且粘贴到随便一个NPC,然后进入游戏测试会发生什么事)<br /><small>例子1: <tt>Penny: "$y '要来份早饭吗?_是的,谢谢。_好,给你。_不了,我感觉很好。_那额外的就给我吃啦!'"</tt></small><br /><small>例子2: <tt>Sun4: "嗨,@先生。^嗨,@小姐。#$b#今天天气不错……#$b#$y '要来我家吃饭吗?_当然。_那就那么说定了!_抱歉,我今天很忙。_没关系,下次再来吧'"</tt></small><br /><small>坏例子: <tt>Sun4: "嗨,@先生。^嗨,@小姐。#$b#今天天气不错……#$b#$y '要来我家吃饭吗?_当然。_那就那么说定了!_抱歉,我今天很忙。_没关系,下次再来吧'#$e#今天要招待什么料理呢~"</tt></small> |- | <tt>$1 {{t|信件ID}}#{{t|第一次看到的内容}} #$e# {{t|第N次以后的内容}}</tt><br /><tt>$1 {{t|letter ID}}#{{t|1st-time text}} #$e# {{t|nth-time text}}</tt> | 创造一个玩家(几乎)只能看到一次该NPC的对话。{{t|1st-time text}}只会在{{t|letter ID}}还没被标记(并且没有被标记后送出去);相反的, {{t|nth-time text}}将被触发。{{t|letter ID}}不应该对应于实际的邮件(因为它不会被寄出),但是它可以被事件或其他对话线引用。 |- | <tt>%fork</tt> | 设置<tt>specialEventVariable1</tt>变量,可以通过后面的<tt>fork</tt>事件命令来检查。主要用于事件期间<tt>$q</tt>问题的反应对话。(总结:新手不要先接触,变量说来话长,在<tt> [[使用模组:事件数据|事件指令]]</tt>里看看详细用法吧) |- | <tt>[# # #]</tt> | 根据格子所填充的三个物品ID,随机给出一样物品。(一个格子一次性只能随机三样物品)如果是[231][120]分开放置物品ID,那么你可以一次性得到两个物品。(当然,两个格子各放三个物品ID也是可以的,只需要记得最多只能放三个物品ID) |} ====问答例子==== 为了能够更了解$q、$r和$p如何运作,看这里的例子作为参考可以帮助你。请注意如何格式化脚本更容易阅读: <source lang="yaml"> summer_Fri: "我想我明天会去海滩玩! #$q 305/306 beachquestion_followup#你想要跟我来吗? #$r 305 15 beachquestion_yes#当然,我超喜欢! #$r 306 0 beachquestion_sorry#噢,对不起,我已经和别人约好了…… #$r 306 -10 beachquestion_no#不用了,谢谢。 ", beachquestion_yes: "好耶!是约会!$h", beachquestion_sorry: "淦,好吧。$6", beachquestion_no: "哦,呃,我很抱歉。$s", beachquestion_followup: "$p 305 #明天一定可以玩得很开心!$h |哎,要是有个人能陪我,那该有多好……$s ", summer_Sat: "每年这个时候的海滩都很赞…… #$p 305 #谢谢你今天陪我来这里。$h |哦,你好,@,今天过得怎么样? ", </source> 以上对话在夏季的任何星期五触发。NPC的对话开头总是触发: "我想我明天会去海滩玩!" 之后,ta会开始问你问题 <source lang="yaml">#$q 305/306 beachquestion_followup#你想要跟我来吗?</source> '''$q''' 开始提问。 '''305/306'''检查这个问题是否在以前触发过,如果有就会直接把你的对话送到'''beachquestion_followup'''这个对话密钥。(你可以随意你的对话密钥以方便你找到/知道/运作/检查) 之后,就是玩家可以回答的答案。你可以增加多少个 '''$r'''都没问题;这里,我们则是三个: <source lang="yaml"> #$r 305 15 beachquestion_yes#当然,我超喜欢! #$r 306 0 beachquestion_sorry#噢,对不起,我已经和别人约好了…… #$r 306 -10 beachquestion_no#不用了,谢谢。 </source> 如果你表示同意(指第一个回答),游戏将会记录 '''ID 305'''作为你回答问题的答案。之后,你和那个角色的好感度增加了'''15'''点数。 '''beachquestion_yes'''就会被触发并延续刚刚问答对话。 如果你表示拒绝(指第二和第三个回答)游戏将会记录'''ID 306''' 作为你回答问题的答案,然后根据你选择的回答保持不变,'''0'''或者减少好感,'''-10'''。之后会读取'''beachquestion_sorry'''或者'''beachquestion_no'''来继续你的对话。 现在我们需要给对话密钥加上反应: <source lang="yaml"> beachquestion_yes: "好耶!是约会!$h", beachquestion_sorry: "淦,好吧。$6", beachquestion_no: "哦,呃,我很抱歉。$s", beachquestion_followup: "$p 305 #明天一定可以玩得很开心!$h |哎,要是有个人能陪我,那该有多好……$s ", </source> 这里需要注意的是'''beachquestion_followup'''。当玩家再一次触发这个对话时,'''$q 305/306'''会被检测以判定是开始问问题或者直接读取这个对话。 '''$p 305'''开启了一个变量反应,意思是"'''如果'''玩家选择的是同意,那么会触发前者的对话。'''相反'''则触发后者的对话"。如果玩家回答的是同意,那个NPC会表现开心。相反,ta会说ta需要找人陪ta一起去。 这里隔天会触发另外一个变量反应: <source lang="yaml"> summer_Sat: "每年这个时候的海滩都很赞…… #$p 305 #谢谢你今天陪我来这里。$h |哦,你好,@,今天过得怎么样? ", </source> 依旧是第一行,每一次玩家与NPC对话的第一句都会是(每年这个时候……),但是下一行是根据昨天玩家所选择的答案来显示出对应对话内容。 ---- 这里是另一个从海莉的对话文件里拿出来的例子。注意一下,即使脚本格式很难读懂,但游戏能够同时处理这两种格式。 <source lang="yaml"> summer_Sat: "农场的活好像很无聊的样子……#$q 42/43 summer_Sat_old#一天都干什么呢?#$r 42 10 summer_Sat_12#护理植物#$r 42 10 summer_Sat_12#探索山洞#$r 43 -10 summer_Sat_13#在你的房间里面转#$r 42 10 summer_Sat_12#挖宝藏" #!String summer_Sat_old: "#$p 43#嘿,你最好别在我房间里偷偷摸摸的!!$a|不过我估计你没准能练出个好身材。" #!String summer_Sat_12: "嗯……听起来是个大工程。" #!String summer_Sat_13: "什么?你最好别有这个想法!$a" #!String </source> 第一回触发的<code>summer_Sat</code>,将会触发42或者43的反应(因为这个问题是唯一有它们作为回答的问题),所以海莉会说 "农场的活好像很无聊的样子……一天都干什么呢?" 玩家可以选择以下其中一个回答: * 护理植物 * 探索山洞 * 在你的房间里面转 * 挖宝藏 第三个回答,<code>$r 43 -10 summer_Sat_13#在你的房间里面转</code>,回答被记录为ID 43,减少10点海莉的好感度并且触发这个对话<code>summer_Sat_13</code> (海莉说 "什么?你最好别有这个想法!")。其他回答则被记录为ID 42,增加10点海莉的好感度并且触发这个对话<code>summer_Sat_12</code> ("嗯……听起来是个大工程。"). 下一次触发的<code>summer_Sat</code>,将给出<code>$q</code>命令中列出的一个回答ID(42或43)。因此,<code>$q</code>和以后的内容被废弃,并且对话<code>summer_Sat_old</code>会代替这个空缺的位置。这个新对话使用了<code>$p</code>指令来改变海莉的对话,根据你上次回答ID是43或者是42来触发对应对话。如果你之前回答的是"在你的房间里面转",在这个符号<code>|</code>之前的对话会被触发,所以海莉将会说"农场的活好像很无聊的样子……嘿,你最好别在我房间里偷偷摸摸的!!" 如果不是ID 43被记录(在这个情况下,你一定是给出反应42的ID,打个比方,上次问答对话所选择的三个里其中一个回答),在这个符号<code>|</code>之后的对话会被触发,所以海莉反而会说 "农场的活好像很无聊的样子……不过我估计你没准能练出个好身材。" ===替代器命令=== 替换器命令将被替换为相关字符串。注意只有<tt>@</tt>在信件条目能够运作。(目前来看好像只有事件里的message不能使用@,望补充) {| class="wikitable" |- | <tt>@</tt> | 玩家的名字。<br />''例子: <code>嗨,@!</code>'' |- | <tt>%adj</tt> | 随机形容词。 (从Content/Strings/StringsFromCSFiles.xnb读取) |- | <tt>%noun</tt> | 随机名词。(从Content/Strings/StringsFromCSFiles.xnb读取) |- | <tt>%place</tt> | 随机地点名字。(从Content/Strings/StringsFromCSFiles.xnb读取) |- | <tt>%spouse</tt> | 玩家伴侣名字。 |- | <tt>%name</tt> | 一个随机生成的名称。(虽然,不太情况多随机) |- | <tt>%firstnameletter</tt> | 玩家名字的前半部分(四舍五入),比如 ''Nat''如果玩家名字是Natalie。(不清楚其他语言是怎么运作,望补充) |- | <tt>%time</tt> | 当前游戏时间。 |- | <tt>%band</tt> | 山姆和赛巴斯的乐队名字。 |- | <tt>%book</tt> | 艾利欧特写的书的标题。 |- | <tt>%rival</tt> | 根据玩家性别并从StringsFromCSFiles.xnb随机生成一个姓名。(从Utility.cs.5499到Utility.cs.5560) 不会和农夫的名字匹配。 |- | <tt>%pet</tt> | 玩家宠物的名字。 |- | <tt>%farm</tt> | 农场的名字。比如:听闻%farm农场的农场主是位年轻人…… |- | <tt>%favorite</tt> | 玩家在开头填写的喜欢的东西。(建议不要乱填,要不然对话会很搞笑) |- | <tt>%kid1</tt> | 玩家第一个孩子的名字。 |- | <tt>%kid2</tt> | 玩家第二个孩子的名字。 |} ==价值Values== 游戏在一些对话里使用这些预定义的值。这个部分是需要和上面的东西连接使用。 ===星期里的某天/星期几Days of week=== * <tt>Mon 星期一</tt> * <tt>Tue 星期二</tt> * <tt>Wed 星期三</tt> * <tt>Thu 星期四</tt> * <tt>Fri 星期五</tt> * <tt>Sat 星期六</tt> * <tt>Sun 星期日</tt> ===季节Seasons=== * <tt>spring 春天</tt> * <tt>summer 夏天</tt> * <tt>fall 秋天</tt> * <tt>winter 冬天</tt> ===第一/第一以后的年份=== 虽然在游戏里的对话使用了"first/later year"这个值,但是它只有两个是有效的: {| class="wikitable" |- ! 密钥格式(key format) ! 描述(description) |- | <tt>1</tt> | 发生在第一年。 |- | <tt>2</tt> | 发生在第一年以后的任何一年(就算不是第2年)。 |} ===回答IDs=== 回应ID标识了玩家在回应[[#问答例子|问题对话]]时所选择的答案。在某些情况下,一个问题里面可能会有多个答案具有相同ID的情况(比如各种各样的"yes"),或者''每个''问题都使用一样的ID(在这种情况下,ID只是显示玩家已经回答或者还没回答的问题)。 任何模组里都可以使用自填ID,不过这里提供了原版游戏IDs,以{{version|1.3.36}}为准: ; 对话 : {| class="wikitable" |- ! NPC ! 问题 ! 回答 |- | 阿比盖尔 | <tt>Sun2</tt><br />''@你觉得我们死后会变成什么样?'' | <tt>17</tt>: ''我不知道。''<br /><tt>18</tt>: ''我们会变成鬼魂。''<br /><tt>17</tt>: ''我们会上天堂。''<br /><tt>18</tt>: ''我们的能量体会进入灵界。''<br /><tt>17</tt>: ''什么都不会发生。我们就是不存在了而已。'' |- | 阿比盖尔 | <tt>summer_Sun</tt><br />''好吧……假设你得到了一个带薪假期。你会去哪儿?'' | <tt>25</tt>: ''海滩''<br /><tt>26</tt>: ''漆黑的山洞''<br /><tt>26</tt>: ''古老茂密的森林''<br /><tt>25</tt>: ''乔家购物广场'' |- | 阿比盖尔 | <tt>fall_Sun</tt><br />''我想给我的头发重新染个色……你觉得什么颜色好?'' | <tt>27</tt>: ''染成黑色吧。''<br /><tt>27</tt>: ''不妨试试金色吧?''<br /><tt>27</tt>: ''粉红怎么样?''<br /><tt>28</tt>: ''我喜欢你现在的样子!'' |- | 阿比盖尔 | <tt>winter_Sun</tt><br />''我画了两幅画。你觉得怎么样?'' | <tt>29</tt>: ''我喜欢丛林海岛和老虎这一幅。''<br /><tt>30</tt>: ''我喜欢拿着战斧的兽人这一幅。''<br /><tt>29</tt>: ''我哪幅都不喜欢。'' |- | 亚历克斯 | <tt>Wed</tt><br />''我还想叫你一起投投球,但你好像不怎么喜欢运动。^如果你不是女孩子,我就约你打球了。'' | <tt>6</tt>: ''我站在旁边看就好了。''<br /><tt>5</tt>: ''我想和你打球!''<br /><tt>5</tt>: ''(愤怒)你到底是什么意思?'' |- | 亚历克斯 | <tt>summer_Wed</tt><br />''你觉得我能成为职业选手吗?'' | <tt>52</tt>: ''你一定会成为运动场上的传奇''<br /><tt>52</tt>: ''可能吧,你毕竟练习了那么久''<br /><tt>53</tt>: ''别做梦了,你还是老老实实去做推销员吧'' |- | 亚历克斯 | <tt>fall_Wed</tt><br />''你觉得女孩子会喜欢我的发型吗?^你觉得我的发型怎么样?'' | <tt>54</tt>: ''看起来挺时尚的。''<br /><tt>55</tt>: ''像头上长了蘑菇一样。'' |- | 克林特 | <tt>Mon</tt><br />''你一定猜不到我的曾祖父以前是一名……'' | <tt>9</tt>: ''铁匠。''<br /><tt>9</tt>: ''一个糊涂的小丑''<br /><tt>9</tt>: ''一个尖酸刻薄的混蛋。'' |- | 海莉 | <tt>summer_Sat</tt><br />''一天都干什么呢?'' | <tt>42</tt>: ''护理植物''<br /><tt>42</tt>: ''探索山洞''<br /><tt>43</tt>: ''在房子里面转''<br /><tt>42</tt>: ''挖宝藏'' |- | 海莉 | <tt>fall_Sat</tt><br />''*唉*……你觉得我今天做点什么好呢?'' | <tt>44</tt>: ''水彩画''<br /><tt>44</tt>: ''阅读杂志''<br /><tt>44</tt>: ''安安静静的呆着(原文翻译:快停止成为一个自私的爱哭鬼)'' |- | 莉亚 | <tt>Mon</tt><br />''所以你为什么要做一个农夫呢?'' | <tt>21</tt>: ''我想要赚很多很多的钱。''<br /><tt>22</tt>: ''住在这里比住在城市里要更“真实”。''<br /><tt>211132</tt>: ''为了追随爷爷的脚步。''<br /><tt>22</tt>: ''我想要逃离我原来的生活。'' |- | 玛鲁 | <tt>Sun</tt><br />''你在农场工作得开心吗?'' | <tt>3</tt>: ''开心。''<br /><tt>4</tt>: ''不开心。'' |- | 玛鲁 | <tt>summer_Thu</tt><br />''我下了决心,以后一定要自己做个机器人出来。'' | <tt>35</tt>: ''对你来说,应该是小菜一碟。''<br /><tt>36</tt>: ''你可别眼高手低了''<br /><tt>35</tt>: ''听起来应该挺难的吧'' |- | 潘妮 | <tt>Mon4</tt><br />''但果然还是不要总想着消极的一面吧?'' | <tt>7</tt>: ''没错。还是保持乐观比较好哦!''<br /><tt>8</tt>: ''还是现实一点比较好吧。'' |- | 山姆 | <tt>Wed</tt><br />''嘿……你觉得我的新歌该是什么主题的?'' | <tt>20</tt>: ''耕种、挖矿和砍柴。''<br /><tt>8820</tt>: ''海中之城。''<br /><tt>8821</tt>: ''火车。''<br /><tt>19</tt>: ''随便吧。反正都是难听死的。'' |- | 赛巴斯 | <tt>Fri2</tt><br />''那么你是如何打发空闲时间的?'' | <tt>15</tt>: ''继续耕种''<br /><tt>16</tt>: ''漫画书''<br /><tt>15</tt>: ''采购''<br /><tt>15</tt>: ''运动'' |- | 赛巴斯 | <tt>fall_Fri</tt><br />''你平时读书吗, @?'' | <tt>62</tt>: ''嗯。看些经典名著。''<br /><tt>63</tt>: ''只看科幻与奇幻作品。''<br /><tt>62</tt>: ''我喜欢言情作品。''<br /><tt>63</tt>: ''不,我不看书的。'' |} ; 事件 : {| class="wikitable" |- ! 事件 ! 问题 ! 回答 |- | [[阿比盖尔#4心事件|阿比盖尔四心事件]]<!--2/f Abigail 1000/w rainy/t 1200 1900/z winter--> | ''@!你怎么站在雨里啊?$7'' | <tt>32</tt>: ''我在干活儿''<br /><tt>32</tt>: ''我在享受这种天气''<br /><tt>32</tt>: ''我还想问你呢'' |- | [[阿比盖尔#6心事件|阿比盖尔六心事件]]<!--4/f Abigail 1500/t 2100 2400/w sunny--> | ''你以前用过剑对么?'' | <tt>847951</tt>: ''没错,我觉得很刺激!''<br /><tt>847951</tt>: ''是的,但只是自卫而已''<br /><tt>847951</tt>: ''没错,但是太危险了。你不应该冒险。''<br /><tt>847951</tt>: ''没有'' |- | [[阿比盖尔#10心事件|阿比盖尔十心事件]]<!--901756/f Abigail 2500/t 1700 2400/o Abigail--> | ''*吸气*$s'' | <tt>776589</tt>: ''发生了什么?''<br /><tt>776589</tt>: ''你还好吗?'' |- | [[阿比盖尔#10心事件|阿比盖尔十心事件]]<!--901756/f Abigail 2500/t 1700 2400/o Abigail--> | ''我可能没有自己想象的那么勇敢……$8'' | <tt>34</tt>: ''和我在一起,你就安全了。''<br /><tt>34</tt>: ''我也害怕。''<br /><tt>34</tt>: ''你哭得就像个三岁小孩儿。别说了。'' |- | [[亚历克斯#5心事件|亚历克斯五心事件]]<!--21/f Alex 1250/p Alex--> | ''我真没用……$s'' | <tt>57</tt>: ''才不是。你明明是个天才!''<br /><tt>57</tt>: ''我们都有自己的长处和短处。''<br /><tt>57</tt>: ''没用?对,总结得很精辟。'' |- | [[克林特#3心事件 I|克林特三心事件]]<!--97/f Clint 750/t 1900 2300/d Tue Wed Thu Fri Sat Sun--> | ''你有什么秘诀吗?^你能给我一些建议吗?'' | <tt>211</tt>: ''靠你的能力和魅力打动女性''<br /><tt>211</tt>: ''做些疯狂的事情,让别人猜不透你''<br /><tt>211</tt>: ''表现得正常一点儿……做你自己就好''<br /><tt>211</tt>: ''把女人当男人一样对待'' |- | [[德米特里厄斯#6心事件|德米特里厄斯六心事件]]<!--25/f Demetrius 1500/p Demetrius/p Robin--> | ''你觉得西红柿算什么?'' | <tt>59</tt>: ''蔬菜''<br /><tt>59</tt>: ''水果'' |- | [[艾利欧特#2心事件|艾利欧特二心事件]]<!--39/f Elliott 500/p Elliott--> | ''问个问题……你喜欢什么样的书, @?'' | <tt>958699</tt>: ''悬念''<br /><tt>958700</tt>: ''浪漫''<br /><tt>958701</tt>: ''科幻'' |- | [[艾利欧特#4心事件|艾利欧特四心事件]]<!--40/f Elliott 1000/p Gus/t 1500 2200--> | ''等等。让我们举杯庆祝一下!为了……'' | <tt>28376</tt>: ''鹈鹕镇!''<br /><tt>28376</tt>: ''我们的友谊!''<br /><tt>28376</tt>: ''我们的健康!''<br /><tt>28376</tt>: ''你的命运!'' |- | [[艾米丽#6心事件|艾米丽六心事件]]<!--917409/e 463391/f Emily 1500/p Emily--> | ''所以……*喘气*……你感觉怎么样?$h'' | <tt>213</tt>: ''这太奇妙了!''<br /><tt>213</tt>: ''真尴尬……''<br /><tt>213</tt>: ''(保持沉默并缓缓鼓掌)'' |- | [[艾芙琳#4心事件|艾芙琳四心事件]]<!--19/f Evelyn 1000/p Evelyn--> | ''您觉得如何?'' | <tt>51</tt>: ''很美味!''<br /><tt>51</tt>: ''就像在嚼冰球'' |- | [[格斯#4心事件|格斯四心事件]]<!--96/f Gus 1000/f Pam 500/p Gus--> | ''@,你有什么事儿吗?'' | <tt>207</tt>: ''你现在就得把赊的账给结了!''<br /><tt>208</tt>: ''酒吧在经济上有些困难'' |- | [[海莉#2心事件|海莉二心事件]]<!--11/f Haley 500/p Haley/p Emily--> | ''那是因为上周是我打扫的!$a'' | <tt>46</tt>: ''少废话,赶紧打扫!''<br /><tt>45</tt>: ''海莉,何不每周固定打扫一次呢?''<br /><tt>46</tt>: ''艾米丽,这次就去打扫吧。'' |- | [[海莉#4心事件|海莉四心事件]]<!--12/f Haley 1000/p Haley--> | ''话说……你挺有劲的,对吧?'' | <tt>47</tt>: ''是''<br /><tt>47</tt>: ''不是'' |- | [[海莉#6心事件|海莉六心事件]]<!--13/f Haley 1500/z winter/t 1000 1600--> | ''这东西现在已经买不到了……$s'' | <tt>48</tt>: ''别担心,我给你买个新的!''<br /><tt>48</tt>: ''太遗憾了……'' |- | [[哈维#2心事件|哈维二心事件]]<!--56/f Harvey 500/p George--> | ''@你觉得乔治该怎么做?'' | <tt>84</tt>: ''乔治应该听从哈维医生的建议。''<br /><tt>85</tt>: ''乔治知道怎么做对他的身体最好。'' |- | [[哈维#4心事件|哈维四心事件]]<!--57/f Harvey 1000/p Harvey--> | ''嗯……你的心跳有点儿快。$u'' | <tt>86</tt>: ''我有点紧张。''<br /><tt>86</tt>: ''我刚才在农场里干活,现在还没喘过来气。''<br /><tt>86</tt>: ''你真的是医生吗?我的心跳很正常!'' |- | [[肯特#3心事件 I|肯特三心事件]]<!--100/f Kent 750/p Kent/p Jodi--> | ''(跟肯特聊聊)$s'' | <tt>215</tt>: ''这事怪乔迪……她本该知道的!''<br /><tt>215</tt>: ''我知道你内心很痛苦……但这也不能怨你老婆啊。''<br /><tt>215</tt>: ''(撒谎)这事怪我……是我说要吃爆米花的。'' |- | [[莉亚#4心事件|莉亚四心事件]]<!--51/f Leah 1000/p Leah--> | ''我是不是太自私了 @?$s'' | <tt>83</tt>: ''不,你只是做了必须做的事情。''<br /><tt>83</tt>: ''不,是你的前任太蠢了。''<br /><tt>83</tt>: ''不,但你其实应该待在城里。''<br /><tt>83</tt>: ''对,有那么一点儿。''<br /><tt>83</tt>: ''对,但人不为己天诛地灭。'' |- | [[刘易斯#6心事件|刘易斯六心事件]]<!--639373/f Lewis 1500/f Marnie 1500/t 1900 2300/w sunny--> | ''@……你什么都听到了,是么?$s'' | <tt>200</tt>: ''是的……但是我会保密的。''<br /><tt>201</tt>: ''是的……我要告诉大家。'' |- | [[玛鲁#2心事件|玛鲁二心事件]]<!--6/f Maru 500/p Maru--> | ''我说的没错吧, @?'' | <tt>15933</tt>: ''(什么也不说)''<br /><tt>15933</tt>: ''其实,你爸刚刚可神秘了。'' |- | [[玛鲁#4心事件|玛鲁四心事件]]<!--7/f Maru 1000/p Maru--> | ''@我应该怎么办?'' | <tt>38</tt>: ''从地板上铲起来就好。他不会发现的。''<br /><tt>39</tt>: ''告诉哈维是我的错。''<br /><tt>38</tt>: ''告诉哈维,这纯属意外。'' |- | [[玛鲁#6心事件|玛鲁六心事件]]<!--8/f Maru 1500/w sunny/t 2100 2340--> | ''你看到的是什么?'' | <tt>40</tt>: ''一颗美丽的星球。''<br /><tt>40</tt>: ''一片漆黑的深渊。'' |- | [[玛鲁#8心事件|玛鲁八心事件]]<!--9/f Maru 2000/p Maru--> | ''真是对不起。$8'' | <tt>41</tt>: ''没关系,根本不疼的。''<br /><tt>41</tt>: ''抱歉就对了。简直疼死人了!'' |- | [[玛鲁#10心事件|玛鲁十心事件]]<!--10/f Maru 2500/t 900 1600--> | ''那么,你觉得怎么样呢, @?'' | <tt>18981</tt>: ''我认为你的发明很厉害。''<br /><tt>18981</tt>: ''我很失望……你不该让那机器人成为你的奴隶的。''<br /><tt>18981</tt>: ''看来你爸对我们在一起是没意见咯?''<br /><tt>18981</tt>: ''(盯着玛鲁,什么也不说)'' |- | [[玛鲁#10心事件|玛鲁十心事件]]<!--BadAnswer--> | ''你会那么说,肯定有原因……$a'' | <tt>18982</tt>: ''玛丽尔达就是一台设计用来模仿人类的机器。''<br /><tt>18982</tt>: ''我刚才是在开玩笑。玛丽尔达应该享有自由的权力。''<br /><tt>18982</tt>: ''我会让她去农场里工作。'' |- | [[潘妮#2心事件|潘妮二心事件]]<!--34/f Penny 500/t 900 1400/w sunny--> | ''@?你看到了?'' | <tt>71</tt>: ''没错,你做的很好,潘妮。''<br /><tt>71</tt>: ''你应该不管他的,现在他倒恼羞成怒了。''<br /><tt>71</tt>: ''我就散个步,不用管我。'' |- | [[潘妮#6心事件|潘妮六心事件]]<!--36/f Penny 1500/p Penny--> | ''……怎么样?'' | <tt>72</tt>: ''(说谎)嗯嗯!真好吃!''<br /><tt>73</tt>: ''呃……我能把剩下的带走吗?''<br /><tt>73</tt>: ''真是特别的味道……你是怎么把它做得那么耐人寻味的?'' |- | [[皮埃尔#6心事件|皮埃尔六心事件]]<!--16/f Pierre 1500/p Pierre--> | ''发誓你不会把这事儿告诉任何人。'' | <tt>50</tt>: ''我会为你保守秘密的。''<br /><tt>50</tt>: ''这事儿应该让你太太知道。'' |- | [[罗宾#6心事件|罗宾六心事件]]<!--33/f Robin 1500/p Robin--> | ''你有没有用木头做过东西呢, @?'' | <tt>66</tt>: ''有''<br /><tt>66</tt>: ''没有'' |- | [[山姆#2心事件|山姆二心事件]]<!--44/f Sam 500/p Sam--> | ''说, @…… 你喜欢什么样的音乐?'' | <tt>76</tt>: ''令人愉悦的流行乐。''<br /><tt>77</tt>: ''实验性质的硬摇滚。''<br /><tt>78</tt>: ''极富能量的舞曲。''<br /><tt>79</tt>: ''气氛活跃的乡村音乐。'' |- | [[山姆#4心事件|山姆四心事件]]<!--46/f Sam 1000/p Sam--> | ''……告诉她吧, @。$s'' | <tt>80</tt>: ''山姆把零食递给我的时候掉到了地上。''<br /><tt>80</tt>: ''山姆把零食递给我的时候被我弄掉了。''<br /><tt>81</tt>: ''山姆故意弄掉的。他觉得这样很好玩。'' |} ==对话主题== 一个''对话主题''是一个可以在[[模组:事件数据|事件的先决条件]]中检入的临时flag并且可以触发一次性NPC对话(如果它有一个达标的对话密钥)。激活后,它们将被储存到<tt>Game1.player.activeDialogueEvents</tt>里。 启动对话主题可以通过使用<tt>addConversationTopic</tt>[[模组:事件数据|事件指令]],<tt>%item conversationTopic</tt> [[模组:信件数据|信件指令]],或在代码中添加它到<tt>Game1.player.activeDialogueEvents</tt>。 游戏定义了这些事件: {| class="wikitable" |- ! id ! 持续时间 ! 触发条件 |- !colspan="3"| 收集包 |- | <tt>cc_Begin</tt> | 四天 | 在社区中心阅读了第一条祝尼魔笔记后,在[[法师]]的过场动画中设置。 |- | <tt>cc_Complete</tt> | 四天 | [[社区中心]]完成。(不适用于JoJa路线) |- | <tt>cc_Boulder</tt> | 七天 | [[深山|深山]]的巨石被移除。 |- | <tt>cc_Bridge</tt> | 七天 | [[采石场]]的桥梁被修护。 |- | <tt>cc_Bus</tt> | 七天 | [[巴士站]]被修复好了。 |- | <tt>cc_Greenhouse</tt> | 三天 | [[温室]]建好了。 |- | <tt>cc_Minecart</tt> | 七天 | [[矿车]]被解锁了。 |- | <tt>joja_Begin</tt> | 七天 | 当玩家第一次打开[[乔家社区发展申请书]]。 |- | <tt>movieTheater</tt> | 三天 | [[电影院|电影院]]建好了。 |- !colspan="3"| 伴侣事件 |- | <tt>elliottGone</tt> | 六天 | 当[[艾利欧特]]十四心事件开启时设置。 |- | <tt>ElliottGone1</tt><br /><tt>ElliottGone2</tt><br /><tt>ElliottGone3</tt><br /><tt>ElliottGone4</tt><br /><tt>ElliottGone5</tt><br /><tt>ElliottGone6</tt><br /><tt>ElliottGone7</tt> | 一样天数 | [[艾利欧特]]十四心事件的一部分。第一个flag是在开始时设置的;随后的flag是由艾利欧特随后的信件设置的。 |- | <tt>emilyFiber</tt> | 二心 | [[艾米丽]]十四心事件的一部分。完成委托之后设置的。 |- | <tt>haleyCakewalk1</tt><br /><tt>haleyCakewalk2</tt> | 一样天数 | [[海莉]]十四心事件的一部分。 |- | <tt>leahPaint</tt> | 一样天数 | 当[[莉亚]]十四心事件开启时设置。 |- | <tt>pennyRedecorating</tt> | 两天 | [[潘妮]]十四心事件的一部分。 |- | <tt>samJob1</tt><br /><tt>samJob2</tt> | 两天 | [[山姆]]十四心事件的一部分。 |- | <tt>samJob3</tt> | 三天 | [[山姆]]十四心事件的一部分。 |- | <tt>sebastianFrog</tt> | 一样天数 | 当[[塞巴斯蒂安]]十四心事件开启时设置。 |- | <tt>sebastianFrog2</tt> | 六天 | [[塞巴斯蒂安]]十四心事件的一部分。 |- | <tt>shaneSaloon1</tt><br /><tt>shaneSaloon2</tt> | 一样天数 | [[谢恩]]十四心事件的一部分。 |- !colspan="3"| 其他事件 |- | <tt>dumped_Guys</tt><br /><tt>dumped_Girls</tt> | 七天 | 设置在对应的小组10心事件之后。(看[[阿比盖尔#小组十心事件]]). |- | <tt>secondChance_Girls</tt><br /><tt>secondChance_Guys</tt> | 十四天 | 设置在对应的小组10心事件之后。(看[[阿比盖尔#小组十心事件]]). |- | <tt>pamHouseUpgrade</tt> | 四天 | 设置在[[潘姆]]家修复事件之后,并且当时玩家选择承认自己是赞助者。 |- | <tt>pamHouseUpgradeAnonymous</tt> | 四天 | 设置在[[潘姆]]家修复事件之后,并且当时玩家选择保密自己的身份。 |- | <tt>willyCrabs</tt> | 四天 | 设置在[[威利]]六心事件之后。 |- !colspan="3"| 其他 |- | <tt>Introduction</tt> | 六天 | 玩家被创建时。(开始新的存档或者第一次加入多人游戏服务器时) |- | <tt>FullCrabPond</tt> | 十四天 | 任何第一次[[鱼塘|鱼塘]]拥有十个[[螃蟹]]。 |} [[分类:使用模组]] [[en:Modding:Dialogue]] [[pt:Modificações:Diálogo]]
该页面使用的模板:
Template:Nexus mod
(
查看源代码
)
Template:T
(
查看源代码
)
Template:Version
(
查看源代码
)
返回至
模组:对话
。