Midnight Stardew


Extended Conversations


Extended conversations are ways to have characters continue a thought between days. As an example a character might discuss something personal when the player speaks to them. The next time the player speaks to the character, on a separate day, the player could tell the player that they appreciate them listening to their story the last time they spoke.

This ability also allows characters to tell extended stories across multiple days.

{
    "Name": "Robin",
    "Conversations": [
        {
            "Statement": [ "I lost my saw!" ],
            "NextConversation": // The follow up conversation
            {
                "Statement": 
                [
                    "Remember I told you I had lost my saw?",
                    "Well, I found it in Maru's room!",
                    "I wonder what she was doing with it in there!"
                ]
            }
        }
    ]
}

The "NextConversation" tag lets the framework know that what follows is a conversation to display the next time the player speaks on the following day. So if the player speaks to Robin on Monday she will say "I lost my saw!". The first time the player speaks to Robin on Tuesday or any day after that she will say "Remember I told you I had lost my saw?", along with all of the rolling dialogue indicated.

With Midnight Stardew framework player can speak to characters more than once a day. However, a second extended conversation can not be started until the current extended conversation finishes. This is handled internally and the writer doesn't need to worry about it.

{
    "Name": "Robin",
    "Conversations": [
        {
            "Statement": [ "I lost my saw!" ],
            "NextConversation": // The follow up conversation
            {
                "Statement": 
                [
                    "Remember I told you I had lost my saw?",
                    "Well, I found it in Maru's room!",
                    "I wonder what she was doing with it in there!"
                ]
            }
        },
        {
            "Statement": [ "I lost my hammer!" ],
            "NextConversation": // The follow up conversation
            {
                "Statement": 
                [
                    "Remember I told you I had lost my hammer?",
                    "Well, I found it in Sebastian's room!",
                    "I wonder what he was doing with it in there!"
                ]
            }
        }
    ]
}

So in this example the framework will randomly choose either the lost saw or the lost hammer dialogue. Speaking to Robin again that day won't be possible since there aren't any dialogues that aren't extended conversations in the file. The next time the character does speak to Robin it will display the next converation. The player could speak to her again that day or the next and the framework will again randomly choose one of them to display.

As a reminder, adding a Key to the conversation can gaurantee it only happens once.

{
    "Name": "Robin",
    "Conversations": [
        {
            "Key": "lostsaw",
            "Statement": [ "I lost my saw!" ],
            "NextConversation": // The follow up conversation
            {
                "Statement": 
                [
                    "Remember I told you I had lost my saw?",
                    "Well, I found it in Maru's room!",
                    "I wonder what she was doing with it in there!"
                ]
            }
        },
        {
            "Statement": [ "I lost my hammer!" ],
            "NextConversation": // The follow up conversation
            {
                "Statement": 
                [
                    "Remember I told you I had lost my hammer?",
                    "Well, I found it in Sebastian's room!",
                    "I wonder what he was doing with it in there!"
                ]
            }
        }
    ]
}

In this example the lost hammer conversation could happen any number of times but the lost saw conversation could only happen once.

The conversation within "NextConversation" is, again just like any other conversation and can include Reqs, Effects, Responses, ect.

{
    "Name": "Robin",
    "Conversations": [
        {
            "Key": "lostsaw",
            "Statement": [ "I lost my saw!" ],
            "NextConversation": // The follow up conversation
            {
                "Statement": 
                [
                    "Remember I told you I had lost my saw?",
                    "Well, I found it in Maru's room!",
                    "I wonder what she was doing with it in there!"
                ]
            }
        },
        {
            "Statement": [ "I lost my hammer!" ],
            "NextConversation": // The follow up conversation
            {
                "Statement": 
                [
                    "Remember I told you I had lost my hammer?",
                    "Well, I found it in Sebastian's room!",
                    "I wonder what he was doing with it in there!"
                ],
                "Effects":
                {
                    "Hearts": "20"
                }
            }
        }
    ]
}

The lost hammer will result in a gain of 20 friendship points with Robin when she tells you she found the hammer.