模组:對話

出自Stardew Valley Wiki
跳至導覽 跳至搜尋

目錄

這個頁面解釋了遊戲如何存儲對話文本,它的格式,以及遊戲如何解析它。它將會是一個提供給模組製造者的高級指南。

數據

這些對話文本存儲在四組文件中。

角色-特殊對話

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

地點對話

依照順序,除了上面的對話以外,接下來將會依照順序讀取以下對話。
*指上面四個danceRejectiondivorced<location>_EntryComeBackLaterSnoring的優先度大於以下的對話*

變化/變體:

  • 每一個特定鍵(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"
      }
    }

一般對話

除上面以外,遊戲將選擇使用以下其中一個關鍵格式的對話(按優先順序來讀取):

  1. <季節>_<密鑰>_inlaw_<伴侶名字> <season>_<key>_inlaw_<spouseName>
  2. <季節>_<密鑰> <season>_<key>
  3. <密鑰>_inlaw_<伴侶名字> <key>_inlaw_<spouseName>
  4. <密鑰> <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通用對話

用點小聰明,你可以讓每個NPC做出不同的反應,而不是使用常規的預設對話。打個比方,你可以使用CP模組Content Patcher來改變NPC.cs.3962NPC.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的*

運算法

從遊戲裏發現下列對話:

  1. 事件對話從適當的事件命令中讀取 (看看模組目錄:事件數據).
  2. 特定位置的對話從 StringsFromCSFiles <location>.cs讀取。
  3. 其他角色對話文件將從角色-特定文件讀取。
  4. 如果找不到對話,遊戲就訴諸於 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)

"Tue4": "$d <dependence>#|当"dependence"的数值是存在会触发的对话内容|除此之外的情况会触发的对话内容",
這些"dependence"擁有4個數值: "bus": 巴士是否被修復; "joja": 喬家超市是否還在營業; "cc": 社區中心是否被修復; "kent": 肯特是否回來。這個指令必須在對話字符串中的第一個指令,且不允許有其他對話。
例子: Sun2: "$d bus#今天去找桑迪玩玩吧~|巴士什麼時候才修好啊,想去沙漠玩……"

$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 十四天 任何第一次魚塘擁有十個螃蟹