Line 49: |
Line 49: |
| # Else character dialogue is read from the character-specific files. | | # 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). | | # 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). |
| + | |
| + | ==Dialogue format== |
| + | Dialogue text can contain tokens and commads which control the dialogue box, change the text (e.g. switch between gender-specific strings), inject values, etc. |
| + | |
| + | Special tokens: |
| + | |
| + | {| class="wikitable" |
| + | |- |
| + | ! character |
| + | ! description |
| + | |- |
| + | | <tt>#</tt> |
| + | | Separates two commands in a dialogue string. |
| + | |- |
| + | | <tt>{</tt> |
| + | | TODO. Stands for "breakSpecialCharacter". |
| + | |- |
| + | | <tt>^</tt> |
| + | | 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>'' |
| + | |- |
| + | | <tt>*</tt> |
| + | | TODO. Stands for "quickResponseDelineator". |
| + | |} |
| + | |
| + | Dialogue commands: |
| + | |
| + | {| class="wikitable" |
| + | |- |
| + | ! group |
| + | ! command |
| + | ! description |
| + | |- |
| + | | portraits |
| + | | <tt>$h</tt> |
| + | | Switch the speaking character to their happy portrait. |
| + | |- |
| + | | portraits |
| + | | <tt>$s</tt> |
| + | | Switch the speaking character to their sad portrait. |
| + | |- |
| + | | portraits |
| + | | <tt>$u</tt> |
| + | | Switch the speaking character to their unique portrait. |
| + | |- |
| + | | portraits |
| + | | <tt>$neutral</tt> |
| + | | Switch the speaking character to their neutral portrait. |
| + | |- |
| + | | portraits |
| + | | <tt>$l</tt> |
| + | | Switch the speaking character to their love portrait. |
| + | |- |
| + | | portraits |
| + | | <tt>$a</tt> |
| + | | Switch the speaking character to their angry portrait. |
| + | |- |
| + | | portraits |
| + | | <tt>${{t|id}}</tt> |
| + | | Switch the speaking character to the portrait at the given index in their portraits file. NOTE: <tt>$1</tt> can't be used as the first dialogue command (see <tt>$1</tt> below). |
| + | |- |
| + | | dialogue |
| + | | <tt>$q {{t|?}} {{t|?}}#{{t|text}}</tt> |
| + | | TODO. Show a dialogue box containing the given question text. |
| + | |- |
| + | | dialogue |
| + | | <tt>$r {{t|?}} {{t|?}} {{t|response ID}}#{{t|answer text}}</tt> |
| + | | TODO. Adds an {{t|answer text}} option to the question dialogue, which when selected triggers the response indicated by {{t|response ID}} from the speaker's <tt>Content\Characters\Dialogue\*.xnb</tt> file. |
| + | |- |
| + | | dialogue |
| + | | <tt>$e</tt> |
| + | | End the current dialogue. Everything before <tt>$e</tt> is shown the first time you talk to an NPC; everything after is shown in subsequent conversations. |
| + | |- |
| + | | dialogue |
| + | | <tt>$b</tt> |
| + | | End the current textbox, so the next part of the dialogue is shown in a new box. |
| + | |- |
| + | | dialogue |
| + | | <tt>$k</tt> |
| + | | TODO. Stands for "dialogueKill". |
| + | |- |
| + | | dialogue |
| + | | <tt>$c {{t|probability}}</tt> |
| + | | Choose the given text with a {{t|probability}} between 0 and 1. |
| + | |- |
| + | | dialogue |
| + | | <tt>$d {bus|joja|cc}</tt> |
| + | | TODO. Stands for "dialogueDependingOnWorldState". |
| + | |- |
| + | | dialogue |
| + | | <tt>$y</tt> |
| + | | TODO. Stands for "dialogueQuickResponse"; works like $q, but within one and the same text line. |
| + | |- |
| + | | dialogue |
| + | | <tt>$p</tt> |
| + | | TODO. Stands for "dialoguePrerequisite". |
| + | |- |
| + | | dialogue |
| + | | <tt>$1</tt> |
| + | | TODO. When used as the first dialogue command, stands for "dialogueSingle". Possibly a check for whether the player is dating (the speaking character?). |
| + | |- |
| + | | dialogue |
| + | | <tt>%fork</tt> |
| + | | TODO. Seems to have to do with questions and forks, however is used sparingly in originals game code. Seems to be replaced with the actual question command. |
| + | |- |
| + | | content |
| + | | <tt>@</tt> |
| + | | Replaced with the player's name.<br />''Example: <code>Hi there @!</code>'' |
| + | |- |
| + | | content |
| + | | <tt>%adj</tt> |
| + | | Replaced with a random adjective. |
| + | |- |
| + | | content |
| + | | <tt>%noun</tt> |
| + | | Replaced with a random noun. |
| + | |- |
| + | | content |
| + | | <tt>%place</tt> |
| + | | Replaced with a random place name. |
| + | |- |
| + | | content |
| + | | <tt>%spouse</tt> |
| + | | Replaced with the name of the farmer's spouse. |
| + | |- |
| + | | content |
| + | | <tt>%name</tt> |
| + | | TODO. Stands for "randomNameSpecialCharacter". Seems to return a random name? |
| + | |- |
| + | | content |
| + | | <tt>%firstnameletter</tt> |
| + | | TODO. Stands for "firstNameLettersSpecialCharacter". |
| + | |- |
| + | | content |
| + | | <tt>%time</tt> |
| + | | Replaced with the current time. |
| + | |- |
| + | | content |
| + | | <tt>%band</tt> |
| + | | TODO. |
| + | |- |
| + | | content |
| + | | <tt>%book</tt> |
| + | | TODO. |
| + | |- |
| + | | content |
| + | | <tt>%rival</tt> |
| + | | TODO. |
| + | |- |
| + | | content |
| + | | <tt>%pet</tt> |
| + | | Replaced with the name of the farmer's pet. |
| + | |- |
| + | | content |
| + | | <tt>%farm</tt> |
| + | | Replaced with the farm name. |
| + | |- |
| + | | content |
| + | | <tt>%favorite</tt> |
| + | | TODO. Returns favorite thing? Unused? |
| + | |- |
| + | | content |
| + | | <tt>%kid1</tt> |
| + | | Replaced with the name of the farmer's first child. |
| + | |- |
| + | | content |
| + | | <tt>%kid2</tt> |
| + | | Replaced with the name of the farmer's second child. |
| + | |} |
| | | |
| [[Category:Modding]] | | [[Category:Modding]] |