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