Модификации:Диалоги: различия между версиями

Материал из Stardew Valley Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «← Индекс {{Переведите}} This page explains how the game stores dialogue text, its format, and how the ga...»)
 
м (Замена текста — «tt>» на «samp>»)
 
(не показаны 32 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
← [[Модификации:Индекс|Индекс]]
 
← [[Модификации:Индекс|Индекс]]
{{Переведите}}
 
This page explains how the game stores dialogue text, its format, and how the game parses it. This is an advanced guide for mod developers.
 
  
==Data==
+
На этой странице объясняется, как игра хранит текст диалога, его формат и как игра анализирует его. Это расширенное руководство для разработчиков модов.
The dialogue text is stored in four sets of files.
 
  
===Character-specific dialogue===
+
==Данные==
<tt>Characters\Dialogue\*.xnb</tt> contains most of the dialogue for each character (one file per character). The game will choose dialogue from one of the sections below, in the order shown here.
+
Текст диалога хранится в четырех файлах.
  
====Special dialogue====
+
===Диалог с конкретным персонажем===
There are a few predefined keys for specific cases:
+
<samp>Characters\Dialogue\*.xnb</samp> содержит большую часть диалогов для каждого персонажа(по одному файлу на персонажа). Игра выберет диалог из одного из разделов ниже в порядке, указанном здесь.
{| class="wikitable"
+
 
 +
====Специальный диалог====
 +
Существует несколько ключей для конкретных случаев:
 +
{|class="wikitable"
 
|-
 
|-
! key format
+
! Ключ
! description
+
! Описание
 
|-
 
|-
| <tt>danceRejection</tt>
+
| <samp>danceRejection</samp>
| Dialogue used to reject an offer to dance at the [[Flower Dance]]. (A different dialogue is used if they've already agreed to dance with another player.)
+
| Диалог, используемый для отклонения предложения потанцевать во время [[Цветочные танцы|цветочных танцев]]. (Другой диалог используется, если они уже согласились танцевать с другим игроком.)
 
|-
 
|-
| <tt>divorced</tt>
+
| <samp>divorced</samp>
| Dialogue shown when you speak to your divorced spouse.
+
| Диалог отображается, когда вы разговариваете со своим разведенным супругом.
 
|-
 
|-
| <tt>{{t|location}}_Entry</tt>
+
| <samp>{{t|location}}_Entry</samp>
| Possible dialogue lines shown above the NPC's name when they enter the named {{t|location}}, with a 50% chance. This dialogue entry can contain multiple options separated by <code>/</code>; the game will randomly choose one to display.<br /><small>Example: <tt>SeedShop_Entry: "Hi, Pierre!/Now, what do I need.../Ah, that looks good!/Makin' my special sauce tonight!/Pierre! What's fresh?/Pierre! Waddya got for me?"</tt>
+
| Возможные диалоговые строки, показанные над NPC, при входе на {{t|location}}, шанс 50%. Эта запись диалога может содержать несколько параметров, разделенных <code>/</code>; игра случайным образом выберет один из них для отображения.<br /><small>Пример: <samp>SeedShop_Entry: "Hi, Pierre!/Now, what do I need.../Ah, that looks good!/Makin' my special sauce tonight!/Pierre! What's fresh?/Pierre! Waddya got for me?"</samp>
 
|-
 
|-
| <tt>ComeBackLater</tt><br /><tt>Snoring</tt>
+
| <samp>ComeBackLater</samp><br /><samp>Snoring</samp>
| [[Gil]]'s dialogue when you haven't completed any new Adventure Quest goals. <tt>ComeBackLater</tt> will be shown once, and all subsequent dialogues will show <tt>Snoring</tt>.
+
| Диалог [[Гил|Гила]], когда не выполнено никаких новых задач приключенческого квеста. <samp>ComeBackLater</samp> будет показан один раз, и все последующие диалоги будут показаны <samp>Snoring</samp>.
 
|}
 
|}
  
====Location dialogue====
+
====Диалоги на локациях====
Otherwise the game will choose dialogue in this order.
+
В противном случае игра выберет диалог в таком порядке.
  
Variants:
+
Варианты:
* Each key can optionally be prefixed with a [[#Seasons|season name]], like <tt>springMountain_47_23</tt>.
+
* Каждый ключ может быть дополнительно снабжен префиксом [[#Сезоны|названием сезона]], например, <samp>springMountain_47_23</samp>.
  
The game will check variants in this order: <tt>{{t|season}}{{t|key}}</tt>, and <tt>{{t|key}}</tt>. The variants aren't listed below for simplicity.
+
Игра проверит варианты в таком порядке: <samp>{{t|season}}{{t|key}}</samp>, и <samp>{{t|key}}</samp>.
  
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
! key format
+
! Ключ
! description
+
! Описание
 
|-
 
|-
| <tt>{{t|location}}_{{t|x}}_{{t|y}}</tt>
+
| <samp>{{t|location}}_{{t|x}}_{{t|y}}</samp>
| Dialogue shown in the named location when the NPC is standing at tile position {{t|x}}, {{t|y}}.<br /><small>Example: <tt>Mountain_47_23: "I come here for the peace and quiet."</tt></small>
+
| Диалог, отображаемый в указанном местоположении, когда NPC стоит на позиции плитки {{t|x}}, {{t|y}}.<br /><small>Например: <samp>Mountain_47_23: "Я прихожу сюда за тишиной и покоем."</samp></small>
 
|-
 
|-
| <tt>{{t|location}}_{{t|dayName}}</tt>
+
| <samp>{{t|location}}_{{t|dayName}}</samp>
| Dialogue shown in the named location on the given [[#Days of week|day of week]].<br /><small>Example: <tt>Saloon_Fri: "Business has been really good tonight. I'm pleased."</tt></small>
+
| Диалог, отображаемый в указанном месте в указанный [[#Дни недели|день недели]].<br /><small>Например: <samp>Saloon_Fri: "Сегодня вечером дела шли действительно хорошо. Я доволен."</samp></small>
 
|-
 
|-
| <tt>{{t|location}}{{t|hearts}}</tt>
+
| <samp>{{t|location}}{{t|hearts}}</samp>
| Dialogue shown in the named location if you have at least {{t|hearts}} hearts with them. The {{t|hearts}} will be checked in the order 10, 8, 6, 4, 2 (no other value will be recognised).<br /><small>Example: <tt>Saloon8: "Hi there @. I'm glad to see you! You're always welcome here."</tt></small>
+
| Диалог, отображаемый в указанном местоположении, если у вас есть хотя бы {{t|hearts}} сердец. {{t|hearts}} должно быть 10, 8, 6, 4 или 2 (никакое другое количество не будет учтено).<br /><small>Например: <samp>Saloon8: "Привет @. Я рад тебя видеть! Тебе здесь всегда рады."</samp></small>
 
|-
 
|-
| <tt>{{t|location}}</tt>
+
| <samp>{{t|location}}</samp>
| Dialogue shown in the named location.<br /><small>Example: <tt>Saloon: "Now that I'm here I can finally relax and socialize a bit."</tt></small>
+
| Диалог, отображаемый в указанном местоположении.<br /><small>Например: <samp>Saloon: "Теперь, когда я здесь, я наконец-то могу расслабиться и немного пообщаться."</samp></small>
 
|}
 
|}
  
====Rain dialogue====
+
====Диалоги во время дождя====
<tt>Characters\Dialogue\rainy.xnb</tt> contains one dialogue entry per NPC. There's a roughly 50% chance they'll use this dialogue if one of the above didn't match, it's raining, and you're not married to or divorced from them.
+
<samp>Characters\Dialogue\rainy.xnb</samp> содержит одну запись диалога на каждого NPC. Есть примерно 50% вероятность, что NPC воспользуется этим диалогом, если что-то из нижеперечисленного совпало,
 +
* идет дождь;
 +
* игрок не супруг NPC;
 +
* игрок разведен с NPC.
  
====Generic dialogue====
+
====Общий диалог====
Otherwise the game will choose a dialogue using one of these key formats (in precedence order):
+
В противном случае игра выберет диалог, используя один из этих ключевых форматов (в порядке приоритета):
# <tt>{{t|season}}_{{t|key}}_inlaw_{{t|spouseName}}</tt>
+
# <samp>{{t|season}}_{{t|key}}_inlaw_{{t|spouseName}}</samp>
# <tt>{{t|season}}_{{t|key}}</tt>
+
# <samp>{{t|season}}_{{t|key}}</samp>
# <tt>{{t|key}}_inlaw_{{t|spouseName}}</tt>
+
# <samp>{{t|key}}_inlaw_{{t|spouseName}}</samp>
# <tt>{{t|key}}</tt>
+
# <samp>{{t|key}}</samp>
  
For each variation above: <tt>{{t|season}}</tt> is a [[#Seasons|season name]] (like <tt>spring_14</tt>); <tt>_inlaw_{{t|spouseName}}</tt> matches if the player is married to the named NPC, regardless of whether the speaking NPC is related to the named one (like <tt>Sat_inlaw_Abigail</tt>); and <tt>{{t|key}}</tt> is one of the formats listed below.
+
Для каждого варианта выше: <samp>{{t|season}}</samp> это - [[#Сезоны|название сезона]] (например, <samp>spring_14</samp>); <samp>_inlaw_{{t|spouseName}}</samp>, если игрок супруг указанного NPC, независимо от того, связан ли NPC с игроком (например, <samp>Sat_inlaw_Abigail</samp>); и <samp>{{t|key}}</samp> записывается в одним из форматов, перечисленных ниже.
  
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
! key format
+
! Ключ
! description
+
! Описание
 
|-
 
|-
| <tt>{{t|dayOfMonth}}</tt>
+
| <samp>{{t|dayOfMonth}}</samp>
| Dialogue shown on the given day of month in the '''first year only.'''<br />'''WARNING: this first-year-only behavior is different from other keys and often catches unsuspecting modders!'''<br /><small>Example: <tt>10: "Did you watch the game last night?#$b#Or wait, do you even have a TV set...?"</tt></small>
+
| Диалог, показанный в указанный день месяца в '''только первого года.'''<br />'''ПРЕДУПРЕЖДЕНИЕ: этот ключ только для первого года, ключи для последующих лет отличаются!'''<br /><small>Например: <samp>10: "Did you watch the game last night?#$b#Or wait, do you even have a TV set...?"</samp></small>
 
|-
 
|-
| <tt>{{t|dayOfMonth}}_{{t|firstOrLaterYear}}</tt>
+
| <samp>{{t|dayOfMonth}}_{{t|firstOrLaterYear}}</samp>
| Dialogue shown on the given day of month in the [[#First/later year|first/later year]].<br /><small>Example: <tt>2_1: "My husband Kent is a soldier, working overseas. That's why he's not here right now.#$b#I know he'll come back safe once his tour is over!!#$e#Need something?"</tt></small>
+
| Диалог, показанный в указанный день месяца в  [[#Первый/последующий год|первый/последующий год]].<br /><small>Например: <samp>2_1: "My husband Kent is a soldier, working overseas. That's why he's not here right now.#$b#I know he'll come back safe once his tour is over!!#$e#Need something?"</samp></small>
 
|-
 
|-
| <tt>{{t|dayOfWeek}}{{t|hearts}}_{{t|firstOrLaterYear}}</tt>
+
| <samp>{{t|dayOfWeek}}{{t|hearts}}_{{t|firstOrLaterYear}}</samp>
| Dialogue shown on the given [[#Days of week|day of week]] if you have at least {{t|hearts}} hearts with them, in the [[#First/later year|first/later year]]. The {{t|hearts}} will be checked in the order 10, 8, 6, 4, 2 (no other value will be recognised).<br />'''Bug:''' only shown if an equivalent <tt>{{t|dayOfWeek}}{{t|hearts}}</tt> key also exists.<br /><small>Example: <tt>Thu2_2: "Well, my Dad is back. Have you met him?#$b#I'm just glad he's okay."</tt></small>
+
| Диалог, показанный в указанный [[#Дни недели|день недели]] если у игрока есть хотя бы {{t|hearts}} сердец, в [[#Первый/последующий год|первый/последующий год]]. {t|hearts}} будут проверены в порядке 10, 8, 6, 4, 2 (никакое другое количество не будет работать).<br />'''Ошибка:''' показано только в том случае, если равны <samp>{{t|dayOfWeek}}{{t|hearts}}</samp>.<br /><small>Например: <samp>Thu2_2: "Well, my Dad is back. Have you met him?#$b#I'm just glad he's okay."</samp></small>
 
|-
 
|-
| <tt>{{t|dayOfWeek}}{{t|hearts}}</tt>
+
| <samp>{{t|dayOfWeek}}{{t|hearts}}</samp>
| Dialogue shown on the given [[#Days of week|day of week]] if you have at least {{t|hearts}} hearts with them. The {{t|hearts}} will be checked in the order 10, 8, 6, 4, 2 (no other value will be recognised).<br /><small>Example: <tt>Sun4: "Hey, @.#$e#How's your day going?"</tt></small>
+
| Диалог, показанный в указанный [[#Дни недели|день недели]] если у игрока есть хотя бы {{t|hearts}} сердец. {{t|hearts}} будут проверены в порядке 10, 8, 6, 4, 2 (никакое другое количество не будет работать).<br /><small>Например: <samp>Sun4: "Hey, @.#$e#How's your day going?"</samp></small>
 
|-
 
|-
| <tt>{{t|dayOfWeek}}_{{t|firstOrLaterYear}}</tt>
+
| <samp>{{t|dayOfWeek}}_{{t|firstOrLaterYear}}</samp>
| Dialogue shown on the given [[#Days of week|day of week]] in the [[#First/later year|first/later year]].<br />'''Bug:''' only shown if an equivalent <tt>{{t|dayOfWeek}}</tt> key also exists.<br /><small>Example: <tt>Sat_1: "Dad's coming back soon!#$b#I hope he brings me some toys.$u"</tt></small>
+
| Диалог, показанный в указанный [[#Дни недели|день недели]] в [[#Первый/последующий год|первый/последующий год]].<br /><small>Например: <samp>Sat_1: "Dad's coming back soon!#$b#I hope he brings me some toys.$u"</samp></small>
 
|-
 
|-
| <tt>{{t|dayOfWeek}}</tt>
+
| <samp>{{t|dayOfWeek}}</samp>
| Dialogue shown on the given [[#Days of week|day of week]].<br /><small>Example: <tt>Mon: "Oh, hey. Taking a break from work?"</tt></small>
+
| Диалог, показанный в указанный [[#Дни недели|день недели]].<br /><small>Например: <samp>Mon: "Oh, hey. Taking a break from work?"</samp></small>
 
|}
 
|}
  
====Fallback====
+
====Запасной====
If none of the above match, the game will show the value with key <tt>NPC.cs.4061</tt> in <tt>Strings\StringsFromCSFiles.xnb</tt>. (English version: "Hi.")
+
Если ничего из вышеперечисленного не совпадает, игра покажет значение с ключом <samp>NPC.cs.4061</samp> расположенным в <samp>Strings\StringsFromCSFiles.xnb</samp>. (Английская версия: "Hi.")
  
===Marriage dialogue===
+
===Брачные диалоги===
<tt>Characters\Dialogue\MarriageDialogue.xnb</tt> contains dialogue text for all spouses, and each NPC may optionally have their own dialogue file like <tt>Characters\Dialogue\MarriageDialogueAbigail.xnb</tt>. When looking up a dialogue key, it will use the one in the NPC's file if it exists, else the one in the generic file, else a default text (usually blank).
+
<samp>Characters\Dialogue\MarriageDialogue.xnb</samp> contains dialogue text for all spouses, and each NPC may optionally have their own dialogue file like <samp>Characters\Dialogue\MarriageDialogueAbigail.xnb</samp>. When looking up a dialogue key, it will use the one in the NPC's file if it exists, else the one in the generic file, else a default text (usually blank).
  
 
Each dialogue entry has a key with one of these formats:
 
Each dialogue entry has a key with one of these formats:
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
! key format
+
! Ключ
! description
+
! Описание
 
|-
 
|-
| <tt>{{t|season}}_{{t|day}}</tt>
+
| <samp>{{t|season}}_{{t|day}}</samp>
| Dialogue shown when the day starts, if {{t|season}} and {{t|day}} match the current date.<br /><small>Example: <tt>fall_1</tt>: "''The scent is unmistakable... mushroom, rotting leaves, pumpkin. It's fall, alright. Isn't it lovely?''"</small>
+
| Dialogue shown when the day starts, if {{t|season}} and {{t|day}} match the current date.<br /><small>Example: <samp>fall_1</samp>: "''The scent is unmistakable... mushroom, rotting leaves, pumpkin. It's fall, alright. Isn't it lovely?''"</small>
 
|-
 
|-
| <tt>patio_{{t|spouse}}</tt>
+
| <samp>patio_{{t|spouse}}</samp>
| Dialogue shown when the NPC is standing on the patio.
+
| Диалог показан, когда NPC стоит во внутреннем дворике.
 
|-
 
|-
| <tt>{{t|weather}}_Day_{{t|random}}</tt>
+
| <samp>{{t|weather}}_Day_{{t|random}}</samp>
| Daily dialogue added when the day starts, based on the {{t|weather}} (<tt>Rainy</tt> if it's raining, else <tt>Indoor</tt> even if they're not indoors) and {{t|random}} (a random number between 0 and 4). If the game chooses a {{t|random}} value that doesn't have a dialogue, it'll use the default text instead.
+
| Daily dialogue added when the day starts, based on the {{t|weather}} (<samp>Rainy</samp> if it's raining, else <samp>Indoor</samp> even if they're not indoors) and {{t|random}} (a random number between 0 and 4). If the game chooses a {{t|random}} value that doesn't have a dialogue, it'll use the default text instead.
 
|-
 
|-
| <tt>Rainy_Night_{{t|random}}</tt>
+
| <samp>Rainy_Night_{{t|random}}</samp>
| Daily dialogue in the farmhouse after 6pm when it's raining. {{t|random}} is a number between 0–5 inclusively ''or'' the NPC name, each of which has an equal chance of being randomly chosen. If the game chooses a {{t|random}} value that doesn't have a dialogue, it'll use the default text instead.<br /><small>Example: <tt>Rainy_Night_3</tt>: "''On nights like this, I like to turn the light down low and just listen...$8''"</small>
+
| Daily dialogue in the farmhouse after 6pm when it's raining. {{t|random}} is a number between 0–5 inclusively ''or'' the NPC name, each of which has an equal chance of being randomly chosen. If the game chooses a {{t|random}} value that doesn't have a dialogue, it'll use the default text instead.<br /><small>Example: <samp>Rainy_Night_3</samp>: "''On nights like this, I like to turn the light down low and just listen...$8''"</small>
 
|-
 
|-
| <tt>Indoor_Night_{{t|random}}
+
| <samp>Indoor_Night_{{t|random}}
 
| Daily dialogue in the farmhouse after 6pm when it's ''not'' raining. {{t|random}} is a number between 0–4 inclusively ''or'' the NPC name, each of which has an equal chance of being randomly chosen. If the game chooses a {{t|random}} value that doesn't have a dialogue, it'll use the default text instead.
 
| Daily dialogue in the farmhouse after 6pm when it's ''not'' raining. {{t|random}} is a number between 0–4 inclusively ''or'' the NPC name, each of which has an equal chance of being randomly chosen. If the game chooses a {{t|random}} value that doesn't have a dialogue, it'll use the default text instead.
 
|-
 
|-
| <tt>funLeave_{{t|spouse}}</tt>
+
| <samp>funLeave_{{t|spouse}}</samp>
 
| TODO
 
| TODO
 
|-
 
|-
| <tt>jobLeave_{{t|spouse}}</tt>
+
| <samp>jobLeave_{{t|spouse}}</samp>
 
| TODO
 
| TODO
 
|-
 
|-
| <tt>funReturn_{{t|spouse}}</tt>
+
| <samp>funReturn_{{t|spouse}}</samp>
| Dialogue shown after 1pm when they enter the farmhouse but before reaching their target position, but only on Monday (any NPC) or Friday (if not Maru/Penny/Harvey).<br /><small>Example: <tt>funReturn_Abigail</tt>: "''Hey! Did you have a good day? Mine went well. It was refreshing to take a walk.$h''"</small>
+
| Dialogue shown after 1pm when they enter the farmhouse but before reaching their target position, but only on Monday (any NPC) or Friday (if not Maru/Penny/Harvey).<br /><small>Example: <samp>funReturn_Abigail</samp>: "''Hey! Did you have a good day? Mine went well. It was refreshing to take a walk.$h''"</small>
 
|-
 
|-
| <tt>jobReturn_{{t|spouse}}</tt>
+
| <samp>jobReturn_{{t|spouse}}</samp>
| Dialogue shown after 1pm when they enter the farmhouse but before reaching their target position, but only if <tt>funReturn</tt> isn't shown instead.<br /><small>Example: <tt>jobReturn_Penny</tt>: "''#$c .5#Good evening. My day was fine, thanks! How was yours?$h#$e#Jas and Vincent weren't behaving very well today. I'm still all wound up...''"</small>
+
| Dialogue shown after 1pm when they enter the farmhouse but before reaching their target position, but only if <samp>funReturn</samp> isn't shown instead.<br /><small>Example: <samp>jobReturn_Penny</samp>: "''#$c .5#Good evening. My day was fine, thanks! How was yours?$h#$e#Jas and Vincent weren't behaving very well today. I'm still all wound up...''"</small>
 
|-
 
|-
| <tt>{{t|season}}_{{t|spouse}}</tt>
+
| <samp>{{t|season}}_{{t|spouse}}</samp>
| Dialogue shown at 9+ heart levels with a 5% chance each day.<br /><small>Example: <tt>fall_Abigail</tt>: "''Do I smell pumpkin on you? Maybe I'm just dreaming...$h''"</small>
+
| Dialogue shown at 9+ heart levels with a 5% chance each day.<br /><small>Example: <samp>fall_Abigail</samp>: "''Do I smell pumpkin on you? Maybe I'm just dreaming...$h''"</small>
 
|-
 
|-
| <tt>Outdoor_{{t|spouse}}</tt>
+
| <samp>Outdoor_{{t|spouse}}</samp>
| Dialogue shown on the farm with a 20% chance.<br /><small>Example: <tt>Outdoor_Abigail</tt>: "''I'm just going to hang out here, okay?#$e#There's a lot of interesting bugs and things out here. *chuckle*$h''"</small>
+
| Dialogue shown on the farm with a 20% chance.<br /><small>Example: <samp>Outdoor_Abigail</samp>: "''I'm just going to hang out here, okay?#$e#There's a lot of interesting bugs and things out here. *chuckle*$h''"</small>
 
|-
 
|-
| <tt>Outdoor_{{t|random}}</tt>
+
| <samp>Outdoor_{{t|random}}</samp>
| Dialogue shown on the farm with an 80% chance. {{t|random}} is a number 0–4, used to randomly select an entry.<br /><small>Example: <tt>Outdoor_3</tt>: "''It's pretty cool that we have a cave on our property. It's something I always dreamed about.$h''"</small>
+
| Dialogue shown on the farm with an 80% chance. {{t|random}} is a number 0–4, used to randomly select an entry.<br /><small>Example: <samp>Outdoor_3</samp>: "''It's pretty cool that we have a cave on our property. It's something I always dreamed about.$h''"</small>
 
|-
 
|-
| <tt>spouseRoom_{{t|spouse}}</tt>
+
| <samp>spouseRoom_{{t|spouse}}</samp>
| Dialogue shown when the NPC is in their room.<br /><small>Example: <tt>spouseRoom_Abigail</tt>: "''$c .5#I got up a little before you and fed David Jr. He's very active this morning.#$e#I hope you don't mind the guinea pig smell."''</small>
+
| Dialogue shown when the NPC is in their room.<br /><small>Example: <samp>spouseRoom_Abigail</samp>: "''$c .5#I got up a little before you and fed David Jr. He's very active this morning.#$e#I hope you don't mind the guinea pig smell."''</small>
 
|-
 
|-
| <tt>OneKid_{{t|random}}</tt>
+
| <samp>OneKid_{{t|random}}</samp>
| Dialogue shown when standing in the kitchen, if they have one child. {{t|random}} is a number 0–4, used to randomly select an entry.<br /><small><tt>OneKid_1</tt>: "''I wonder if %kid1 will grow up to be a farmer like you?''"</small>
+
| Dialogue shown when standing in the kitchen, if they have one child. {{t|random}} is a number 0–4, used to randomly select an entry.<br /><small><samp>OneKid_1</samp>: "''I wonder if %kid1 will grow up to be a farmer like you?''"</small>
 
|-
 
|-
| <tt>TwoKids_{{t|random}}</tt>
+
| <samp>TwoKids_{{t|random}}</samp>
| Dialogue shown when standing in the kitchen, if they have two children. {{t|random}} is a number 0–4, used to randomly select an entry.<br /><small><tt>TwoKids_2</tt>: "''I had a dream that %kid2 will grow up to be a famous monster hunter. I've already been thinking about a little armor set.''"</small>
+
| Dialogue shown when standing in the kitchen, if they have two children. {{t|random}} is a number 0–4, used to randomly select an entry.<br /><small><samp>TwoKids_2</samp>: "''I had a dream that %kid2 will grow up to be a famous monster hunter. I've already been thinking about a little armor set.''"</small>
 
|-
 
|-
| <tt>{{t|affection}}_{{t|random}}</tt>
+
| <samp>{{t|affection}}_{{t|random}}</samp>
| Dialogue shown inside the farmhouse between 11am and 6pm, ''or'' when the day starts if a different dialogue isn't selected. {{t|affection}} is randomly <tt>Bad</tt> or <tt>Neutral</tt> if they have less than 9 hearts; 50% chance of <tt>Good</tt> and 75% chance of <tt>Good</tt> if you have 10+ or 11+ hearts respectively; else <tt>Neutral</tt> {{t|random}} is a number 0–9, used to randomly select an entry.<br /><small>Example: <tt>Good_5</tt>: "''I was just admiring the mermaid's pendant you gave me... I'll proudly wear this to my grave.$l''"</small>
+
| Dialogue shown inside the farmhouse between 11am and 6pm, ''or'' when the day starts if a different dialogue isn't selected. {{t|affection}} is randomly <samp>Bad</samp> or <samp>Neutral</samp> if they have less than 9 hearts; 50% chance of <samp>Good</samp> and 75% chance of <samp>Good</samp> if you have 10+ or 11+ hearts respectively; else <samp>Neutral</samp> {{t|random}} is a number 0–9, used to randomly select an entry.<br /><small>Example: <samp>Good_5</samp>: "''I was just admiring the mermaid's pendant you gave me... I'll proudly wear this to my grave.$l''"</small>
 
|}
 
|}
  
===Event files===
+
===Файлы событий===
<tt>Data\Events\*.xnb</tt> contains event scripts, including any dialogue in the event (see [[Modding:Event data]]).
+
<samp>Data\Events\*.xnb</samp> содержит сценарии событий, включая любой диалог в событии (смотри [[Модификации:События]]).
  
===Animation descriptions===
+
===Описание анимации===
<tt>Data\animationDescriptions.xnb</tt> contains short bits of dialogue to go with certain schedule points.
+
<samp>Data\animationDescriptions.xnb</samp> содержит короткие фрагменты диалога, соответствующие определенным пунктам расписания.
  
===Strings from CS files===
+
===Строки из CS файлов===
<tt>Strings\StringsFromCSFiles.xnb</tt> contains miscellaneous translations. That includes NPC dialogue defined in the code, dialogue that's shared between multiple characters, dialogue for some hardcoded events like marriage, etc.
+
<samp>Strings\StringsFromCSFiles.xnb</samp> содержит разные переводы. Включает диалог NPC, определенный в коде, диалог, который разделяется между несколькими персонажами, диалог для некоторых жестко запрограммированных событий, таких как брак и т.д.
  
The file has entries in the form <tt>"<key>": "dialogue string"</tt>, where the key is an arbitrary unique identifier. These must exactly match the key expected by the game, but the keys are just unique identifiers &mdash; even though most keys look like <tt>{{t|file name}}.{{t|line number}}</tt>, that's just the convention originally used to assign IDs and it has no meaning or effect (nor does it even necessarily match the current file name or line number).
+
Файл содержит записи в форме <samp>"<key>": "dialogue string"</samp>,где ключом является произвольный уникальный идентификатор. Они должны точно соответствовать ключу, ожидаемому игрой, но ключи-это просто уникальные идентификаторы &mdash; даже несмотря на то, что большинство ключей выглядят как <samp>{{t|file name}}. {{t|line number}}</samp>, это просто соглашение, первоначально использовавшееся для присвоения идентификаторов, и оно не имеет никакого значения или эффекта (и даже не обязательно совпадает с текущим именем файла или номером строки).
  
====NPC-specific generic dialogue====
+
====Общий диалог, специфичный для NPC====
With some ingenuity, you can make each NPC respond differently instead of using the normal static dialogue. For example, you can use {{nexus mod|1915|Content Patcher}} to change <tt>NPC.cs.3962</tt> and <tt>NPC.cs.3963</tt> (to give a bouquet), and <tt>NPC.cs.3980</tt> (for the mermaid pendant acceptance):
+
Проявив некоторую изобретательность, вы можете заставить каждого NPC реагировать по-разному вместо использования обычного статического диалога. Например, вы можете использовать {{nexus mod|1915|Content Patcher}} для изменения <samp>NPC.cs.3962</samp> и <samp>NPC.cs.3963</samp> (чтобы подарить букет), и <samp>NPC.cs.3980</samp> (для принятия кулона русалки):
 
<syntaxhighlight lang="json">
 
<syntaxhighlight lang="json">
 
{
 
{
Строка 177: Строка 180:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
In this example, each NPC will get their response from the <tt>give_flowersA</tt>, <tt>give_flowersB</tt>, and <tt>give_pendant</tt> dialogue key in their [[Modding:Dialogue#Character-specific dialogue|character dialogue]] files. (See [[#Format|format]] below for more info on the syntax.) Note that these should be added for all datable characters to avoid errors. For example, you could add this for Haley:
+
В этом примере каждый NPC получит свой ответ <samp>give_flowersA</samp>, <samp>give_flowersB</samp>, и <samp>give_pendant</samp> ключи диалога в их файлах [[Модификации:Диалоги#Общий диалог, специфичный для NPC|диалога]]. (Смотри [[#Формат|формат]] ниже приведена дополнительная информация о синтаксисе.) Обратите внимание, что они должны быть добавлены для всех вариантов, чтобы избежать ошибок. Например, вы могли бы добавить это для Хейли:
 
<syntaxhighlight lang="json">
 
<syntaxhighlight lang="json">
 
{
 
{
Строка 190: Строка 193:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
This can be used for other generic responses, and you even can avoid the "Give Bouquet" by asking for an answered question's ID.
+
Это можно использовать для других общих ответов, и вы даже можете избежать "Подарить букет", запросив ID ответа на вопрос.
  
==Algorithm==
+
==Алгоритм==
The game finds dialogue as follows:
+
Игра находит диалог следующим образом:
  
# Event dialogue is read from the appropriate event commands (see [[Modding:Event data]]).
+
# Диалог событий считывается из соответствующих команд событий (смотри [[Модификации:События]]).
# Location-specific dialogue is read from <tt>StringsFromCSFiles {{t|location}}.cs</tt>.
+
# Диалог по конкретному местоположению читается из <samp>StringsFromCSFiles {{t|location}}.cs</samp>.
# Else character dialogue is read from the character-specific files.
+
# Диалог с другими персонажами считывается из файлов, относящихся к конкретным персонажам.
# If no dialogues were found, the game resorts to hardcoded dialogue from the <tt>StringsFromCSFiles</tt> files (specifically keys prefixed with <tt>NPC.cs</tt> NPC.cs).
+
# Если диалоги не были найдены, игра прибегает к жестко закодированному диалогу из <samp>StringsFromCSFiles</samp> (в частности, ключи с префиксом <samp>NPC.cs</samp> NPC.cs).
  
==Format==
+
==Формат==
Dialogue text can contain tokens and commands which control the dialogue box, change the text (e.g. switch between gender-specific strings), inject values, etc. These are parsed by the <tt>Dialogue</tt> class.
+
Текст диалога может содержать маркеры и команды, которые управляют диалоговым окном, изменяют текст (например, переключаются между строками, зависящими от пола), вводят значения и т.д. Они анализируются с помощью класса <samp>Dialogue</samp>.
  
Special tokens:
+
Специальные символы:
  
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
! character
+
! Символ
! description
+
! Описание
 
|-
 
|-
| <tt>#</tt>
+
| <samp>#</samp>
| Separates two commands in a dialogue string.
+
| Разделяет две команды в строке диалога.
 
|-
 
|-
| <tt>{</tt>
+
| <samp>{</samp>
| TODO. Stands for "breakSpecialCharacter".
+
| TODO. Расшифровывается как "breakSpecialCharacter".
 
|-
 
|-
| <tt>^</tt>
+
| <samp>^</samp>
| Gender switch character. The text before it is shown for male farmers, the text after it for female farmers.<br />''Example: <code>Oh, good morning Mr. @!^Oh, good morning Ms. @!</code>''
+
| Меняет текст в зависимости от пола. Текст перед ним показан для персонажа-мужчины, после него-для персонажа-женщины.<br />''Например: <code>Oh, good morning Mr. @!^Oh, good morning Ms. @!</code>''
 
|-
 
|-
| <tt>%</tt>
+
| <samp>%</samp>
| Turns the dialogue box into a generic text box.<br />''Example: <code>"%Abigail is lost in her music."</code>''
+
| Превращает диалоговое окно в обычное текстовое поле.<br />''Например: <code>"%Abigail is lost in her music."</code>''
 
|-
 
|-
| <tt>*</tt>
+
| <samp>*</samp>
| TODO. Stands for "quickResponseDelineator".
+
| TODO. Расшифровывается как "quickResponseDelineator".
 
|}
 
|}
  
===Portrait commands===
+
===Портретные команды===
These set the portrait shown in the dialogue box for the current line of dialogue. If there's no portrait command, the neutral portrait is used.
+
Они задают портрет, отображаемый в диалоговом окне, для текущей строки диалога. Если команда "Портрет" отсутствует, используется нейтральный портрет.
  
Portraits are numbered left-to-right and top-to-bottom, starting at <tt>$0</tt>. The first six portraits are standard, and can be identified by the number (like <tt>$2</tt>) or a unique alias (like <tt>$s</tt>). All potential spouses and many other characters have these six portraits, but it's not fully consistent; for example, Caroline only has four.
+
Портреты пронумерованы слева направо сверху вниз, начиная с <samp>$0</samp>. Первые шесть портретов являются стандартными и могут быть идентифицированы по номеру (например, <samp>$2</samp>) или уникальному псевдониму (например, <samp>$s</samp>). У всех потенциальных супругов и многих других персонажей есть эти шесть портретов, но они не полностью соответствуют друг другу; например, Кэролайн имеет только четыре.
  
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
! numbered
+
! Номер
! alias
+
! Псевдоним
! description
+
! Описание
 
|-
 
|-
| <tt>$0</tt>
+
| <samp>$0</samp>
| <tt>$k</tt>
+
| <samp>$k</samp>
| Use their neutral portrait.
+
| Нейтральный портрет.
 
|-
 
|-
| <tt>$1</tt>
+
| <samp>$1</samp>
| <tt>$h</tt>
+
| <samp>$h</samp>
| Use their happy portrait.
+
| Счастливый портрет.
 
|-
 
|-
| <tt>$2</tt>
+
| <samp>$2</samp>
| <tt>$s</tt>
+
| <samp>$s</samp>
| Use their sad portrait.
+
| Печальный портрет.
 
|-
 
|-
| <tt>$3</tt>
+
| <samp>$3</samp>
| <tt>$u</tt>
+
| <samp>$u</samp>
| Use their unique portrait. This is different for each NPC: grumpy ([[Abigail]]), holding football ([[Alex]]), angry ([[Caroline]]), sick ([[Governor]]), etc.
+
| Использует уникальный портрет. Отличается для каждого NPC: сердитая ([[Абигейл]]), во время игры в футбол ([[Алекс]]), сердитая ([[Кэролайн]]), больной ([[Губернатор]]), и т.д..
 
|-
 
|-
| <tt>$4</tt>
+
| <samp>$4</samp>
| <tt>$l</tt>
+
| <samp>$l</samp>
| Use their love portrait.
+
| Использует любовный портрет.
 
|-
 
|-
| <tt>$5</tt>
+
| <samp>$5</samp>
| <tt>$a</tt>
+
| <samp>$a</samp>
| Use their angry portrait.
+
| Использует сердитый портрет.
 
|-
 
|-
| <tt>${{t|id}}</tt>
+
| <samp>${{t|id}}</samp>
 
|  
 
|  
| A custom portrait beyond the standard six.  
+
| Индивидуальный портрет, выходящий за рамки стандартных шести.
 
|}
 
|}
  
Portrait commands should be at the end of a dialogue line:
+
Команды портрета должны быть в конце строки диалога:
 
:<code>"fall_Fri6": "When I was a little girl, my father abandoned us.$s#$b#I'm sorry to make things uncomfortable for you...$u#$e#Anyway... How's the farming life going?",</code>
 
:<code>"fall_Fri6": "When I was a little girl, my father abandoned us.$s#$b#I'm sorry to make things uncomfortable for you...$u#$e#Anyway... How's the farming life going?",</code>
  
===Dialogue commands===
+
===Диалоговые команды===
  
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
! command
+
! Команда
! description
+
! Описание
 
|-
 
|-
| <tt>$q {{t|response IDs}} {{t|fallback}}#{{t|text}}</tt>
+
| <samp>$q {{t|response IDs}} {{t|fallback}}#{{t|text}}</samp>
| Show a dialogue box containing the given question text. If {{t|response IDs}} (a list delimited by <code>/</code>) contains an answer already given, the question is skipped (along with the rest of this dialogue line), and instead the dialogue entry identified by {{t|fallback}} will be appended to whatever precedes this $q command. The {{t|fallback}} dialogue typically uses a $p command to adjust the text based on the player's answer to this question. NOTE: dialogue questions must use unique IDs, similar to eventsSee [[Modding:Event_data|the event data page]] for more information.
+
| Показать диалоговое окно, содержащее заданный текст вопроса. Если {{t|response IDs}} (список, разделенный <code>/</code>) содержит ответ, вопрос пропускается (вместе с остальной частью этой строки диалога), и вместо этого запись диалога, идентифицированная {{t|fallback}} будет приложено ко всему, что предшествует этой команды $q. {{t|fallback}} В диалоге обычно используется команда $p для корректировки текста на основе ответа игрока на этот вопрос. ПРИМЕЧАНИЕ: в вопросах диалога должны использоваться уникальные идентификаторы, аналогичные событиямСмотри [[Модификации:События| события]] для дополнительной информации.
 
|-
 
|-
| <tt>$r {{t|response ID}} {{t|friendship}} {{t|reaction}}#{{t|answer text}}</tt>
+
| <samp>$r {{t|response ID}} {{t|friendship}} {{t|reaction}}#{{t|answer text}}</samp>
| Define a response option to a $q question dialogue. {{t|answer text}} is the text shown. {{t|response ID}} is used to group responses for future reference (multiple answers can share an answer ID). {{t|friendship}} defines the change in friendship value, positive or negative, if this response is selected. {{t|reaction}} names the dialogue entry from the NPC's <tt>Content\Characters\Dialogue\*.xnb</tt> file that will be the NPC's reaction if this response is selected by the player.
+
| Определите вариант ответа на диалог с вопросом $q. {{t|answer text}} отображаемый текст. {{t|response ID}} используется для группировки ответов для дальнейшего использования (несколько ответов могут иметь общий ID ответа). {{t|friendship}} определяет изменение дружбы, положительное или отрицательное, если выбран этот ответ. {{t|reaction}} выбирает запись из файла  диалога NPC <samp>Content\Characters\Dialogue\*.xnb</samp>, которая будет ответом NPC, если этот вариант будет выбран игроком.
 
|-
 
|-
| <tt>$p {{t|response ID}}#{{t|match text}}&#124;{{t|no-match text}}</tt>
+
| <samp>$p {{t|response ID}}#{{t|match text}}&#124;{{t|no-match text}}</samp>
| Stands for "dialoguePrerequisite". Shows different text depending on whether the player gave a particular answer to a previously-asked question. If {{t|response ID}} matches an answer the player gave, {{t|match text}} is shown; otherwise, {{t|no-match text}} is shown. These texts, separated by <code>&#124;</code>, can each contain multiple commands separated by <code>#</code>. This does not need to be the first command in the dialogue string.
+
| Расшифровывается как "dialoguePrerequisite". Показывает различный текст в зависимости от того, дал ли игрок конкретный ответ на ранее заданный вопрос. Если {{t|response ID}} соответствует ответу, который дал игрок, будет показан {{t|match text}}; в противном случае отображается {{t|no-match text}}. Тексты, разделенные <code>&#124;</code>, каждый из них содержать несколько команд, разделенных <code>#</code>. Это не обязательно должна быть первая команда в строке диалога.
 
|-
 
|-
| <tt>$b</tt>
+
| <samp>$b</samp>
| Indicates pauses in dialogue, where the player will need to click for the next part to load in a new dialogue box.
+
| Указывает на паузы в диалоге, когда игроку нужно будет нажать, чтобы следующая часть загрузилась в новом диалоговом окне.
 
|-
 
|-
| <tt>$e</tt>
+
| <samp>$e</samp>
| Ends the current dialogue, closing the dialogue box and resuming player control. The dialogue following <tt>$e</tt> will require a new interaction with the NPC.
+
| Завершает текущий диалог, закрывает диалоговое окно и возобновляет управление игроку. Диалог, следующий за <samp>$e</samp>, потребует нового взаимодействия с NPC.
 
|-
 
|-
| <tt>$k</tt>
+
| <samp>$k</samp>
| TODO. Stands for "dialogueKill".
+
| TODO. Расшифровывается как "dialogueKill".
 
|-
 
|-
| <tt>$c {{t|probability}}#{{t|text1}}#{{t|text2}}</tt>
+
| <samp>$c {{t|probability}}#{{t|text1}}#{{t|text2}}</samp>
| Show {{t|text1}} with a {{t|probability}} between 0 and 1; otherwise, show {{t|text2}}. E.g. <code>$c 0.9</code> for a 90% chance of {{t|text1}} and a 10% chance of {{t|text2}}. NOTE: Replacer commands (see below) do not work in {{t|text1}}. This does not need to be the first command in a dialogue string. It is unaffected by daily luck.
+
| Показать {{t|text1}} с шансом {{t|probability}} между 0 и 1; в противном случае показать {{t|text2}}. Например, <code>$c 0.9</code> для 90% шанса отображения {{t|text1}} и 10% шанса на отображение {{t|text2}}. ПРИМЕЧАНИЕ: Команды замены (смотри ниже) не работают в {{t|text1}}. Это не обязательно должна быть первая команда в строке диалога. На это не влияет ежедневная удача.
 
|-
 
|-
| <tt>$d {{t|state id}}#{{t|text1}}&#124;{{t|text2}}</tt>
+
| <samp>$d {{t|state id}}#{{t|text1}}&#124;{{t|text2}}</samp>
| Show one of two dialogue strings based on a predefined condition: <tt>bus</tt> (whether the bus is repaired), <tt>joja</tt> (whether the Joja Mart is still in business), <tt>cc</tt> or <tt>communitycenter</tt> (whether the Community Center is accessible), or <tt>kent</tt> (whether [[Kent]] has returned to the valley). The dialogue string must start with <tt>$d</tt>, everything up to the first <code>&#124;</code> symbol is shown if the condition matches, and everything after that is shown if the condition doesn't match.
+
| Показать одну из двух строк диалога на основе предопределенного условия: <samp>bus</samp> (отремонтирован ли автобус), <samp>joja</samp> (работает ли еще магазин Joja Mart), <samp>cc</samp> или <samp>communitycenter</samp> (
 +
доступен ли Общественный центр), или <samp>kent</samp> (вернулся ли [[Кент]] в долину). Строка диалога должна начинаться с <samp>$d</samp>, всё, вплоть до первого символа <code>&#124;</code>, отображается, если условие совпадает, и всё, что после этого, отображается, в противном случае.
  
For example:
+
Например:
 
<syntaxhighlight lang="js">"Mon2": "$d kent#Yesterday I visited Yoba's Altar to give thanks for my husband's safe return.|Yesterday I visited Yoba's Altar to ask for my husband's safe return.#$e#I'm trying to stay positive, but it's hard sometimes.$s"</syntaxhighlight>
 
<syntaxhighlight lang="js">"Mon2": "$d kent#Yesterday I visited Yoba's Altar to give thanks for my husband's safe return.|Yesterday I visited Yoba's Altar to ask for my husband's safe return.#$e#I'm trying to stay positive, but it's hard sometimes.$s"</syntaxhighlight>
 
|-
 
|-
| <tt>$y</tt>
+
| <samp>$y</samp>
| TODO. Stands for "dialogueQuickResponse"; A simpler form of question. Works like $q, but within one and the same text line. It doesn't have neither "dialoguePrerequisite" ($p) nor friendship point changes. It can be triggered indenitelly.<br /><small>Example: <tt>Penny: "$y 'Breakfast?_Yes please._Here you go._No, I'm good_More for me then!'"</tt></small>
+
| TODO. Расшифровывается как "dialogueQuickResponse"; Более простая форма вопроса. Записывается как $q, но в пределах одной и той же текстовой строки. В нем нет ни "dialoguePrerequisite" ($p), ни изменения дружбы.<br /><small>Например: <samp>Penny: "$y 'Breakfast?_Yes please._Here you go._No, I'm good_More for me then!'"</samp></small>
 
|-
 
|-
| <tt>$1 {{t|letter ID}}#{{t|1st-time text}} #$e# {{t|nth-time text}}</tt>
+
| <samp>$1 {{t|letter ID}}#{{t|1st-time text}} #$e# {{t|nth-time text}}</samp>
| Creates a line of dialogue which the character will only see once (at most). {{t|1st-time text}} is shown only if {{t|letter ID}} has not been marked as sent yet (and this marks it as sent); otherwise, {{t|nth-time text}} is shown.  {{t|letter ID}} should not correspond to an actual piece of mail (because it will not be sent), but it can be referenced by events or other dialogue lines.
+
| Создает линию диалога, которую персонаж увидит только один раз (не более). {{t|1st-time text}} отображается только в том случае, если {{t|letter ID}} еще не помечено как отправленное (помечает его как отправленное); в противном случае будет показан {{t|nth-time text}}.  {{t|letter ID}} не должно соответствовать фактическому письму (потому что оно не будет отправлено), но на него могут ссылаться события или другие строки диалога.
 
|-
 
|-
| <tt>%fork</tt>
+
| <samp>%fork</samp>
| Sets the the <tt>specialEventVariable1</tt> variable, which can be checked by a later <tt>fork</tt> event command. Mainly useful in reaction dialogue for <tt>$q</tt> questions during events.
+
| Устанавливает переменную <samp>specialEventVariable1</samp>, которая может быть проверена более поздней командой <samp>fork</samp>.В основном полезно в диалоге реакции на <samp>$q</samp> вопросы во время событий.
 
|-
 
|-
| <tt>[# # #]</tt>
+
| <samp>[# # #]</samp>
| Gives the player a random item, from the pool of item IDs within the brackets.
+
| Дает игроку случайный предмет из пула ID предметов в скобках.
 
|-
 
|-
| <tt>%revealtasteCharacterItemID</tt>
+
| <samp>%revealtasteCharacterItemID</samp>
| Reveals whether the named character loves, likes, dislikes, etc, the item specified. Example: %revealtasteLewis258 will cause Lewis's profile to show that he likes blueberries.
+
| Показывает, любит ли указанный персонаж (нравится, не нравится и т.д.) указанный предмет. Например: %revealtasteLewis258 заставит профиль Льюиса показать, что он любит чернику.
 
|}
 
|}
  
====Question example====
+
====Пример вопроса====
To understand how $q, $r, and $p work, an example may be helpful. Note how you can format the script to be easier to read:
+
Чтобы понять, как работают $q, $r и $p, может быть полезен пример. Обратите внимание, как вы можете отформатировать сценарий, чтобы его было легче читать:
  
 
<syntaxhighlight lang="yaml">
 
<syntaxhighlight lang="yaml">
Строка 347: Строка 351:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
The dialogue above triggers on any Friday in the summer. The NPC begins with a response that is always shown: "I think I'll go to the beach tomorrow!"
+
Приведенный выше диалог запускается в любую пятницу летом. NPC начинает с ответа, который всегда отображается: "Я думаю, что завтра пойду на пляж!"
  
Next they ask you a question.
+
Затем они задают вам вопрос.
 
<syntaxhighlight lang="yaml">#$q 305/306 beachquestion_followup#Would you like to go with me?</syntaxhighlight>
 
<syntaxhighlight lang="yaml">#$q 305/306 beachquestion_followup#Would you like to go with me?</syntaxhighlight>
  
'''$q''' starts the question. '''305/306''' checks to see if this question has been asked before, and if it has it sends you to the dialogue key '''beachquestion_followup'''. (Note that you can name your dialogue keys whatever you like which makes it easier to read.)
+
'''$q''' запускает вопрос. '''305/306''' проверяет, задавался ли этот вопрос ранее, и если да, то он отправляет вас на ключ диалога '''beachquestion_followup'''. (Обратите внимание, что вы можете называть свои диалоги как угодно, что облегчает чтение.)
  
Next are the responses the player can give. You can add any number of '''$r''' lines; here we have three:
+
Далее приведены ответы, которые может дать игрок. Вы можете добавить любое количество '''$r''' строк; здесь у нас есть три:
  
 
<syntaxhighlight lang="yaml">
 
<syntaxhighlight lang="yaml">
Строка 361: Строка 365:
 
     #$r 306 -10 beachquestion_no#No thank you.
 
     #$r 306 -10 beachquestion_no#No thank you.
 
</syntaxhighlight>
 
</syntaxhighlight>
If you say yes (first option), the game will store '''ID 305''' as the answer given to this question. Next, your friendship with that person increases by '''15'''. '''beachquestion_yes''' tells the script which dialogue key continuation to use as a response to your answer.
+
Если вы скажете "да" (первый вариант), игра сохранит '''ID 305''' как ответ, данный на этот вопрос. Далее, ваша дружба с этим NPC увеличивается на '''15'''. '''beachquestion_yes''' указывает сценарию, какое продолжение диалогового ключа использовать в качестве ответа на ваш ответ.
  
If you say no (second and third option) the game will store '''ID 306''' as the answer given, then depending on which answer you gave will either not change your friendship with the person, '''0''', or reduce it, '''-10'''. Then it will use either '''beachquestion_sorry''' or '''beachquestion_no''' to continue the dialogue.
+
Если вы скажете "нет" (второй и третий вариант), игра сохранит '''ID 306''' как ответ, данный на этот вопрос, в зависимости от того, какой ответ вы дали, ваша дружба с NPC изменится либо на, '''0''', либо на, '''-10'''. Тогда будет использоваться либо '''beachquestion_sorry''' или '''beachquestion_no''' для продолжения диалога.
  
Now we need to make dialogue keys for each response:
+
Теперь нам нужно создать диалоговые ключи для каждого ответа:
  
 
<syntaxhighlight lang="yaml">
 
<syntaxhighlight lang="yaml">
Строка 378: Строка 382:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Of note here is '''beachquestion_followup'''. If the player talks to the NPC again, '''$q 305/306''' will check that the question has already been answered and instead go directly to this key.
+
Следует отметить '''beachquestion_followup'''. Если игрок снова поговорит с NPC, '''$q 305/306''' игра проверит, что на вопрос уже дан ответ, и вместо повторных вопросов, перейдет непосредственно к этому ключу.
  
'''$p 305''' begins a variable response which means "'''if''' the player chose yes, say this line, '''else''' say this line instead". If the player answered yes, the NPC responds happily. Otherwise, they will comment that they need to find someone to go with them.
+
'''$p 305''' начинается переменная реакция, которая означает "'''если''' игрок выбрал "да", произнесите эту строку, '''иначе''' вместо этого произнесите эту строчку". Если игрок ответил "да", NPC отвечает радостно. OВ противном случае они скажут, что им нужно найти кого-то, кто пойдет с ними.
  
There is another variable response the next day:
+
На следующий день есть еще один переменный ответ:
  
 
<syntaxhighlight lang="yaml">
 
<syntaxhighlight lang="yaml">
Строка 393: Строка 397:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Once again the first line (The beach is lovely...) always shows up when the player talks to the NPC, but the next line depends on whether or not they've answered yes the previous day.
+
И снова первая строка (Пляж прекрасен...) всегда появляется, когда игрок разговаривает с NPC, но следующая строка зависит от того, ответили ли они " да " накануне или нет.
  
 
----
 
----
  
Here is another example from Haley's existing dialogue file. Note how the script formatting is harder to read, but the game is able to process both.
+
Вот еще один пример из существующего файла диалога Хейли. Обратите внимание, что форматирование сценария сложнее для чтения, но игра способна обрабатывать и то, и другое.
  
 
<syntaxhighlight lang="yaml">
 
<syntaxhighlight lang="yaml">
Строка 406: Строка 410:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
The first time the <code>summer_Sat</code> dialogue is chosen, neither response 42 nor 43 will have been given (because this question is the only one which has them as responses), so Haley will say, "Farming sounds so boring... What do you even do all day?" The player can select among these responses:
+
В первый раз, когда <code>summer_Sat</code> диалог выбран, ни 42, ни 43 ответа не будет дано (потому что этот вопрос-единственный, на который они даны в качестве ответов), поэтому Хейли скажет: "Сельское хозяйство звучит так скучно... Чем ты вообще занимаешься весь день?" Игрок может выбрать один из этих ответов:
  
* Care for plants
+
* Уход за растениями
* Explore the caves
+
* Исследование пещер
* Snoop around in your room
+
* Порыскать в своей комнате
* Dig for treasure
+
* Копание в поисках сокровищ
  
The third response, <code>$r 43 -10 summer_Sat_13#Snoop around in your room</code>, sets response ID 43, reduces Haley's friendship by 10 points, and brings up the dialogue <code>summer_Sat_13</code> (Haley says, "What? You'd better not be doing that!"). All of the other responses set response ID 42, increase Haley's friendship by 10 points, and bring up the dialogue <code>summer_Sat_12</code> ("Hmm... sounds like a lot of work.").
+
Третий ответ, <code>$r 43 -10 summer_Sat_13#Snoop around in your room</code>, устанавливает ответ ID 43, уменьшает дружбу Хейли на 10 пунктов и запускает диалог <code>summer_Sat_13</code> (Хейли говорит: "Что? Тебе лучше этого не делать!"). Все остальные ответы задают ответ с ID 42, увеличит дружбу Хейли на 10 пунктов и начнёт диалог <code>summer_Sat_12</code> ("Хм... похоже, много работы.").
  
The next time <code>summer_Sat</code> is chosen, one of the response IDs listed in the <code>$q</code> command will have been given (either 42 or 43). Therefore, the <code>$q</code> and everything after is scrapped, and dialogue <code>summer_Sat_old</code> is put in its place. This new dialogue uses the <code>$p</code> command to change Haley's dialogue based on whether or not you gave response ID 43 to any previous question. If you answered "Snoop around your room," everything before the <code>|</code> will be used, so Haley will now say, "Farming sounds so boring... Hey, you better not be snooping around in my room anymore!" If response ID 43 has not been given (in this case, you must have given response ID 42, i.e. one of the other three responses to the previous question), everything after the <code>|</code> will be used, so Haley will instead say, "Farming sounds so boring... But I guess it could get you in pretty good shape."
+
При следующем выборе <code>summer_Sat</code> будет указан один из ID ответа, перечисленных в команде <code>$q</code> (42 или 43). Следовательно, в <code>$q</code> и все, что после этого, отбрасывается, и диалог <code>summer_Sat_old</code> ставится на свое место. В этом новом диалоге используется команда <code>$p</code> чтобы изменить диалог Хейли на основе того, дали ли вы ответ с ID 43 на любой предыдущий вопрос. Если вы ответили "Snoop around your room,", все, что было до <code>|</code> будет использоваться, поэтому Хейли сейчас скажет,"Farming sounds so boring... Hey, you better not be snooping around in my room anymore!" Если ID ответа 43 не был указан (в этом случае вы должны были указать ID ответа 42, т. е. один из трех других ответов на предыдущий вопрос), всё после <code>|</code> будет использоваться, поэтому Хейли вместо этого скажет, "Farming sounds so boring... But I guess it could get you in pretty good shape."
  
===Replacer commands===
+
===Команды замены===
Replacer commands will be replaced with the relevant string. Note that only <tt>@</tt> works in mail entries.
+
Команды замены будут заменены соответствующей строкой. Обратите внимание, что только <samp>@</samp> работает в почтовых записях.
  
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
| <tt>@</tt>
+
! Команда
| Farmer's name.<br />''Example: <code>Hi there @!</code>''
+
! Описание
 
|-
 
|-
| <tt>%adj</tt>
+
| <samp>@</samp>
| Random adjective. (Defined in StringsFromCSFiles.xnb)
+
| Имя игрока.<br />''Например: <code>Hi there @!</code>''
 
|-
 
|-
| <tt>%noun</tt>
+
| <samp>%adj</samp>
| Random noun. (Defined in StringsFromCSFiles.xnb)
+
| Случайное прилагательное. (Определено в StringsFromCSFiles.xnb)
 
|-
 
|-
| <tt>%place</tt>
+
| <samp>%noun</samp>
| Random place name. (Defined in StringsFromCSFiles.xnb)
+
| Случайное существительное. (Определено в StringsFromCSFiles.xnb)
 
|-
 
|-
| <tt>%spouse</tt>
+
| <samp>%place</samp>
| The name of Farmer's spouse.
+
| Случайное название места. (Определено в StringsFromCSFiles.xnb)
 
|-
 
|-
| <tt>%name</tt>
+
| <samp>%spouse</samp>
| A randomly-generated name.  
+
| Имя супруга игрока.
 
|-
 
|-
| <tt>%firstnameletter</tt>
+
| <samp>%name</samp>
| The first half of the farmer's name (rounded down), like ''Nat'' if the farmer's name is Natalie.
+
| Случайно сгенерированное имя.
 
|-
 
|-
| <tt>%time</tt>
+
| <samp>%firstnameletter</samp>
| Current time.
+
| Первая половина имени игрока (округленная в меньшую сторону), как ''Nat'' если имя игрока Natalie.
 
|-
 
|-
| <tt>%band</tt>
+
| <samp>%time</samp>
| The name of Sam and Sebastian's band.
+
| Текущее время.
 
|-
 
|-
| <tt>%book</tt>
+
| <samp>%band</samp>
| The title of Elliott's book.
+
| Название группы Сэма и Себастьяна.
 
|-
 
|-
| <tt>%rival</tt>
+
| <samp>%book</samp>
| A random first name of the Farmer's gender from StringsFromCSFiles.xnb (keys Utility.cs.5499 through Utility.cs.5560).  Will not match the Farmer's name.
+
| Название книги Эллиота.
 
|-
 
|-
| <tt>%pet</tt>
+
| <samp>%rival</samp>
| The name of Farmer's pet.
+
| Случайное имя пола фермера из StringsFromCSFiles.xnb (ключи Utility.cs.5499 через Utility.cs.5560). Не будет соответствовать имени игрока.
 
|-
 
|-
| <tt>%farm</tt>
+
| <samp>%pet</samp>
| Farm name.
+
| Имя домашнего животного игрока.
 
|-
 
|-
| <tt>%favorite</tt>
+
| <samp>%farm</samp>
| The Farmer's favorite thing.
+
| Название фермы.
 
|-
 
|-
| <tt>%kid1</tt>
+
| <samp>%favorite</samp>
| The name of Farmer's first child.
+
| Любимое занятие игрока.
 
|-
 
|-
| <tt>%kid2</tt>
+
| <samp>%kid1</samp>
| The name of Farmer's second child.
+
| Имя первого ребенка игрока.
 +
|-
 +
| <samp>%kid2</samp>
 +
| Имя второго ребенка игрока.
 
|}
 
|}
  
==Values==
+
==Значения==
The game uses these predefined values in some dialogue keys. This section is linked from above where needed.
+
Игра использует эти предопределенные значения в некоторых диалогах.
  
===Days of week===
+
===Дни недели===
* <tt>Mon</tt>
+
* <samp>Mon</samp> (Понедельник)
* <tt>Tue</tt>
+
* <samp>Tue</samp> (Вторник)
* <tt>Wed</tt>
+
* <samp>Wed</samp> (Среда)
* <tt>Thu</tt>
+
* <samp>Thu</samp> (Четверг)
* <tt>Fri</tt>
+
* <samp>Fri</samp> (Пятница)
* <tt>Sat</tt>
+
* <samp>Sat</samp> (Суббота)
* <tt>Sun</tt>
+
* <samp>Sun</samp> (Воскресенье)
  
===Seasons===
+
===Сезоны===
* <tt>spring</tt>
+
* <samp>spring</samp> (Весна)
* <tt>summer</tt>
+
* <samp>summer</samp> (Лето)
* <tt>fall</tt>
+
* <samp>fall</samp> (Осень)
* <tt>winter</tt>
+
* <samp>winter</samp> (Зима)
  
===First/later year===
+
===Первый/последующий год===
In some cases the game uses a "first/later year" value for dialogue conditions. This only has two possible values:
+
В некоторых случаях игра использует значение "первый/последующий год" для условий диалога. Возможны два следующих значения:
  
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
! value
+
! Значение
! meaning
+
! Описание
 
|-
 
|-
| <tt>1</tt>
+
| <samp>1</samp>
| Occurs in the first year.
+
| Происходит в первый год.
 
|-
 
|-
| <tt>2</tt>
+
| <samp>2</samp>
| Occurs in any year after the first (not only year 2).
+
| Происходит в любой год после первого (не только 2-й год).
 
|}
 
|}
  
===Response IDs===
+
===ID ответов===
A response ID identifies an answer chosen by the player in response to a [[#Question example|question dialogue]]. In some cases a question may have several answers with the same ID (e.g. several variations of "yes"), or use the same ID for ''every'' question (in which case the ID just shows whether the player has answered the question).
+
ID ответа идентифицирует ответ, выбранный игроком в ответ на [[#Примеры вопросов|вопросы]]. В некоторых случаях на вопрос может быть несколько ответов с одинаковыми ID (например, несколько вариантов "да"), или используйте один и тот же идентификатор для "каждого" вопроса (в этом случае идентификатор просто показывает, ответил ли игрок на вопрос).
  
Mods can add their own response IDs, but here are the vanilla IDs as of {{version|1.3.36}}¹:
+
Моды могут добавлять свои собственные ID ответов, но вот ванильные идентификаторы по состоянию на {{version|1.3.36}}¹:
  
; Dialogue
+
; Диалоги
: {| class="wikitable"
+
: {|class="wikitable"
 
|-
 
|-
 
! NPC
 
! NPC
! question
+
! Вопрос
! answers
+
! Ответ
 
|-
 
|-
| Abigail
+
| Абигейл
| <tt>fall_Sun</tt><br />''I was thinking about dyeing my hair again... what do you think?''
+
| <samp>fall_Sun</samp><br />''I was thinking about dyeing my hair again... what do you think?''
| <tt>27</tt>: ''Dye it black.''<br /><tt>27</tt>: ''Why not blonde?''<br /><tt>27</tt>: ''How about bubblegum pink?''<br /><tt>28</tt>: ''I like your hair just the way it is!''
+
| <samp>27</samp>: ''Dye it black.''<br /><samp>27</samp>: ''Why not blonde?''<br /><samp>27</samp>: ''How about bubblegum pink?''<br /><samp>28</samp>: ''I like your hair just the way it is!''
 
|-
 
|-
| Abigail
+
| Абигейл
| <tt>summer_Sun</tt><br />''Okay... pretend you just won a free vacation. Where would you go?''
+
| <samp>summer_Sun</samp><br />''Okay... pretend you just won a free vacation. Where would you go?''
| <tt>25</tt>: ''The beach''<br /><tt>26</tt>: ''In a dark cave''<br /><tt>26</tt>: ''The old, gnarled forest''<br /><tt>25</tt>: ''Joja Mega-Mall''
+
| <samp>25</samp>: ''The beach''<br /><samp>26</samp>: ''In a dark cave''<br /><samp>26</samp>: ''The old, gnarled forest''<br /><samp>25</samp>: ''Joja Mega-Mall''
 
|-
 
|-
| Abigail
+
| Абигейл
| <tt>Sun2</tt><br />''@, What do you think happens to us after we die?''
+
| <samp>Sun2</samp><br />''@, What do you think happens to us after we die?''
| <tt>17</tt>: ''I have no idea.''<br /><tt>18</tt>: ''We come back as spooky ghosts.''<br /><tt>17</tt>: ''We go to Heaven.''<br /><tt>18</tt>: ''Our energy bodies enter the astral plane.''<br /><tt>17</tt>: ''Nothing. We just cease to exist.''
+
| <samp>17</samp>: ''I have no idea.''<br /><samp>18</samp>: ''We come back as spooky ghosts.''<br /><samp>17</samp>: ''We go to Heaven.''<br /><samp>18</samp>: ''Our energy bodies enter the astral plane.''<br /><samp>17</samp>: ''Nothing. We just cease to exist.''
 
|-
 
|-
| Abigail
+
| Абигейл
| <tt>winter_Sun</tt><br />''I made these two drawings. What do you think?''
+
| <samp>winter_Sun</samp><br />''I made these two drawings. What do you think?''
| <tt>29</tt>: ''I like the jungle island and the tiger.''<br /><tt>30</tt>: ''I like the orc with the battleaxe.''<br /><tt>29</tt>: ''I don't like either of them.''
+
| <samp>29</samp>: ''I like the jungle island and the tiger.''<br /><samp>30</samp>: ''I like the orc with the battleaxe.''<br /><samp>29</samp>: ''I don't like either of them.''
 
|-
 
|-
| Alex
+
| Алекс
| <tt>fall_Wed</tt><br />''Do you think the ladies like my haircut?^What do you think about my haircut?''
+
| <samp>fall_Wed</samp><br />''Do you think the ladies like my haircut?^What do you think about my haircut?''
| <tt>54</tt>: ''It looks very fashionable.''<br /><tt>55</tt>: ''It looks like some kind of fungal growth.''
+
| <samp>54</samp>: ''It looks very fashionable.''<br /><samp>55</samp>: ''It looks like some kind of fungal growth.''
 
|-
 
|-
| Alex
+
| Алекс
| <tt>summer_Wed</tt><br />''Do you think I'll ever turn pro?''
+
| <samp>summer_Wed</samp><br />''Do you think I'll ever turn pro?''
| <tt>52</tt>: ''You're destined to be a sports legend''<br /><tt>52</tt>: ''Maybe, if you practice a lot''<br /><tt>53</tt>: ''No, you'll most likely fail and become a salesman''
+
| <samp>52</samp>: ''You're destined to be a sports legend''<br /><samp>52</samp>: ''Maybe, if you practice a lot''<br /><samp>53</samp>: ''No, you'll most likely fail and become a salesman''
 
|-
 
|-
| Alex
+
| Алекс
| <tt>Wed</tt><br />''I'd ask you to throw the ball around, but you don't really seem like the sports type.^If you weren't a girl I'd ask you to play catch.''
+
| <samp>Wed</samp><br />''I'd ask you to throw the ball around, but you don't really seem like the sports type.^If you weren't a girl I'd ask you to play catch.''
| <tt>6</tt>: ''I'm fine just watching you from a distance.''<br /><tt>5</tt>: ''I want to play catch with you!''<br /><tt>5</tt>: ''(angry) What's that supposed to mean?''
+
| <samp>6</samp>: ''I'm fine just watching you from a distance.''<br /><samp>5</samp>: ''I want to play catch with you!''<br /><samp>5</samp>: ''(angry) What's that supposed to mean?''
 
|-
 
|-
| Clint
+
| Клинт
| <tt>Mon</tt><br />''I bet you can't guess what my great-grandfather was...''
+
| <samp>Mon</samp><br />''I bet you can't guess what my great-grandfather was...''
| <tt>9</tt>: ''A blacksmith.''<br /><tt>9</tt>: ''A silly clown.''<br /><tt>9</tt>: ''A sarcastic jerk.''
+
| <samp>9</samp>: ''A blacksmith.''<br /><samp>9</samp>: ''A silly clown.''<br /><samp>9</samp>: ''A sarcastic jerk.''
 
|-
 
|-
| Haley
+
| Хейли
| <tt>fall_Sat</tt><br />''*sigh*...what do you think I should do today?''
+
| <samp>fall_Sat</samp><br />''*sigh*...what do you think I should do today?''
| <tt>44</tt>: ''Watercolor painting''<br /><tt>44</tt>: ''Relax and read a magazine''<br /><tt>44</tt>: ''Stop being a selfish crybaby''
+
| <samp>44</samp>: ''Watercolor painting''<br /><samp>44</samp>: ''Relax and read a magazine''<br /><samp>44</samp>: ''Stop being a selfish crybaby''
 
|-
 
|-
| Haley
+
| Хейли
| <tt>summer_Sat</tt><br />''What do you even do all day?''
+
| <samp>summer_Sat</samp><br />''What do you even do all day?''
| <tt>42</tt>: ''Care for plants''<br /><tt>42</tt>: ''Explore the caves''<br /><tt>43</tt>: ''Snoop around in your room''<br /><tt>42</tt>: ''Dig for treasure''
+
| <samp>42</samp>: ''Care for plants''<br /><samp>42</samp>: ''Explore the caves''<br /><samp>43</samp>: ''Snoop around in your room''<br /><samp>42</samp>: ''Dig for treasure''
 
|-
 
|-
| Leah
+
| Лея
| <tt>Mon</tt><br />''So why did you become a farmer?''
+
| <samp>Mon</samp><br />''So why did you become a farmer?''
| <tt>21</tt>: ''I want to make tons of money.''<br /><tt>22</tt>: ''It's more "real" than living in the city.''<br /><tt>211132</tt>: ''To follow in grandpa's footsteps.''<br /><tt>22</tt>: ''I wanted to escape my old life.''
+
| <samp>21</samp>: ''I want to make tons of money.''<br /><samp>22</samp>: ''It's more "real" than living in the city.''<br /><samp>211132</samp>: ''To follow in grandpa's footsteps.''<br /><samp>22</samp>: ''I wanted to escape my old life.''
 
|-
 
|-
| Maru
+
| Мару
| <tt>summer_Thu</tt><br />''I've decided I'm going to build a robot someday.''
+
| <samp>summer_Thu</samp><br />''I've decided I'm going to build a robot someday.''
| <tt>35</tt>: ''That should be very easy for you''<br /><tt>36</tt>: ''You should be more realistic''<br /><tt>35</tt>: ''It sounds challenging''
+
| <samp>35</samp>: ''That should be very easy for you''<br /><samp>36</samp>: ''You should be more realistic''<br /><samp>35</samp>: ''It sounds challenging''
 
|-
 
|-
| Maru
+
| Мару
| <tt>Sun</tt><br />''Do you have fun working on the farm?''
+
| <samp>Sun</samp><br />''Do you have fun working on the farm?''
| <tt>3</tt>: ''Yes.''<br /><tt>4</tt>: ''No.''
+
| <samp>3</samp>: ''Yes.''<br /><samp>4</samp>: ''No.''
 
|-
 
|-
| Penny
+
| Пенни
| <tt>Mon4</tt><br />''But it's best not to dwell on bad things, right?''
+
| <samp>Mon4</samp><br />''But it's best not to dwell on bad things, right?''
| <tt>7</tt>: ''Right. It's best to be positive!''<br /><tt>8</tt>: ''I think it's good to be realistic.''
+
| <samp>7</samp>: ''Right. It's best to be positive!''<br /><samp>8</samp>: ''I think it's good to be realistic.''
 
|-
 
|-
| Sam
+
| Сем
| <tt>Wed</tt><br />''Hey.. What do you think my new song should be about?''
+
| <samp>Wed</samp><br />''Hey.. What do you think my new song should be about?''
| <tt>20</tt>: ''Farming, mining, and chopping wood.''<br /><tt>8820</tt>: ''A city in the sea.''<br /><tt>8821</tt>: ''Trains.''<br /><tt>19</tt>: ''Choose anything. It'll still be a horrible song.''
+
| <samp>20</samp>: ''Farming, mining, and chopping wood.''<br /><samp>8820</samp>: ''A city in the sea.''<br /><samp>8821</samp>: ''Trains.''<br /><samp>19</samp>: ''Choose anything. It'll still be a horrible song.''
 
|-
 
|-
| Sebastian
+
| Себастиан
| <tt>fall_Fri</tt><br />''Do you read, @?''
+
| <samp>fall_Fri</samp><br />''Do you read, @?''
| <tt>62</tt>: ''Yep. The classics.''<br /><tt>63</tt>: ''Only Sci-fi and Fantasy''<br /><tt>62</tt>: ''I like a good Romance''<br /><tt>63</tt>: ''No, I don't read books''
+
| <samp>62</samp>: ''Yep. The classics.''<br /><samp>63</samp>: ''Only Sci-fi and Fantasy''<br /><samp>62</samp>: ''I like a good Romance''<br /><samp>63</samp>: ''No, I don't read books''
 
|-
 
|-
| Sebastian
+
| Себастиан
| <tt>Fri2</tt><br />''So what do you do when you aren't working?''
+
| <samp>Fri2</samp><br />''So what do you do when you aren't working?''
| <tt>15</tt>: ''More Farming''<br /><tt>16</tt>: ''Comic books''<br /><tt>15</tt>: ''Shopping''<br /><tt>15</tt>: ''Sports''
+
| <samp>15</samp>: ''More Farming''<br /><samp>16</samp>: ''Comic books''<br /><samp>15</samp>: ''Shopping''<br /><samp>15</samp>: ''Sports''
 
|}
 
|}
  
; Events
+
; События
: {| class="wikitable"
+
: {|class="wikitable"
 
|-
 
|-
! event
+
! Событие
! question
+
! Вопрос
! answers
+
! Ответ
 
|-
 
|-
| [[Abigail#Four Hearts|Abigail's 4-heart event]]<!--2/f Abigail 1000/w rainy/t 1200 1900/z winter-->
+
| [[Абигейл#Четыре сердечка|Событие 4-х сердечек для Абигейл]]<!--2/f Abigail 1000/w rainy/t 1200 1900/z winter-->
 
| ''@! Why are you out here in the rain?$7''
 
| ''@! Why are you out here in the rain?$7''
| <tt>32</tt>: ''Just doing some work''<br /><tt>32</tt>: ''Enjoying the weather''<br /><tt>32</tt>: ''I could ask you the same question''
+
| <samp>32</samp>: ''Just doing some work''<br /><samp>32</samp>: ''Enjoying the weather''<br /><samp>32</samp>: ''I could ask you the same question''
 
|-
 
|-
| [[Abigail#Six Hearts|Abigail's 6-heart event]]<!--4/f Abigail 1500/t 2100 2400/w sunny-->
+
| [[Абигейл#Шесть сердечек|Событие 6-ти сердечек для Абигейл]]<!--4/f Abigail 1500/t 2100 2400/w sunny-->
 
| ''You've used a sword before, haven't you?''
 
| ''You've used a sword before, haven't you?''
| <tt>847951</tt>: ''Yes, and it's exciting!''<br /><tt>847951</tt>: ''Yes, but only in self-defense''<br /><tt>847951</tt>: ''Yes, but it's dangerous. You should stay safe.''<br /><tt>847951</tt>: ''No''
+
| <samp>847951</samp>: ''Yes, and it's exciting!''<br /><samp>847951</samp>: ''Yes, but only in self-defense''<br /><samp>847951</samp>: ''Yes, but it's dangerous. You should stay safe.''<br /><samp>847951</samp>: ''No''
 
|-
 
|-
| [[Abigail#Ten Hearts|Abigail's 10-heart event]]<!--901756/f Abigail 2500/t 1700 2400/o Abigail-->
+
| [[Абигейл#Десять сердечек|Событие 10-ти сердечек для Абигейл]]<!--901756/f Abigail 2500/t 1700 2400/o Abigail-->
 
| ''*sniff*$s''
 
| ''*sniff*$s''
| <tt>776589</tt>: ''What happened?''<br /><tt>776589</tt>: ''Are you okay?''
+
| <samp>776589</samp>: ''What happened?''<br /><samp>776589</samp>: ''Are you okay?''
 
|-
 
|-
| [[Abigail#Ten Hearts|Abigail's 10-heart event]]<!--901756/f Abigail 2500/t 1700 2400/o Abigail-->
+
| [[Абигейл#Десять сердечек|Событие 10-ти сердечек для Абигейл]]<!--901756/f Abigail 2500/t 1700 2400/o Abigail-->
 
| ''I guess I'm not as tough as I thought...$8''
 
| ''I guess I'm not as tough as I thought...$8''
| <tt>34</tt>: ''You're safe with me.''<br /><tt>34</tt>: ''I get scared too.''<br /><tt>34</tt>: ''You're crying like a little baby. Stop.''
+
| <samp>34</samp>: ''You're safe with me.''<br /><samp>34</samp>: ''I get scared too.''<br /><samp>34</samp>: ''You're crying like a little baby. Stop.''
 
|-
 
|-
| [[Alex#Five Hearts|Alex's 5-heart event]]<!--21/f Alex 1250/p Alex-->
+
| [[Алекс#Пять сердечек|Событие 5-ти сердечек Алекса]]<!--21/f Alex 1250/p Alex-->
 
| ''I'm worthless...$s''
 
| ''I'm worthless...$s''
| <tt>57</tt>: ''That's crazy. You're a genius!''<br /><tt>57</tt>: ''We all have our strengths and weaknesses''<br /><tt>57</tt>: ''Worthless? Yeah, that about sums it up.''
+
| <samp>57</samp>: ''That's crazy. You're a genius!''<br /><samp>57</samp>: ''We all have our strengths and weaknesses''<br /><samp>57</samp>: ''Worthless? Yeah, that about sums it up.''
 
|-
 
|-
| [[Clint#Three Hearts I|Clint's 3-heart event]]<!--97/f Clint 750/t 1900 2300/d Tue Wed Thu Fri Sat Sun-->
+
| [[Клинт#Три сердечка I|Событие 3-х сердечек I Клинта]]<!--97/f Clint 750/t 1900 2300/d Tue Wed Thu Fri Sat Sun-->
 
| ''Got any tips?^What advice can you give me?''
 
| ''Got any tips?^What advice can you give me?''
| <tt>211</tt>: ''Impress women with your strength and charm''<br /><tt>211</tt>: ''Act crazy, to keep people guessing''<br /><tt>211</tt>: ''Just act natural... be yourself''<br /><tt>211</tt>: ''Treat women the same as men''
+
| <samp>211</samp>: ''Impress women with your strength and charm''<br /><samp>211</samp>: ''Act crazy, to keep people guessing''<br /><samp>211</samp>: ''Just act natural... be yourself''<br /><samp>211</samp>: ''Treat women the same as men''
 
|-
 
|-
| [[Demetrius#Six Hearts|Demetrius's 6-heart event]]<!--25/f Demetrius 1500/p Demetrius/p Robin-->
+
| [[Деметриус#Шесть сердечек|Событие 6-ти сердечек Деметриуса]]<!--25/f Demetrius 1500/p Demetrius/p Robin-->
 
| ''How would you classify a tomato?''
 
| ''How would you classify a tomato?''
| <tt>59</tt>: ''Vegetable''<br /><tt>59</tt>: ''Fruit''
+
| <samp>59</samp>: ''Vegetable''<br /><samp>59</samp>: ''Fruit''
 
|-
 
|-
| [[Elliott#Two Hearts|Elliott's 2-heart event]]<!--39/f Elliott 500/p Elliott-->
+
| [[Эллиот#Два сердечка|Событие 2-х сердечек Эллиота]]<!--39/f Elliott 500/p Elliott-->
 
| ''A question... What kind of books do you like, @?''
 
| ''A question... What kind of books do you like, @?''
| <tt>958699</tt>: ''Mystery''<br /><tt>958700</tt>: ''Romance''<br /><tt>958701</tt>: ''Sci-Fi''
+
| <samp>958699</samp>: ''Mystery''<br /><samp>958700</samp>: ''Romance''<br /><samp>958701</samp>: ''Sci-Fi''
 
|-
 
|-
| [[Elliott#Four Hearts|Elliott's 4-heart event]]<!--40/f Elliott 1000/p Gus/t 1500 2200-->
+
| [[Эллиот#Четыре сердечка|Событие 4-х сердечек Эллиота]]<!--40/f Elliott 1000/p Gus/t 1500 2200-->
 
| ''Wait. I propose a toast! To...''
 
| ''Wait. I propose a toast! To...''
| <tt>28376</tt>: ''To Pelican Town!''<br /><tt>28376</tt>: ''To our friendship!''<br /><tt>28376</tt>: ''To my good health!''<br /><tt>28376</tt>: ''To your doom!''
+
| <samp>28376</samp>: ''To Pelican Town!''<br /><samp>28376</samp>: ''To our friendship!''<br /><samp>28376</samp>: ''To my good health!''<br /><samp>28376</samp>: ''To your doom!''
 
|-
 
|-
| [[Emily#Six Hearts|Emily's 6-heart event]]<!--917409/e 463391/f Emily 1500/p Emily-->
+
| [[Эмили#Шесть сердечек|Событие 6-ти сердечек Эмили]]<!--917409/e 463391/f Emily 1500/p Emily-->
 
| ''So... *gasp*... what did you think?$h''
 
| ''So... *gasp*... what did you think?$h''
| <tt>213</tt>: ''That was amazing!''<br /><tt>213</tt>: ''That was embarrassing...''<br /><tt>213</tt>: ''(Say nothing and do a slow clap)''
+
| <samp>213</samp>: ''That was amazing!''<br /><samp>213</samp>: ''That was embarrassing...''<br /><samp>213</samp>: ''(Say nothing and do a slow clap)''
 
|-
 
|-
| [[Evelyn#Four Hearts|Evelyn's 4-heart event]]<!--19/f Evelyn 1000/p Evelyn-->
+
| [[Эвелин#Четыре сердечка|Событие 4-х сердечек Эвелин]]<!--19/f Evelyn 1000/p Evelyn-->
 
| ''Well, what do you think?''
 
| ''Well, what do you think?''
| <tt>51</tt>: ''It's delicious!''<br /><tt>51</tt>: ''It was like chewing on a hockey puck''
+
| <samp>51</samp>: ''It's delicious!''<br /><samp>51</samp>: ''It was like chewing on a hockey puck''
 
|-
 
|-
| [[Gus#Four Hearts|Gus's 4-heart event]]<!--96/f Gus 1000/f Pam 500/p Gus-->
+
| [[Гас#Четыре сердечка|Событие 4-х сердечек Гаса]]<!--96/f Gus 1000/f Pam 500/p Gus-->
 
| ''@, what's going on here?''
 
| ''@, what's going on here?''
| <tt>207</tt>: ''You need to pay your tab right now!''<br /><tt>208</tt>: ''The saloon isn't doing well, financially''
+
| <samp>207</samp>: ''You need to pay your tab right now!''<br /><samp>208</samp>: ''The saloon isn't doing well, financially''
 
|-
 
|-
| [[Haley#Two Hearts|Haley's 2-heart event]]<!--11/f Haley 500/p Haley/p Emily-->
+
| [[Хейли#Два сердечка|Событие 2-х сердечек Хейли]]<!--11/f Haley 500/p Haley/p Emily-->
 
| ''It's only because I cleaned them last week!$a''
 
| ''It's only because I cleaned them last week!$a''
| <tt>46</tt>: ''Stop whining and just clean it!''<br /><tt>45</tt>: ''Haley, why not have this be your one weekly job?''<br /><tt>46</tt>: ''Emily, take the high road and do it this time.''
+
| <samp>46</samp>: ''Stop whining and just clean it!''<br /><samp>45</samp>: ''Haley, why not have this be your one weekly job?''<br /><samp>46</samp>: ''Emily, take the high road and do it this time.''
 
|-
 
|-
| [[Haley#Four Hearts|Haley's 4-heart event]]<!--12/f Haley 1000/p Haley-->
+
| [[Хейли#Четыре сердечка|Событие 4-х сердечек Хейли]]<!--12/f Haley 1000/p Haley-->
 
| ''Say... you're pretty strong, aren't you?''
 
| ''Say... you're pretty strong, aren't you?''
| <tt>47</tt>: ''Yes''<br /><tt>47</tt>: ''No''
+
| <samp>47</samp>: ''Yes''<br /><samp>47</samp>: ''No''
 
|-
 
|-
| [[Haley#Six Hearts|Haley's 6-heart event]]<!--13/f Haley 1500/z winter/t 1000 1600-->
+
| [[Хейли#Шесть сердечек|Событие 6-ти сердечек Хейли]]<!--13/f Haley 1500/z winter/t 1000 1600-->
 
| ''I'll never find another one like it...$s''
 
| ''I'll never find another one like it...$s''
| <tt>48</tt>: ''Relax, I'll just buy you a new one!''<br /><tt>48</tt>: ''I'm really sorry...''
+
| <samp>48</samp>: ''Relax, I'll just buy you a new one!''<br /><samp>48</samp>: ''I'm really sorry...''
 
|-
 
|-
| [[Harvey#Two Hearts|Harvey's 2-heart event]]<!--56/f Harvey 500/p George-->
+
| [[Харви#Два сердечка|Событие 2-х сердечек Харви]]<!--56/f Harvey 500/p George-->
 
| ''@, what do you think George should do?''
 
| ''@, what do you think George should do?''
| <tt>84</tt>: ''George should follow Dr. Harvey's advice.''<br /><tt>85</tt>: ''George knows what's best for his own body.''
+
| <samp>84</samp>: ''George should follow Dr. Harvey's advice.''<br /><samp>85</samp>: ''George knows what's best for his own body.''
 
|-
 
|-
| [[Harvey#Four Hearts|Harvey's 4-heart event]]<!--57/f Harvey 1000/p Harvey-->
+
| [[Харви#Четыре сердечка|Событие 4-х сердечек Харви]]<!--57/f Harvey 1000/p Harvey-->
 
| ''Hmm... Your pulse is high.$u''
 
| ''Hmm... Your pulse is high.$u''
| <tt>86</tt>: ''I'm a little nervous...''<br /><tt>86</tt>: ''I'm out of breath from working on the farm.''<br /><tt>86</tt>: ''Are you really a doctor? My pulse is fine!''
+
| <samp>86</samp>: ''I'm a little nervous...''<br /><samp>86</samp>: ''I'm out of breath from working on the farm.''<br /><samp>86</samp>: ''Are you really a doctor? My pulse is fine!''
 
|-
 
|-
| [[Kent#Three Hearts I|Kent's 3-heart event]]<!--100/f Kent 750/p Kent/p Jodi-->
+
| [[Кент#Three Hearts I|Событие 3-х сердечек Кента]]<!--100/f Kent 750/p Kent/p Jodi-->
 
| ''(Say something to Kent)$s''
 
| ''(Say something to Kent)$s''
| <tt>215</tt>: ''Jodi's to blame... she should've known better!''<br /><tt>215</tt>: ''I know you're hurting... but don't blame your wife.''<br /><tt>215</tt>: ''(Lie) Blame me... I asked for popcorn''
+
| <samp>215</samp>: ''Jodi's to blame... she should've known better!''<br /><samp>215</samp>: ''I know you're hurting... but don't blame your wife.''<br /><samp>215</samp>: ''(Lie) Blame me... I asked for popcorn''
 
|-
 
|-
| [[Leah#Four Hearts|Leah's 4-heart event]]<!--51/f Leah 1000/p Leah-->
+
| [[Лея#Четыре сердечка|Событие 4-х сердечек Леи]]<!--51/f Leah 1000/p Leah-->
 
| ''Was that selfish of me, @?$s''
 
| ''Was that selfish of me, @?$s''
| <tt>83</tt>: ''No, it had to be done.''<br /><tt>83</tt>: ''No, and your ex sounds like an idiot.''<br /><tt>83</tt>: ''No, but you would've been better off staying in the city.''<br /><tt>83</tt>: ''Yeah, a little.''<br /><tt>83</tt>: ''Yeah, but it's natural to care about yourself first.''
+
| <samp>83</samp>: ''No, it had to be done.''<br /><samp>83</samp>: ''No, and your ex sounds like an idiot.''<br /><samp>83</samp>: ''No, but you would've been better off staying in the city.''<br /><samp>83</samp>: ''Yeah, a little.''<br /><samp>83</samp>: ''Yeah, but it's natural to care about yourself first.''
 
|-
 
|-
| [[Lewis#Six Hearts|Lewis's 6-heart event]]<!--639373/f Lewis 1500/f Marnie 1500/t 1900 2300/w sunny-->
+
| [[Льюис#Шесть сердечек|Событие 6-ти сердечек Льюиса]]<!--639373/f Lewis 1500/f Marnie 1500/t 1900 2300/w sunny-->
 
| ''@...You overheard everything, didn't you?$s''
 
| ''@...You overheard everything, didn't you?$s''
| <tt>200</tt>: ''Yes... but I'll keep it a secret.''<br /><tt>201</tt>: ''Yes... and I'm going to tell everyone.''
+
| <samp>200</samp>: ''Yes... but I'll keep it a secret.''<br /><samp>201</samp>: ''Yes... and I'm going to tell everyone.''
 
|-
 
|-
| [[Maru#Two Hearts|Maru's 2-heart event]]<!--6/f Maru 500/p Maru-->
+
| [[Мару#Два сердечка|Событие 2-х сердечек Мару]]<!--6/f Maru 500/p Maru-->
 
| ''Right, @?''
 
| ''Right, @?''
| <tt>15933</tt>: ''(Say nothing)''<br /><tt>15933</tt>: ''Actually, your Dad was being weird.''
+
| <samp>15933</samp>: ''(Say nothing)''<br /><samp>15933</samp>: ''Actually, your Dad was being weird.''
 
|-
 
|-
| [[Maru#Four Hearts|Maru's 4-heart event]]<!--7/f Maru 1000/p Maru-->
+
| [[Мару#Четыре сердечка|Событие 4-х сердечек Мару]]<!--7/f Maru 1000/p Maru-->
 
| ''@, what should I do?''
 
| ''@, what should I do?''
| <tt>38</tt>: ''Just scoop it off the floor. He won't know the difference.''<br /><tt>39</tt>: ''Tell Harvey it was my fault.''<br /><tt>38</tt>: ''Tell Harvey it was an accident.''
+
| <samp>38</samp>: ''Just scoop it off the floor. He won't know the difference.''<br /><samp>39</samp>: ''Tell Harvey it was my fault.''<br /><samp>38</samp>: ''Tell Harvey it was an accident.''
 
|-
 
|-
| [[Maru#Six Hearts|Maru's 6-heart event]]<!--8/f Maru 1500/w sunny/t 2100 2340-->
+
| [[Мару#Шесть сердечек|Событие 6-ти сердечек Мару]]<!--8/f Maru 1500/w sunny/t 2100 2340-->
 
| ''What do you see?''
 
| ''What do you see?''
| <tt>40</tt>: ''A beautiful planet.''<br /><tt>40</tt>: ''A cold, dark abyss.''
+
| <samp>40</samp>: ''A beautiful planet.''<br /><samp>40</samp>: ''A cold, dark abyss.''
 
|-
 
|-
| [[Maru#Eight Hearts|Maru's 8-heart event]]<!--9/f Maru 2000/p Maru-->
+
| [[Мару#Eight Hearts|Событие 8-ми сердечек Мару]]<!--9/f Maru 2000/p Maru-->
 
| ''I'm so sorry.$8''
 
| ''I'm so sorry.$8''
| <tt>41</tt>: ''It's okay, it doesn't even hurt.''<br /><tt>41</tt>: ''You'd better be. This hurts like crazy!''
+
| <samp>41</samp>: ''It's okay, it doesn't even hurt.''<br /><samp>41</samp>: ''You'd better be. This hurts like crazy!''
 
|-
 
|-
| [[Maru#Ten Hearts|Maru's 10-heart event]]<!--10/f Maru 2500/t 900 1600-->
+
| [[Мару#Десять сердечек|Событие 10-ти сердечек Мару]]<!--10/f Maru 2500/t 900 1600-->
 
| ''Well, what do you think, @?''
 
| ''Well, what do you think, @?''
| <tt>18981</tt>: ''I'm so impressed with your inventions.''<br /><tt>18981</tt>: ''I'm disappointed... You should've made that robot your slave.''<br /><tt>18981</tt>: ''So is your Dad okay with 'us' now?''<br /><tt>18981</tt>: ''(Just stare at Maru and say nothing)''
+
| <samp>18981</samp>: ''I'm so impressed with your inventions.''<br /><samp>18981</samp>: ''I'm disappointed... You should've made that robot your slave.''<br /><samp>18981</samp>: ''So is your Dad okay with 'us' now?''<br /><samp>18981</samp>: ''(Just stare at Maru and say nothing)''
 
|-
 
|-
| [[Maru#Ten Hearts|Maru's 10-heart event]]<!--BadAnswer-->
+
| [[Мару#Десять сердечек|Событие 10-ти сердечек Мару]]<!--BadAnswer-->
 
| ''You must have a good reason for saying that...$a''
 
| ''You must have a good reason for saying that...$a''
| <tt>18982</tt>: ''MarILDA's just a piece of machinery designed to act human.''<br /><tt>18982</tt>: ''I was just kidding. MarILDA deserves her freedom.''<br /><tt>18982</tt>: ''I would've put her to work on the farm.''
+
| <samp>18982</samp>: ''MarILDA's just a piece of machinery designed to act human.''<br /><samp>18982</samp>: ''I was just kidding. MarILDA deserves her freedom.''<br /><samp>18982</samp>: ''I would've put her to work on the farm.''
 
|-
 
|-
| [[Penny#Two Hearts|Penny's 2-heart event]]<!--34/f Penny 500/t 900 1400/w sunny-->
+
| [[Пенни#Два сердечка|Событие 2-х сердечек Пенни]]<!--34/f Penny 500/t 900 1400/w sunny-->
 
| ''@? You were watching us?''
 
| ''@? You were watching us?''
| <tt>71</tt>: ''I was. You did a kind thing there, Penny.''<br /><tt>71</tt>: ''You should've left him alone. Now he's grumpy.''<br /><tt>71</tt>: ''I'm just taking a walk, minding my own business.''
+
| <samp>71</samp>: ''I was. You did a kind thing there, Penny.''<br /><samp>71</samp>: ''You should've left him alone. Now he's grumpy.''<br /><samp>71</samp>: ''I'm just taking a walk, minding my own business.''
 
|-
 
|-
| [[Penny#Six Hearts|Penny's 6-heart event]]<!--36/f Penny 1500/p Penny-->
+
| [[Пенни#Шесть сердечек|Событие 6-ти сердечек Пенни]]<!--36/f Penny 1500/p Penny-->
 
| ''...well?''
 
| ''...well?''
| <tt>72</tt>: ''(Lie) Mmm! That was delicious!''<br /><tt>73</tt>: ''Uh... can I get the rest to go?''<br /><tt>73</tt>: ''Well it's definitely unique... how did you get it so rubbery?''
+
| <samp>72</samp>: ''(Lie) Mmm! That was delicious!''<br /><samp>73</samp>: ''Uh... can I get the rest to go?''<br /><samp>73</samp>: ''Well it's definitely unique... how did you get it so rubbery?''
 
|-
 
|-
| [[Pierre#Six Hearts|Pierre's 6-heart event]]<!--16/f Pierre 1500/p Pierre-->
+
| [[Пьер#Шесть сердечек|Событие 6-ти сердечек Пьера]]<!--16/f Pierre 1500/p Pierre-->
 
| ''Promise me you won't tell anyone about this.''
 
| ''Promise me you won't tell anyone about this.''
| <tt>50</tt>: ''Your secret is safe with me.''<br /><tt>50</tt>: ''Your wife deserves to know about this.''
+
| <samp>50</samp>: ''Your secret is safe with me.''<br /><samp>50</samp>: ''Your wife deserves to know about this.''
 
|-
 
|-
| [[Robin#Six Hearts|Robin's 6-heart event]]<!--33/f Robin 1500/p Robin-->
+
| [[Робин#Шесть сердечек|Событие 6-ти сердечек Робин]]<!--33/f Robin 1500/p Robin-->
 
| ''Have you ever made anything out of wood, @?''
 
| ''Have you ever made anything out of wood, @?''
| <tt>66</tt>: ''Yes''<br /><tt>66</tt>: ''No''
+
| <samp>66</samp>: ''Yes''<br /><samp>66</samp>: ''No''
 
|-
 
|-
| [[Sam#Two Hearts|Sam's 2-heart event]]<!--44/f Sam 500/p Sam-->
+
| [[Сэм#Два сердечка|Событие 2-х сердечек Сэма]]<!--44/f Sam 500/p Sam-->
 
| ''Say, @... what kind of music do you like?''
 
| ''Say, @... what kind of music do you like?''
| <tt>76</tt>: ''Cheerful pop music.''<br /><tt>77</tt>: ''Experimental noise rock.''<br /><tt>78</tt>: ''Hi-Energy dance music.''<br /><tt>79</tt>: ''Honky-tonky country music.''
+
| <samp>76</samp>: ''Cheerful pop music.''<br /><samp>77</samp>: ''Experimental noise rock.''<br /><samp>78</samp>: ''Hi-Energy dance music.''<br /><samp>79</samp>: ''Honky-tonky country music.''
 
|-
 
|-
| [[Sam#Four Hearts|Sam's 4-heart event]]<!--46/f Sam 1000/p Sam-->
+
| [[Сэм#Четыре сердечка|Событие 4-х сердечек Сэма]]<!--46/f Sam 1000/p Sam-->
 
| ''...Tell her, @.$s''
 
| ''...Tell her, @.$s''
| <tt>80</tt>: ''Sam dropped the snack as he was handing it to me.''<br /><tt>80</tt>: ''Sam handed me the snack and then I dropped it.''<br /><tt>81</tt>: ''Sam dropped it on purpose. He thought it would be funny.''
+
| <samp>80</samp>: ''Sam dropped the snack as he was handing it to me.''<br /><samp>80</samp>: ''Sam handed me the snack and then I dropped it.''<br /><samp>81</samp>: ''Sam dropped it on purpose. He thought it would be funny.''
 
|}
 
|}
  
<small>¹ Extracted using [https://gist.github.com/Pathoschild/6a133fd567d724cc2e3057a8acf448b8 this LINQPad script].</small>
+
<small>¹ Извлечено с помощью [https://gist.github.com/Pathoschild/6a133fd567d724cc2e3057a8acf448b8 скрипта LINQPad].</small>
  
==Conversation topics==
+
==Темы для разговоров==
A ''conversation topic'' is a temporary flag which can be checked in [[Modding:Event data|event preconditions]] and can trigger one-time NPC dialogue (if they have a matching dialogue key). They're stored in <tt>Game1.player.activeDialogueEvents</tt> while active.
+
''Тема разговора'' - временный флаг, который может быть установлен в [[Модификации:События|предварительных условиях события]] и может вызвать одноразовый диалог NPC (если у них есть соответствующий ключ диалога). Они хранятся в <samp>Game1.player.activeDialogueEvents</samp>, пока они активны.
  
A conversation topic can be started using the <tt>addConversationTopic</tt> [[Modding:Event data|event command]], <tt>%item conversationTopic</tt> [[Modding:Mail data|mail command]], or in code by adding it to <tt>Game1.player.activeDialogueEvents</tt>.
+
Тему разговора можно начать с помощью <samp>addConversationTopic</samp> [[Модификации:События|команда события]], <samp>%item conversationTopic</samp> [[Модификации:Почта|команда почты]], или в коде, добавив его в <samp>Game1.player.activeDialogueEvents</samp>.
  
The game defines these events:
+
Игра определяет следующие события:
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
! id
+
! ID
! duration
+
! Продолжительность
! trigger
+
! Триггер
 
|-
 
|-
 
!colspan="3"| Bundles
 
!colspan="3"| Bundles
 
|-
 
|-
| <tt>cc_Begin</tt>
+
| <samp>cc_Begin</samp>
| 4 days
+
| 4 дня
| Set in the [[Wizard]]'s cutscene after reading the first Junimo note in the community center.
+
| Устанавливается в ролике с [[Волшебник|Волшебником]], после прочтения первой заметки Джунимо в общественном центре.
 
|-
 
|-
| <tt>cc_Complete</tt>
+
| <samp>cc_Complete</samp>
| 4 days
+
| 4 дня
| [[Community Center]] completed. (Does not apply to JojaMart path.)
+
| [[Общественный центр]] завершён. (Не относится к пути JojaMart.)
 
|-
 
|-
| <tt>cc_Boulder</tt>
+
| <samp>cc_Boulder</samp>
| 7 days
+
| 7 дней
| [[The Mountain|Mountain]] boulder is removed through community center bundle or Joja improvement form.
+
| Валун в [[Горы]] удаляется с помощью пакета для общественного центра или формы улучшения Joja.
 
|-
 
|-
| <tt>cc_Bridge</tt>
+
| <samp>cc_Bridge</samp>
| 7 days
+
| 7 дней
| [[Quarry]] bridge is repaired through community center bundle or Joja improvement form.
+
| Мост в [[Карьер]] ремонтируется с помощью пакета услуг общественного центра или формы улучшения Joja.
 
|-
 
|-
| <tt>cc_Bus</tt>
+
| <samp>cc_Bus</samp>
| 7 days
+
| 7 дней
| [[Bus]] is repaired through community center bundle or Joja improvement form.
+
| [[Автобусная остановка]] ремонтируется с помощью пакета услуг общественного центра или формы улучшения Joja.
 
|-
 
|-
| <tt>cc_Greenhouse</tt>
+
| <samp>cc_Greenhouse</samp>
| 3 days
+
| 3 дня
| [[Greenhouse]] is constructed through community center bundle. (Does not apply to JojaMart path.)
+
| [[Теплица]] построена с помощью пакета общественного центра. (Не относится к пути JojaMart.)
 
|-
 
|-
| <tt>cc_Minecart</tt>
+
| <samp>cc_Minecart</samp>
| 7 days
+
| 7 дней
| [[Minecart]]s are unlocked through community center bundle or Joja improvement form.
+
| [[Вагонетки]] разблокированы с помощью пакета услуг общественного центра или формы улучшения Joja.
 
|-
 
|-
| <tt>joja_Begin</tt>
+
| <samp>joja_Begin</samp>
| 7 days
+
| 7 дней
| First time that player opens the [[Joja Community Development Form]].
+
| Первый раз, когда этот игрок открывает [[Бланк с проектами по общественному развитию Джоджа]].
 
|-
 
|-
| <tt>movieTheater</tt>
+
| <samp>movieTheater</samp>
| 3 days
+
| 3 дня
| [[Movie Theater|movie theatre]] is constructed.
+
| [[Кинотеатр]] построен.
 
|-
 
|-
!colspan="3"| Spouse events
+
!colspan="3"| События для супругов
 
|-
 
|-
| <tt>elliottGone</tt>
+
| <samp>elliottGone</samp>
| 6 days
+
| 6 дней
| Set when [[Elliott]]'s fourteen-heart event starts.
+
| Устанавливается, когда начинается событие с четырнадцатью сердцами [[Эллиот]]а.
 
|-
 
|-
| <tt>ElliottGone1</tt><br /><tt>ElliottGone2</tt><br /><tt>ElliottGone3</tt><br /><tt>ElliottGone4</tt><br /><tt>ElliottGone5</tt><br /><tt>ElliottGone6</tt><br /><tt>ElliottGone7</tt>
+
| <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>
| same day
+
| В тот же день
| Part of [[Elliott]]'s fourteen-heart event. The first flag is set when it starts; the subsequent flags are set by subsequent letters from Elliott.
+
| Часть события с четырнадцатью сердцами [[Эллиот]]а. Первый флаг устанавливается при его запуске; последующие флаги устанавливаются последующими письмами от Эллиота.
 
|-
 
|-
| <tt>emilyFiber</tt>
+
| <samp>emilyFiber</samp>
| 2 days
+
| 2 дня
| Part of [[Emily]]'s fourteen-heart event. Set after completing the quest.
+
| Часть события четырнадцати сердец [[Эмили]]. После завершения задания.
 
|-
 
|-
| <tt>haleyCakewalk1</tt><br /><tt>haleyCakewalk2</tt>
+
| <samp>haleyCakewalk1</samp><br /><samp>haleyCakewalk2</samp>
| same day
+
| В тот же день
| Part of [[Haley]]'s fourteen-heart event.
+
| Часть события четырнадцати сердец [[Хэйли]].
 
|-
 
|-
| <tt>leahPaint</tt>
+
| <samp>leahPaint</samp>
| same day
+
| В тот же день
| Set when [[Leah]]'s fourteen-heart event starts.
+
| Часть события четырнадцати сердец [[Лея|Леи]].
 
|-
 
|-
| <tt>pennyRedecorating</tt>
+
| <samp>pennyRedecorating</samp>
| 2 days
+
| 2 дня
| Part of [[Penny]]'s fourteen-heart event.
+
| Часть события четырнадцати сердец [[Пенни]].
 
|-
 
|-
| <tt>samJob1</tt><br /><tt>samJob2</tt>
+
| <samp>samJob1</samp><br /><samp>samJob2</samp>
| 2 days
+
| 2 дня
| Part of [[Sam]]'s fourteen-heart event.
+
| Часть события четырнадцати сердец [[Сэм]]а.
 
|-
 
|-
| <tt>samJob3</tt>
+
| <samp>samJob3</samp>
| 3 days
+
| 3 дня
| Part of [[Sam]]'s fourteen-heart event.
+
| Часть события четырнадцати сердец [[Сэм]]а.
 
|-
 
|-
| <tt>sebastianFrog</tt>
+
| <samp>sebastianFrog</samp>
| same day
+
| В тот же день
| Set when [[Sebastian]]'s fourteen-heart event starts.
+
| Устанавливается, когда начинается событие с четырнадцатью сердцами [[Себастиан]]а.
 
|-
 
|-
| <tt>sebastianFrog2</tt>
+
| <samp>sebastianFrog2</samp>
| 6 days
+
| 6 дней
| Part of [[Sebastian]]'s fourteen-heart event.
+
| Часть события четырнадцати сердец [[Себастиан]]а.
 
|-
 
|-
| <tt>shaneSaloon1</tt><br /><tt>shaneSaloon2</tt>
+
| <samp>shaneSaloon1</samp><br /><samp>shaneSaloon2</samp>
| same day
+
| В тот же день
| Part of [[Shane]]'s fourteen-heart event.
+
| Часть события четырнадцати сердец [[Шейн]]а.
 
|-
 
|-
!colspan="3"| Other events
+
!colspan="3"| Другие события
 
|-
 
|-
| <tt>dumped_Guys</tt><br /><tt>dumped_Girls</tt>
+
| <samp>dumped_Guys</samp><br /><samp>dumped_Girls</samp>
| 7 days
+
| 7 дней
| Set after the corresponding ten-heart group event (e.g. see [[Abigail#Group Ten-Heart Event]]).
+
| Устанавливается после соответствующего группового события с десятью сердцами (Например, смотри [[Абигейл#Групповое событие с десятью сердечками]]).
 
|-
 
|-
| <tt>secondChance_Girls</tt><br /><tt>secondChance_Guys</tt>
+
| <samp>secondChance_Girls</samp><br /><samp>secondChance_Guys</samp>
| 14 days
+
| 14 дней
| Set after the corresponding ten-heart group event (e.g. see [[Abigail#Group Ten-Heart Event]]).
+
| Устанавливается после соответствующего группового события с десятью сердцами (Например, смотри [[Абигейл#Групповое событие с десятью сердечками]]).
 
|-
 
|-
| <tt>pamHouseUpgrade</tt>
+
| <samp>pamHouseUpgrade</samp>
| 4 days
+
| 4 дня
| Set after seeing the [[Pam]] house upgrade event, if the player chose to be revealed as the donor.
+
| Устанавливается после просмотра события [[Пэм]] (обновления дома), если игрок выбрал раскрытие в качестве дарителя.
 
|-
 
|-
| <tt>pamHouseUpgradeAnonymous</tt>
+
| <samp>pamHouseUpgradeAnonymous</samp>
| 4 days
+
| 4 дня
| Set after seeing the [[Pam]] house upgrade event, if the player chose to be anonymous.
+
| Устанавливается после просмотра события [[Пэм]] (обновления дома), если игрок выбрал остался анонимным.
 
|-
 
|-
| <tt>willyCrabs</tt>
+
| <samp>willyCrabs</samp>
| 4 days
+
| 4 дня
| Set after [[Willy]]'s six-heart event.
+
| Устанавливается после события с шестью сердцами [[Вилли]].
 
|-
 
|-
!colspan="3"| Other
+
!colspan="3"| Другое
 
|-
 
|-
| <tt>Introduction</tt>
+
| <samp>Introduction</samp>
| 6 days
+
| 6 дней
| Farmer is created (e.g. starting a new save, or joining a multiplayer game for the first time).
+
| При создании фермера(игрока) (например, запуск нового сохранения или первое присоединение к многопользовательской игре).
 
|-
 
|-
| <tt>FullCrabPond</tt>
+
| <samp>FullCrabPond</samp>
| 14 days
+
| 14 дней
| First time any [[Fish Pond|fish pond]] contains 10 [[crab]]s.
+
| Первый раз, когда [[Рыбный пруд]] содержит 10 [[Краб]]ов.
 
|}
 
|}
  
 +
[[Category:Модификации]]
  
[[Category:Modding]]
+
[[en:Modding:Dialogue]]
 
 
 
[[pt:Modificações:Diálogo]]
 
[[pt:Modificações:Diálogo]]
 
[[zh:使用模组:对话]]
 
[[zh:使用模组:对话]]

Текущая версия на 18:42, 4 ноября 2021

Индекс

На этой странице объясняется, как игра хранит текст диалога, его формат и как игра анализирует его. Это расширенное руководство для разработчиков модов.

Данные

Текст диалога хранится в четырех файлах.

Диалог с конкретным персонажем

Characters\Dialogue\*.xnb содержит большую часть диалогов для каждого персонажа(по одному файлу на персонажа). Игра выберет диалог из одного из разделов ниже в порядке, указанном здесь.

Специальный диалог

Существует несколько ключей для конкретных случаев:

Ключ Описание
danceRejection Диалог, используемый для отклонения предложения потанцевать во время цветочных танцев. (Другой диалог используется, если они уже согласились танцевать с другим игроком.)
divorced Диалог отображается, когда вы разговариваете со своим разведенным супругом.
<location>_Entry Возможные диалоговые строки, показанные над NPC, при входе на <location>, шанс 50%. Эта запись диалога может содержать несколько параметров, разделенных /; игра случайным образом выберет один из них для отображения.
Пример: SeedShop_Entry: "Hi, Pierre!/Now, what do I need.../Ah, that looks good!/Makin' my special sauce tonight!/Pierre! What's fresh?/Pierre! Waddya got for me?"
ComeBackLater
Snoring
Диалог Гила, когда не выполнено никаких новых задач приключенческого квеста. ComeBackLater будет показан один раз, и все последующие диалоги будут показаны Snoring.

Диалоги на локациях

В противном случае игра выберет диалог в таком порядке.

Варианты:

  • Каждый ключ может быть дополнительно снабжен префиксом названием сезона, например, springMountain_47_23.

Игра проверит варианты в таком порядке: <season><key>, и <key>.

Ключ Описание
<location>_<x>_<y> Диалог, отображаемый в указанном местоположении, когда NPC стоит на позиции плитки <x>, <y>.
Например: Mountain_47_23: "Я прихожу сюда за тишиной и покоем."
<location>_<dayName> Диалог, отображаемый в указанном месте в указанный день недели.
Например: Saloon_Fri: "Сегодня вечером дела шли действительно хорошо. Я доволен."
<location><hearts> Диалог, отображаемый в указанном местоположении, если у вас есть хотя бы <hearts> сердец. <hearts> должно быть 10, 8, 6, 4 или 2 (никакое другое количество не будет учтено).
Например: Saloon8: "Привет @. Я рад тебя видеть! Тебе здесь всегда рады."
<location> Диалог, отображаемый в указанном местоположении.
Например: Saloon: "Теперь, когда я здесь, я наконец-то могу расслабиться и немного пообщаться."

Диалоги во время дождя

Characters\Dialogue\rainy.xnb содержит одну запись диалога на каждого NPC. Есть примерно 50% вероятность, что NPC воспользуется этим диалогом, если что-то из нижеперечисленного совпало,

  • идет дождь;
  • игрок не супруг NPC;
  • игрок разведен с NPC.

Общий диалог

В противном случае игра выберет диалог, используя один из этих ключевых форматов (в порядке приоритета):

  1. <season>_<key>_inlaw_<spouseName>
  2. <season>_<key>
  3. <key>_inlaw_<spouseName>
  4. <key>

Для каждого варианта выше: <season> это - название сезона (например, spring_14); _inlaw_<spouseName>, если игрок супруг указанного NPC, независимо от того, связан ли NPC с игроком (например, Sat_inlaw_Abigail); и <key> записывается в одним из форматов, перечисленных ниже.

Ключ Описание
<dayOfMonth> Диалог, показанный в указанный день месяца в только первого года.
ПРЕДУПРЕЖДЕНИЕ: этот ключ только для первого года, ключи для последующих лет отличаются!
Например: 10: "Did you watch the game last night?#$b#Or wait, do you even have a TV set...?"
<dayOfMonth>_<firstOrLaterYear> Диалог, показанный в указанный день месяца в первый/последующий год.
Например: 2_1: "My husband Kent is a soldier, working overseas. That's why he's not here right now.#$b#I know he'll come back safe once his tour is over!!#$e#Need something?"
<dayOfWeek><hearts>_<firstOrLaterYear> Диалог, показанный в указанный день недели если у игрока есть хотя бы <hearts> сердец, в первый/последующий год. {t|hearts}} будут проверены в порядке 10, 8, 6, 4, 2 (никакое другое количество не будет работать).
Ошибка: показано только в том случае, если равны <dayOfWeek><hearts>.
Например: Thu2_2: "Well, my Dad is back. Have you met him?#$b#I'm just glad he's okay."
<dayOfWeek><hearts> Диалог, показанный в указанный день недели если у игрока есть хотя бы <hearts> сердец. <hearts> будут проверены в порядке 10, 8, 6, 4, 2 (никакое другое количество не будет работать).
Например: Sun4: "Hey, @.#$e#How's your day going?"
<dayOfWeek>_<firstOrLaterYear> Диалог, показанный в указанный день недели в первый/последующий год.
Например: Sat_1: "Dad's coming back soon!#$b#I hope he brings me some toys.$u"
<dayOfWeek> Диалог, показанный в указанный день недели.
Например: Mon: "Oh, hey. Taking a break from work?"

Запасной

Если ничего из вышеперечисленного не совпадает, игра покажет значение с ключом NPC.cs.4061 расположенным в Strings\StringsFromCSFiles.xnb. (Английская версия: "Hi.")

Брачные диалоги

Characters\Dialogue\MarriageDialogue.xnb contains dialogue text for all spouses, and each NPC may optionally have their own dialogue file like Characters\Dialogue\MarriageDialogueAbigail.xnb. When looking up a dialogue key, it will use the one in the NPC's file if it exists, else the one in the generic file, else a default text (usually blank).

Each dialogue entry has a key with one of these formats:

Ключ Описание
<season>_<day> Dialogue shown when the day starts, if <season> and <day> match the current date.
Example: fall_1: "The scent is unmistakable... mushroom, rotting leaves, pumpkin. It's fall, alright. Isn't it lovely?"
patio_<spouse> Диалог показан, когда NPC стоит во внутреннем дворике.
<weather>_Day_<random> Daily dialogue added when the day starts, based on the <weather> (Rainy if it's raining, else Indoor even if they're not indoors) and <random> (a random number between 0 and 4). If the game chooses a <random> value that doesn't have a dialogue, it'll use the default text instead.
Rainy_Night_<random> Daily dialogue in the farmhouse after 6pm when it's raining. <random> is a number between 0–5 inclusively or the NPC name, each of which has an equal chance of being randomly chosen. If the game chooses a <random> value that doesn't have a dialogue, it'll use the default text instead.
Example: Rainy_Night_3: "On nights like this, I like to turn the light down low and just listen...$8"
Indoor_Night_<random> Daily dialogue in the farmhouse after 6pm when it's not raining. <random> is a number between 0–4 inclusively or the NPC name, each of which has an equal chance of being randomly chosen. If the game chooses a <random> value that doesn't have a dialogue, it'll use the default text instead.
funLeave_<spouse> TODO
jobLeave_<spouse> TODO
funReturn_<spouse> Dialogue shown after 1pm when they enter the farmhouse but before reaching their target position, but only on Monday (any NPC) or Friday (if not Maru/Penny/Harvey).
Example: funReturn_Abigail: "Hey! Did you have a good day? Mine went well. It was refreshing to take a walk.$h"
jobReturn_<spouse> Dialogue shown after 1pm when they enter the farmhouse but before reaching their target position, but only if funReturn isn't shown instead.
Example: jobReturn_Penny: "#$c .5#Good evening. My day was fine, thanks! How was yours?$h#$e#Jas and Vincent weren't behaving very well today. I'm still all wound up..."
<season>_<spouse> Dialogue shown at 9+ heart levels with a 5% chance each day.
Example: fall_Abigail: "Do I smell pumpkin on you? Maybe I'm just dreaming...$h"
Outdoor_<spouse> Dialogue shown on the farm with a 20% chance.
Example: Outdoor_Abigail: "I'm just going to hang out here, okay?#$e#There's a lot of interesting bugs and things out here. *chuckle*$h"
Outdoor_<random> Dialogue shown on the farm with an 80% chance. <random> is a number 0–4, used to randomly select an entry.
Example: Outdoor_3: "It's pretty cool that we have a cave on our property. It's something I always dreamed about.$h"
spouseRoom_<spouse> Dialogue shown when the NPC is in their room.
Example: spouseRoom_Abigail: "$c .5#I got up a little before you and fed David Jr. He's very active this morning.#$e#I hope you don't mind the guinea pig smell."
OneKid_<random> Dialogue shown when standing in the kitchen, if they have one child. <random> is a number 0–4, used to randomly select an entry.
OneKid_1: "I wonder if %kid1 will grow up to be a farmer like you?"
TwoKids_<random> Dialogue shown when standing in the kitchen, if they have two children. <random> is a number 0–4, used to randomly select an entry.
TwoKids_2: "I had a dream that %kid2 will grow up to be a famous monster hunter. I've already been thinking about a little armor set."
<affection>_<random> Dialogue shown inside the farmhouse between 11am and 6pm, or when the day starts if a different dialogue isn't selected. <affection> is randomly Bad or Neutral if they have less than 9 hearts; 50% chance of Good and 75% chance of Good if you have 10+ or 11+ hearts respectively; else Neutral <random> is a number 0–9, used to randomly select an entry.
Example: Good_5: "I was just admiring the mermaid's pendant you gave me... I'll proudly wear this to my grave.$l"

Файлы событий

Data\Events\*.xnb содержит сценарии событий, включая любой диалог в событии (смотри Модификации:События).

Описание анимации

Data\animationDescriptions.xnb содержит короткие фрагменты диалога, соответствующие определенным пунктам расписания.

Строки из CS файлов

Strings\StringsFromCSFiles.xnb содержит разные переводы. Включает диалог NPC, определенный в коде, диалог, который разделяется между несколькими персонажами, диалог для некоторых жестко запрограммированных событий, таких как брак и т.д.

Файл содержит записи в форме "<key>": "dialogue string",где ключом является произвольный уникальный идентификатор. Они должны точно соответствовать ключу, ожидаемому игрой, но ключи-это просто уникальные идентификаторы — даже несмотря на то, что большинство ключей выглядят как <file name>. <line number>, это просто соглашение, первоначально использовавшееся для присвоения идентификаторов, и оно не имеет никакого значения или эффекта (и даже не обязательно совпадает с текущим именем файла или номером строки).

Общий диалог, специфичный для NPC

Проявив некоторую изобретательность, вы можете заставить каждого NPC реагировать по-разному вместо использования обычного статического диалога. Например, вы можете использовать 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# [Give Bouquet]",
      "NPC.cs.3963": "$q 10001 give_flowersB#?!...#$r 10001 0 give_flowersB# [Give Bouquet]",
      "NPC.cs.3980": "$q 10001 give_pendant#?!...#$r 10001 0 give_pendant# Will you marry me?"
   }
}

В этом примере каждый NPC получит свой ответ give_flowersA, give_flowersB, и give_pendant ключи диалога в их файлах диалога. (Смотри формат ниже приведена дополнительная информация о синтаксисе.) Обратите внимание, что они должны быть добавлены для всех вариантов, чтобы избежать ошибок. Например, вы могли бы добавить это для Хейли:

{
   "Action": "EditData",
   "Target": "Characters/Dialogue/Haley",
   "Entries": {
      "give_flowersA": "Oh.. these are beautiful.$1#$b#...What? You want to be my Boyfriend?$8^...What?  You want to be my Girlfriend?$8#$b#....I thought we already were together.$1",
      "give_flowersB": "Ohhh, @!  I would love to be your true love.$1",
      "give_pendant": ".....$8#$b#@, I don't know what to say..$8#$b#...$7#$b#Yes... I accept...$4#$b#I can't wait to tell the Mayor... Everything should take 3 days to set up.$1"
   }
}

Это можно использовать для других общих ответов, и вы даже можете избежать "Подарить букет", запросив ID ответа на вопрос.

Алгоритм

Игра находит диалог следующим образом:

  1. Диалог событий считывается из соответствующих команд событий (смотри Модификации:События).
  2. Диалог по конкретному местоположению читается из StringsFromCSFiles <location>.cs.
  3. Диалог с другими персонажами считывается из файлов, относящихся к конкретным персонажам.
  4. Если диалоги не были найдены, игра прибегает к жестко закодированному диалогу из StringsFromCSFiles (в частности, ключи с префиксом NPC.cs NPC.cs).

Формат

Текст диалога может содержать маркеры и команды, которые управляют диалоговым окном, изменяют текст (например, переключаются между строками, зависящими от пола), вводят значения и т.д. Они анализируются с помощью класса Dialogue.

Специальные символы:

Символ Описание
# Разделяет две команды в строке диалога.
{ TODO. Расшифровывается как "breakSpecialCharacter".
^ Меняет текст в зависимости от пола. Текст перед ним показан для персонажа-мужчины, после него-для персонажа-женщины.
Например: Oh, good morning Mr. @!^Oh, good morning Ms. @!
% Превращает диалоговое окно в обычное текстовое поле.
Например: "%Abigail is lost in her music."
* TODO. Расшифровывается как "quickResponseDelineator".

Портретные команды

Они задают портрет, отображаемый в диалоговом окне, для текущей строки диалога. Если команда "Портрет" отсутствует, используется нейтральный портрет.

Портреты пронумерованы слева направо сверху вниз, начиная с $0. Первые шесть портретов являются стандартными и могут быть идентифицированы по номеру (например, $2) или уникальному псевдониму (например, $s). У всех потенциальных супругов и многих других персонажей есть эти шесть портретов, но они не полностью соответствуют друг другу; например, Кэролайн имеет только четыре.

Номер Псевдоним Описание
$0 $k Нейтральный портрет.
$1 $h Счастливый портрет.
$2 $s Печальный портрет.
$3 $u Использует уникальный портрет. Отличается для каждого NPC: сердитая (Абигейл), во время игры в футбол (Алекс), сердитая (Кэролайн), больной (Губернатор), и т.д..
$4 $l Использует любовный портрет.
$5 $a Использует сердитый портрет.
$<id> Индивидуальный портрет, выходящий за рамки стандартных шести.

Команды портрета должны быть в конце строки диалога:

"fall_Fri6": "When I was a little girl, my father abandoned us.$s#$b#I'm sorry to make things uncomfortable for you...$u#$e#Anyway... How's the farming life going?",

Диалоговые команды

Команда Описание
$q <response IDs> <fallback>#<text> Показать диалоговое окно, содержащее заданный текст вопроса. Если <response IDs> (список, разделенный /) содержит ответ, вопрос пропускается (вместе с остальной частью этой строки диалога), и вместо этого запись диалога, идентифицированная <fallback> будет приложено ко всему, что предшествует этой команды $q. <fallback> В диалоге обычно используется команда $p для корректировки текста на основе ответа игрока на этот вопрос. ПРИМЕЧАНИЕ: в вопросах диалога должны использоваться уникальные идентификаторы, аналогичные событиям. Смотри события для дополнительной информации.
$r <response ID> <friendship> <reaction>#<answer text> Определите вариант ответа на диалог с вопросом $q. <answer text> отображаемый текст. <response ID> используется для группировки ответов для дальнейшего использования (несколько ответов могут иметь общий ID ответа). <friendship> определяет изменение дружбы, положительное или отрицательное, если выбран этот ответ. <reaction> выбирает запись из файла диалога NPC Content\Characters\Dialogue\*.xnb, которая будет ответом NPC, если этот вариант будет выбран игроком.
$p <response ID>#<match text>|<no-match text> Расшифровывается как "dialoguePrerequisite". Показывает различный текст в зависимости от того, дал ли игрок конкретный ответ на ранее заданный вопрос. Если <response ID> соответствует ответу, который дал игрок, будет показан <match text>; в противном случае отображается <no-match text>. Тексты, разделенные |, каждый из них содержать несколько команд, разделенных #. Это не обязательно должна быть первая команда в строке диалога.
$b Указывает на паузы в диалоге, когда игроку нужно будет нажать, чтобы следующая часть загрузилась в новом диалоговом окне.
$e Завершает текущий диалог, закрывает диалоговое окно и возобновляет управление игроку. Диалог, следующий за $e, потребует нового взаимодействия с NPC.
$k TODO. Расшифровывается как "dialogueKill".
$c <probability>#<text1>#<text2> Показать <text1> с шансом <probability> между 0 и 1; в противном случае показать <text2>. Например, $c 0.9 для 90% шанса отображения <text1> и 10% шанса на отображение <text2>. ПРИМЕЧАНИЕ: Команды замены (смотри ниже) не работают в <text1>. Это не обязательно должна быть первая команда в строке диалога. На это не влияет ежедневная удача.
$d <state id>#<text1>|<text2> Показать одну из двух строк диалога на основе предопределенного условия: bus (отремонтирован ли автобус), joja (работает ли еще магазин Joja Mart), cc или communitycenter (

доступен ли Общественный центр), или kent (вернулся ли Кент в долину). Строка диалога должна начинаться с $d, всё, вплоть до первого символа |, отображается, если условие совпадает, и всё, что после этого, отображается, в противном случае.

Например:

"Mon2": "$d kent#Yesterday I visited Yoba's Altar to give thanks for my husband's safe return.|Yesterday I visited Yoba's Altar to ask for my husband's safe return.#$e#I'm trying to stay positive, but it's hard sometimes.$s"
$y TODO. Расшифровывается как "dialogueQuickResponse"; Более простая форма вопроса. Записывается как $q, но в пределах одной и той же текстовой строки. В нем нет ни "dialoguePrerequisite" ($p), ни изменения дружбы.
Например: Penny: "$y 'Breakfast?_Yes please._Here you go._No, I'm good_More for me then!'"
$1 <letter ID>#<1st-time text> #$e# <nth-time text> Создает линию диалога, которую персонаж увидит только один раз (не более). <1st-time text> отображается только в том случае, если <letter ID> еще не помечено как отправленное (помечает его как отправленное); в противном случае будет показан <nth-time text>. <letter ID> не должно соответствовать фактическому письму (потому что оно не будет отправлено), но на него могут ссылаться события или другие строки диалога.
%fork Устанавливает переменную specialEventVariable1, которая может быть проверена более поздней командой fork.В основном полезно в диалоге реакции на $q вопросы во время событий.
[# # #] Дает игроку случайный предмет из пула ID предметов в скобках.
%revealtasteCharacterItemID Показывает, любит ли указанный персонаж (нравится, не нравится и т.д.) указанный предмет. Например: %revealtasteLewis258 заставит профиль Льюиса показать, что он любит чернику.

Пример вопроса

Чтобы понять, как работают $q, $r и $p, может быть полезен пример. Обратите внимание, как вы можете отформатировать сценарий, чтобы его было легче читать:

summer_Fri:
    "I think I'll go to the beach tomorrow!
    #$q 305/306 beachquestion_followup#Would you like to go with me?
        #$r 305 15 beachquestion_yes#Sure, I would love to!
        #$r 306 0 beachquestion_sorry#Oh, sorry, I've already made plans with someone else...
        #$r 306 -10 beachquestion_no#No thank you.
    ",
    beachquestion_yes: "Good! It's a date.$h",
    beachquestion_sorry: "Oh. Darn. Okay.$6",
    beachquestion_no: "Oh. Um. Sorry.$s",
    beachquestion_followup:
        "$p 305
            #Tomorrow should be a lot of fun!$h
            |Hmm, I wonder if I can get someone to go with me...$s
        ",

summer_Sat:
    "The beach is lovely this time of year...
    #$p 305
        #Thanks for coming with me today.$h
        |Oh, hi @, how's it going?
    ",

Приведенный выше диалог запускается в любую пятницу летом. NPC начинает с ответа, который всегда отображается: "Я думаю, что завтра пойду на пляж!"

Затем они задают вам вопрос.

#$q 305/306 beachquestion_followup#Would you like to go with me?

$q запускает вопрос. 305/306 проверяет, задавался ли этот вопрос ранее, и если да, то он отправляет вас на ключ диалога beachquestion_followup. (Обратите внимание, что вы можете называть свои диалоги как угодно, что облегчает чтение.)

Далее приведены ответы, которые может дать игрок. Вы можете добавить любое количество $r строк; здесь у нас есть три:

    #$r 305 15 beachquestion_yes#Sure, I would love to!
    #$r 306 0 beachquestion_sorry#Oh, sorry, I've already made plans with someone else...
    #$r 306 -10 beachquestion_no#No thank you.

Если вы скажете "да" (первый вариант), игра сохранит ID 305 как ответ, данный на этот вопрос. Далее, ваша дружба с этим NPC увеличивается на 15. beachquestion_yes указывает сценарию, какое продолжение диалогового ключа использовать в качестве ответа на ваш ответ.

Если вы скажете "нет" (второй и третий вариант), игра сохранит ID 306 как ответ, данный на этот вопрос, в зависимости от того, какой ответ вы дали, ваша дружба с NPC изменится либо на, 0, либо на, -10. Тогда будет использоваться либо beachquestion_sorry или beachquestion_no для продолжения диалога.

Теперь нам нужно создать диалоговые ключи для каждого ответа:

    beachquestion_yes: "Good! It's a date.$h",
    beachquestion_sorry: "Oh. Darn. Okay.$6",
    beachquestion_no: "Oh. Um. Sorry.$s",
    beachquestion_followup:
        "$p 305
            #Tomorrow should be a lot of fun!$h
            |Hmm, I wonder if I can get someone to go with me...$s
        ",

Следует отметить beachquestion_followup. Если игрок снова поговорит с NPC, $q 305/306 игра проверит, что на вопрос уже дан ответ, и вместо повторных вопросов, перейдет непосредственно к этому ключу.

$p 305 начинается переменная реакция, которая означает "если игрок выбрал "да", произнесите эту строку, иначе вместо этого произнесите эту строчку". Если игрок ответил "да", NPC отвечает радостно. OВ противном случае они скажут, что им нужно найти кого-то, кто пойдет с ними.

На следующий день есть еще один переменный ответ:

summer_Sat:
    "The beach is lovely this time of year...
    #$p 305
        #Thanks for coming with me today.$h
        |Oh, hi @, how's it going?
    ",

И снова первая строка (Пляж прекрасен...) всегда появляется, когда игрок разговаривает с NPC, но следующая строка зависит от того, ответили ли они " да " накануне или нет.


Вот еще один пример из существующего файла диалога Хейли. Обратите внимание, что форматирование сценария сложнее для чтения, но игра способна обрабатывать и то, и другое.

    summer_Sat: "Farming sounds so boring...#$q 42/43 summer_Sat_old#What do you even do all day?#$r 42 10 summer_Sat_12#Care for plants#$r 42 10 summer_Sat_12#Explore the caves#$r 43 -10 summer_Sat_13#Snoop around in your room#$r 42 10 summer_Sat_12#Dig for treasure" #!String
    summer_Sat_old: "#$p 43#Hey, you better not be snooping around in my room anymore!$a|But I guess it could get you in pretty good shape." #!String
    summer_Sat_12: "Hmm... sounds like a lot of work." #!String
    summer_Sat_13: "What? You'd better not be doing that!$a" #!String

В первый раз, когда summer_Sat диалог выбран, ни 42, ни 43 ответа не будет дано (потому что этот вопрос-единственный, на который они даны в качестве ответов), поэтому Хейли скажет: "Сельское хозяйство звучит так скучно... Чем ты вообще занимаешься весь день?" Игрок может выбрать один из этих ответов:

  • Уход за растениями
  • Исследование пещер
  • Порыскать в своей комнате
  • Копание в поисках сокровищ

Третий ответ, $r 43 -10 summer_Sat_13#Snoop around in your room, устанавливает ответ ID 43, уменьшает дружбу Хейли на 10 пунктов и запускает диалог summer_Sat_13 (Хейли говорит: "Что? Тебе лучше этого не делать!"). Все остальные ответы задают ответ с ID 42, увеличит дружбу Хейли на 10 пунктов и начнёт диалог summer_Sat_12 ("Хм... похоже, много работы.").

При следующем выборе summer_Sat будет указан один из ID ответа, перечисленных в команде $q (42 или 43). Следовательно, в $q и все, что после этого, отбрасывается, и диалог summer_Sat_old ставится на свое место. В этом новом диалоге используется команда $p чтобы изменить диалог Хейли на основе того, дали ли вы ответ с ID 43 на любой предыдущий вопрос. Если вы ответили "Snoop around your room,", все, что было до | будет использоваться, поэтому Хейли сейчас скажет,"Farming sounds so boring... Hey, you better not be snooping around in my room anymore!" Если ID ответа 43 не был указан (в этом случае вы должны были указать ID ответа 42, т. е. один из трех других ответов на предыдущий вопрос), всё после | будет использоваться, поэтому Хейли вместо этого скажет, "Farming sounds so boring... But I guess it could get you in pretty good shape."

Команды замены

Команды замены будут заменены соответствующей строкой. Обратите внимание, что только @ работает в почтовых записях.

Команда Описание
@ Имя игрока.
Например: Hi there @!
%adj Случайное прилагательное. (Определено в StringsFromCSFiles.xnb)
%noun Случайное существительное. (Определено в StringsFromCSFiles.xnb)
%place Случайное название места. (Определено в StringsFromCSFiles.xnb)
%spouse Имя супруга игрока.
%name Случайно сгенерированное имя.
%firstnameletter Первая половина имени игрока (округленная в меньшую сторону), как Nat если имя игрока Natalie.
%time Текущее время.
%band Название группы Сэма и Себастьяна.
%book Название книги Эллиота.
%rival Случайное имя пола фермера из StringsFromCSFiles.xnb (ключи Utility.cs.5499 через Utility.cs.5560). Не будет соответствовать имени игрока.
%pet Имя домашнего животного игрока.
%farm Название фермы.
%favorite Любимое занятие игрока.
%kid1 Имя первого ребенка игрока.
%kid2 Имя второго ребенка игрока.

Значения

Игра использует эти предопределенные значения в некоторых диалогах.

Дни недели

  • Mon (Понедельник)
  • Tue (Вторник)
  • Wed (Среда)
  • Thu (Четверг)
  • Fri (Пятница)
  • Sat (Суббота)
  • Sun (Воскресенье)

Сезоны

  • spring (Весна)
  • summer (Лето)
  • fall (Осень)
  • winter (Зима)

Первый/последующий год

В некоторых случаях игра использует значение "первый/последующий год" для условий диалога. Возможны два следующих значения:

Значение Описание
1 Происходит в первый год.
2 Происходит в любой год после первого (не только 2-й год).

ID ответов

ID ответа идентифицирует ответ, выбранный игроком в ответ на вопросы. В некоторых случаях на вопрос может быть несколько ответов с одинаковыми ID (например, несколько вариантов "да"), или используйте один и тот же идентификатор для "каждого" вопроса (в этом случае идентификатор просто показывает, ответил ли игрок на вопрос).

Моды могут добавлять свои собственные ID ответов, но вот ванильные идентификаторы по состоянию на 1.3.36¹:

Диалоги
NPC Вопрос Ответ
Абигейл fall_Sun
I was thinking about dyeing my hair again... what do you think?
27: Dye it black.
27: Why not blonde?
27: How about bubblegum pink?
28: I like your hair just the way it is!
Абигейл summer_Sun
Okay... pretend you just won a free vacation. Where would you go?
25: The beach
26: In a dark cave
26: The old, gnarled forest
25: Joja Mega-Mall
Абигейл Sun2
@, What do you think happens to us after we die?
17: I have no idea.
18: We come back as spooky ghosts.
17: We go to Heaven.
18: Our energy bodies enter the astral plane.
17: Nothing. We just cease to exist.
Абигейл winter_Sun
I made these two drawings. What do you think?
29: I like the jungle island and the tiger.
30: I like the orc with the battleaxe.
29: I don't like either of them.
Алекс fall_Wed
Do you think the ladies like my haircut?^What do you think about my haircut?
54: It looks very fashionable.
55: It looks like some kind of fungal growth.
Алекс summer_Wed
Do you think I'll ever turn pro?
52: You're destined to be a sports legend
52: Maybe, if you practice a lot
53: No, you'll most likely fail and become a salesman
Алекс Wed
I'd ask you to throw the ball around, but you don't really seem like the sports type.^If you weren't a girl I'd ask you to play catch.
6: I'm fine just watching you from a distance.
5: I want to play catch with you!
5: (angry) What's that supposed to mean?
Клинт Mon
I bet you can't guess what my great-grandfather was...
9: A blacksmith.
9: A silly clown.
9: A sarcastic jerk.
Хейли fall_Sat
*sigh*...what do you think I should do today?
44: Watercolor painting
44: Relax and read a magazine
44: Stop being a selfish crybaby
Хейли summer_Sat
What do you even do all day?
42: Care for plants
42: Explore the caves
43: Snoop around in your room
42: Dig for treasure
Лея Mon
So why did you become a farmer?
21: I want to make tons of money.
22: It's more "real" than living in the city.
211132: To follow in grandpa's footsteps.
22: I wanted to escape my old life.
Мару summer_Thu
I've decided I'm going to build a robot someday.
35: That should be very easy for you
36: You should be more realistic
35: It sounds challenging
Мару Sun
Do you have fun working on the farm?
3: Yes.
4: No.
Пенни Mon4
But it's best not to dwell on bad things, right?
7: Right. It's best to be positive!
8: I think it's good to be realistic.
Сем Wed
Hey.. What do you think my new song should be about?
20: Farming, mining, and chopping wood.
8820: A city in the sea.
8821: Trains.
19: Choose anything. It'll still be a horrible song.
Себастиан fall_Fri
Do you read, @?
62: Yep. The classics.
63: Only Sci-fi and Fantasy
62: I like a good Romance
63: No, I don't read books
Себастиан Fri2
So what do you do when you aren't working?
15: More Farming
16: Comic books
15: Shopping
15: Sports
События
Событие Вопрос Ответ
Событие 4-х сердечек для Абигейл @! Why are you out here in the rain?$7 32: Just doing some work
32: Enjoying the weather
32: I could ask you the same question
Событие 6-ти сердечек для Абигейл You've used a sword before, haven't you? 847951: Yes, and it's exciting!
847951: Yes, but only in self-defense
847951: Yes, but it's dangerous. You should stay safe.
847951: No
Событие 10-ти сердечек для Абигейл *sniff*$s 776589: What happened?
776589: Are you okay?
Событие 10-ти сердечек для Абигейл I guess I'm not as tough as I thought...$8 34: You're safe with me.
34: I get scared too.
34: You're crying like a little baby. Stop.
Событие 5-ти сердечек Алекса I'm worthless...$s 57: That's crazy. You're a genius!
57: We all have our strengths and weaknesses
57: Worthless? Yeah, that about sums it up.
Событие 3-х сердечек I Клинта Got any tips?^What advice can you give me? 211: Impress women with your strength and charm
211: Act crazy, to keep people guessing
211: Just act natural... be yourself
211: Treat women the same as men
Событие 6-ти сердечек Деметриуса How would you classify a tomato? 59: Vegetable
59: Fruit
Событие 2-х сердечек Эллиота A question... What kind of books do you like, @? 958699: Mystery
958700: Romance
958701: Sci-Fi
Событие 4-х сердечек Эллиота Wait. I propose a toast! To... 28376: To Pelican Town!
28376: To our friendship!
28376: To my good health!
28376: To your doom!
Событие 6-ти сердечек Эмили So... *gasp*... what did you think?$h 213: That was amazing!
213: That was embarrassing...
213: (Say nothing and do a slow clap)
Событие 4-х сердечек Эвелин Well, what do you think? 51: It's delicious!
51: It was like chewing on a hockey puck
Событие 4-х сердечек Гаса @, what's going on here? 207: You need to pay your tab right now!
208: The saloon isn't doing well, financially
Событие 2-х сердечек Хейли It's only because I cleaned them last week!$a 46: Stop whining and just clean it!
45: Haley, why not have this be your one weekly job?
46: Emily, take the high road and do it this time.
Событие 4-х сердечек Хейли Say... you're pretty strong, aren't you? 47: Yes
47: No
Событие 6-ти сердечек Хейли I'll never find another one like it...$s 48: Relax, I'll just buy you a new one!
48: I'm really sorry...
Событие 2-х сердечек Харви @, what do you think George should do? 84: George should follow Dr. Harvey's advice.
85: George knows what's best for his own body.
Событие 4-х сердечек Харви Hmm... Your pulse is high.$u 86: I'm a little nervous...
86: I'm out of breath from working on the farm.
86: Are you really a doctor? My pulse is fine!
Событие 3-х сердечек Кента (Say something to Kent)$s 215: Jodi's to blame... she should've known better!
215: I know you're hurting... but don't blame your wife.
215: (Lie) Blame me... I asked for popcorn
Событие 4-х сердечек Леи Was that selfish of me, @?$s 83: No, it had to be done.
83: No, and your ex sounds like an idiot.
83: No, but you would've been better off staying in the city.
83: Yeah, a little.
83: Yeah, but it's natural to care about yourself first.
Событие 6-ти сердечек Льюиса @...You overheard everything, didn't you?$s 200: Yes... but I'll keep it a secret.
201: Yes... and I'm going to tell everyone.
Событие 2-х сердечек Мару Right, @? 15933: (Say nothing)
15933: Actually, your Dad was being weird.
Событие 4-х сердечек Мару @, what should I do? 38: Just scoop it off the floor. He won't know the difference.
39: Tell Harvey it was my fault.
38: Tell Harvey it was an accident.
Событие 6-ти сердечек Мару What do you see? 40: A beautiful planet.
40: A cold, dark abyss.
Событие 8-ми сердечек Мару I'm so sorry.$8 41: It's okay, it doesn't even hurt.
41: You'd better be. This hurts like crazy!
Событие 10-ти сердечек Мару Well, what do you think, @? 18981: I'm so impressed with your inventions.
18981: I'm disappointed... You should've made that robot your slave.
18981: So is your Dad okay with 'us' now?
18981: (Just stare at Maru and say nothing)
Событие 10-ти сердечек Мару You must have a good reason for saying that...$a 18982: MarILDA's just a piece of machinery designed to act human.
18982: I was just kidding. MarILDA deserves her freedom.
18982: I would've put her to work on the farm.
Событие 2-х сердечек Пенни @? You were watching us? 71: I was. You did a kind thing there, Penny.
71: You should've left him alone. Now he's grumpy.
71: I'm just taking a walk, minding my own business.
Событие 6-ти сердечек Пенни ...well? 72: (Lie) Mmm! That was delicious!
73: Uh... can I get the rest to go?
73: Well it's definitely unique... how did you get it so rubbery?
Событие 6-ти сердечек Пьера Promise me you won't tell anyone about this. 50: Your secret is safe with me.
50: Your wife deserves to know about this.
Событие 6-ти сердечек Робин Have you ever made anything out of wood, @? 66: Yes
66: No
Событие 2-х сердечек Сэма Say, @... what kind of music do you like? 76: Cheerful pop music.
77: Experimental noise rock.
78: Hi-Energy dance music.
79: Honky-tonky country music.
Событие 4-х сердечек Сэма ...Tell her, @.$s 80: Sam dropped the snack as he was handing it to me.
80: Sam handed me the snack and then I dropped it.
81: Sam dropped it on purpose. He thought it would be funny.

¹ Извлечено с помощью скрипта LINQPad.

Темы для разговоров

Тема разговора - временный флаг, который может быть установлен в предварительных условиях события и может вызвать одноразовый диалог NPC (если у них есть соответствующий ключ диалога). Они хранятся в Game1.player.activeDialogueEvents, пока они активны.

Тему разговора можно начать с помощью addConversationTopic команда события, %item conversationTopic команда почты, или в коде, добавив его в Game1.player.activeDialogueEvents.

Игра определяет следующие события:

ID Продолжительность Триггер
Bundles
cc_Begin 4 дня Устанавливается в ролике с Волшебником, после прочтения первой заметки Джунимо в общественном центре.
cc_Complete 4 дня Общественный центр завершён. (Не относится к пути JojaMart.)
cc_Boulder 7 дней Валун в Горы удаляется с помощью пакета для общественного центра или формы улучшения Joja.
cc_Bridge 7 дней Мост в Карьер ремонтируется с помощью пакета услуг общественного центра или формы улучшения Joja.
cc_Bus 7 дней Автобусная остановка ремонтируется с помощью пакета услуг общественного центра или формы улучшения Joja.
cc_Greenhouse 3 дня Теплица построена с помощью пакета общественного центра. (Не относится к пути JojaMart.)
cc_Minecart 7 дней Вагонетки разблокированы с помощью пакета услуг общественного центра или формы улучшения Joja.
joja_Begin 7 дней Первый раз, когда этот игрок открывает Бланк с проектами по общественному развитию Джоджа.
movieTheater 3 дня Кинотеатр построен.
События для супругов
elliottGone 6 дней Устанавливается, когда начинается событие с четырнадцатью сердцами Эллиота.
ElliottGone1
ElliottGone2
ElliottGone3
ElliottGone4
ElliottGone5
ElliottGone6
ElliottGone7
В тот же день Часть события с четырнадцатью сердцами Эллиота. Первый флаг устанавливается при его запуске; последующие флаги устанавливаются последующими письмами от Эллиота.
emilyFiber 2 дня Часть события четырнадцати сердец Эмили. После завершения задания.
haleyCakewalk1
haleyCakewalk2
В тот же день Часть события четырнадцати сердец Хэйли.
leahPaint В тот же день Часть события четырнадцати сердец Леи.
pennyRedecorating 2 дня Часть события четырнадцати сердец Пенни.
samJob1
samJob2
2 дня Часть события четырнадцати сердец Сэма.
samJob3 3 дня Часть события четырнадцати сердец Сэма.
sebastianFrog В тот же день Устанавливается, когда начинается событие с четырнадцатью сердцами Себастиана.
sebastianFrog2 6 дней Часть события четырнадцати сердец Себастиана.
shaneSaloon1
shaneSaloon2
В тот же день Часть события четырнадцати сердец Шейна.
Другие события
dumped_Guys
dumped_Girls
7 дней Устанавливается после соответствующего группового события с десятью сердцами (Например, смотри Абигейл#Групповое событие с десятью сердечками).
secondChance_Girls
secondChance_Guys
14 дней Устанавливается после соответствующего группового события с десятью сердцами (Например, смотри Абигейл#Групповое событие с десятью сердечками).
pamHouseUpgrade 4 дня Устанавливается после просмотра события Пэм (обновления дома), если игрок выбрал раскрытие в качестве дарителя.
pamHouseUpgradeAnonymous 4 дня Устанавливается после просмотра события Пэм (обновления дома), если игрок выбрал остался анонимным.
willyCrabs 4 дня Устанавливается после события с шестью сердцами Вилли.
Другое
Introduction 6 дней При создании фермера(игрока) (например, запуск нового сохранения или первое присоединение к многопользовательской игре).
FullCrabPond 14 дней Первый раз, когда Рыбный пруд содержит 10 Крабов.