Verdant Skies Wiki
(Wow, lots of dialog documentation.)
(No difference)

Revision as of 21:50, 7 June 2019

Writing dialog and events can be done in text files included with your mod. They are written in a custom markup language designed to be very simple, allowing you to make new dialog without needing any coding skills.

Dialog Basics

The best way to get starting with dialog, is to take a look at some examples! All of the events in the base game are available on the modding resources page. Additionally, it's easy to take a look at the mods to see how the dialog inside works. Let's start with an example:

-General-0Heart-Normal-1 Emma: You can tell a lot about a person based on their favorite tool. Emma: What's yours? Player: {I like hammers!} [goto General-0Heart-Normal-1-1]

               {My computer.}				[goto General-0Heart-Normal-1-2]
               {Definitely clamps.}		[goto General-0Heart-Normal-1-3]
               {Wrench!}   				[goto General-0Heart-Normal-1-4]

-General-0Heart-Normal-1-1 [SetEmotion Emma embarrassed] Emma: That's ... nice. [end]

-General-0Heart-Normal-1-2 [SetEmotion Emma embarrassed] [AddFriendshipOnce Emma -2] Emma: That's not quite what I had in mind. [end]

Labels start with a dash, such as "-General-0Heart-Normal-1". This is a daily dialog label, as explained in a following section.

Dialog begins with a character's name, followed by a colon and the text that they say.

Commands are inside square brackets. For example, [SetEmotion Emma embarrassed] changes Emma's (Rosie's) portrait artwork. The [AddFriendshipOnce Emma -2] call subtracts two friendship from your total for her. It only does it once, though, so you can't repeatedly gain or lose friendship. For a complete list of dialog commands, see below.

Your dialog is triggered by EventTriggers, so you might want to take a look at that.

Daily Dialogs

Daily dialogs are the single unique message you get each day. They work a little differently and don't require triggers. The first time you get a new message each day, you also automatically get friend points. An algorithm chooses which dialogs you are eligible to receive and then chooses the one you've seen least recently. This maximizes the number of different but fresh dialogs you can get at a time.

They follow a pattern, and the first message you get is: "-General-0Heart-Normal-1"

All daily dialogs start with General, and have 4 sections. The second section (0Heart in this example) relates to your relationship status. 0Heart occurs before you have your first heart.

Valid daily relationship values:

  • 0Heart to 8Heart - For that number of hearts.
  • Married - Only when you are married to that person.
  • MoveIn - Shows both when you are married and when you are moved in.
  • JustFriends - If you choose not to date them, you'll go down this path. After breaking up with someone, you will also get these dialogs.
  • BrokenUpWithBaby - If you've broken up with them, but you do have a baby, you can get these. Although the code is implemented, I don't think we have any in the base game. This would be a fun mod to write!
  • Baby - You have a baby with this person, regardless of your other relationship status.

"Normal" - should always be "Normal". This was added to expand the dialog system in the future. We're not sure what it might be used for.. Early in development it was intended to be for weather or seasonal changes.

The final section is a number. It simply serves to order the different valid dialogs. For each heart level, it's nice to have 6 or 7 dialogs. That's usually enough to get them to the next level. For longer term relationship states, like JustFriends, it's nice to have more like 12 or 15.

Take a look at existing characters to get more information on how daily dialogs work.

Dialog Command List

There are many many different dialog commands. You can always see the examples for how they are used, but some of the most popular ones will be documented here:

  • JumpIfSet ( [JumpIfSet Miles-NoMeat Special-GivePlayerMeal-1-Cornball] ) If the flag "Miles-NoMeat" is set, it will jump to the specified label.