「模组:对话」修訂間的差異
MochiKun244(討論 | 貢獻) (→婚后对话) |
Margotbean(討論 | 貢獻) 小 (文本替换 - 替换“乔家社区发展申请书”为“Joja社区发展申请书”) |
||
(未顯示由 4 位使用者於中間所作的 25 次修訂) | |||
行 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来添加在游戏里,以下为麻薯君的例子: | 雨天对话需要使用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 | ||
行 344: | 行 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": "",//下雨天白天 | ||
行 463: | 行 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", | ||
行 493: | 行 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", | ||
行 506: | 行 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的* | ||
行 514: | 行 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"指令。*不过大部分人用于表示某些情绪或者动作,比如说*笑*、*嘀咕*、*打哈欠*、*打喷嚏*等等,某种意义上是偷懒专用* | ||
|} | |} | ||
行 548: | 行 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) | ||
|} | |} | ||
行 621: | 行 620: | ||
为了能够更了解$q、$r和$p如何运作,看这里的例子作为参考可以帮助你。请注意如何格式化脚本更容易阅读: | 为了能够更了解$q、$r和$p如何运作,看这里的例子作为参考可以帮助你。请注意如何格式化脚本更容易阅读: | ||
− | < | + | <syntaxhighlight lang="yaml"> |
summer_Fri: | summer_Fri: | ||
"我想我明天会去海滩玩! | "我想我明天会去海滩玩! | ||
行 644: | 行 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'''这个对话密钥。(你可以随意你的对话密钥以方便你找到/知道/运作/检查) | ||
行 655: | 行 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'''就会被触发并延续刚刚问答对话。 | ||
行 666: | 行 665: | ||
现在我们需要给对话密钥加上反应: | 现在我们需要给对话密钥加上反应: | ||
− | < | + | <syntaxhighlight lang="yaml"> |
beachquestion_yes: "好耶!是约会!$h", | beachquestion_yes: "好耶!是约会!$h", | ||
beachquestion_sorry: "淦,好吧。$6", | beachquestion_sorry: "淦,好吧。$6", | ||
行 675: | 行 674: | ||
|哎,要是有个人能陪我,那该有多好……$s | |哎,要是有个人能陪我,那该有多好……$s | ||
", | ", | ||
− | </ | + | </syntaxhighlight> |
这里需要注意的是'''beachquestion_followup'''。当玩家再一次触发这个对话时,'''$q 305/306'''会被检测以判定是开始问问题或者直接读取这个对话。 | 这里需要注意的是'''beachquestion_followup'''。当玩家再一次触发这个对话时,'''$q 305/306'''会被检测以判定是开始问问题或者直接读取这个对话。 | ||
行 683: | 行 682: | ||
这里隔天会触发另外一个变量反应: | 这里隔天会触发另外一个变量反应: | ||
− | < | + | <syntaxhighlight lang="yaml"> |
summer_Sat: | summer_Sat: | ||
"每年这个时候的海滩都很赞…… | "每年这个时候的海滩都很赞…… | ||
行 690: | 行 689: | ||
|哦,你好,@,今天过得怎么样? | |哦,你好,@,今天过得怎么样? | ||
", | ", | ||
− | </ | + | </syntaxhighlight> |
依旧是第一行,每一次玩家与NPC对话的第一句都会是(每年这个时候……),但是下一行是根据昨天玩家所选择的答案来显示出对应对话内容。 | 依旧是第一行,每一次玩家与NPC对话的第一句都会是(每年这个时候……),但是下一行是根据昨天玩家所选择的答案来显示出对应对话内容。 | ||
行 698: | 行 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的反应(因为这个问题是唯一有它们作为回答的问题),所以海莉会说 "农场的活好像很无聊的样子……一天都干什么呢?" 玩家可以选择以下其中一个回答: | ||
行 717: | 行 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> |
| 玩家第二个孩子的名字。 | | 玩家第二个孩子的名字。 | ||
|} | |} | ||
行 774: | 行 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 | ||
行 816: | 行 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" |
|- | |- | ||
! 事件 | ! 事件 | ||
行 891: | 行 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,034: | 行 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,072: | 行 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,118: | 行 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,140: | 行 1,139: | ||
!colspan="3"| 其他 | !colspan="3"| 其他 | ||
|- | |- | ||
− | | < | + | | <samp>Introduction</samp> |
| 六天 | | 六天 | ||
| 玩家被创建时。(开始新的存档或者第一次加入多人游戏服务器时) | | 玩家被创建时。(开始新的存档或者第一次加入多人游戏服务器时) | ||
|- | |- | ||
− | | < | + | | <samp>FullCrabPond</samp> |
| 十四天 | | 十四天 | ||
| 任何第一次[[鱼塘|鱼塘]]拥有十个[[螃蟹]]。 | | 任何第一次[[鱼塘|鱼塘]]拥有十个[[螃蟹]]。 | ||
行 1,150: | 行 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 | 十四天 | 任何第一次魚塘擁有十個螃蟹。 |