Bethesda Tutorial Conversations
OverviewEdit
This chapter will show you how to make conversation systems in the editor, allowing actors to carry out random conversations as they go about their behavior.
The reader will learn:
- How conversations are created in the editor
- How to set up a basic system between two NPCs.
ConversationsEdit
In Skyrim, random conversations are triggered by the Story Manager, specifically by an Actor Dialogue Event. Once that event is processed, the Story Manager will attempt to find a conversation based on a set of parameters, and if successful, the two actors will carry it out. While this initially seems like a complicated process, once the basics are understood it becomes very easy to set up new conversations.
Creating a ConversationEdit
While conversations can be written to accomodate a range of NPCs, they turn out best when instead written for a specific pair of characters, so we'll start there.
Our good friend Bendu Olo leads a pretty solitary life right now. Let's make him a bit more of a social butterfly. Since the only other actor in Mixwater Mill is Gilfre, the first thing we'll need to do is get the two NPCs into a situation where they can talk to one another. That requires two things: both NPCs in the same location, and at least one of them prepared to initiate conversations. We can give Bendu a Sandbox Package in cell 'MixwaterMillGilfresHouse' to have him visit Gilfre in her home between the hours of 2 and 4 PM, when she's already scheduled to be having lunch. That will get the two of them in the same place, and then we just need to make sure that at least one of them has a package with "AllowConversations" set to True (many packages default to allow conversations, including Sandbox, so you likely don't need to change anything here.)
Now we're ready to actually build a conversation for these two. Start by creating a new quest called "DialogueMixwaterMillBenduGilfre1". Give it a priority of 30, and change the event to "Actor Dialogue Event". Next we'll work on the aliases for this quest, which are the most important part.
Conversation Quest AliasesEdit
Because this quest will be triggered by an Actor Dialogue Event, it will pass through certain information to the Story Manager. The first two Aliases we create will rely on the data from the Event to make sure the system has grabbed the correct two people for this conversation.
Start by creating a new Reference Alias named "Actor1." For the Fill Type, set it to "Find Matching Reference," checking "From Event". In the drop-down for Event Data, select "Actor 1." In the field for match conditions, first enter a GetIsID condition for GSQBenduOlo. Make sure the "OR" checkbox is checked here. Now enter a new GetIsID condition for Gilfre.
Now we need an alias for Actor2. As a shortcut, right-click the entry for Alias Actor1, and select "Duplicate". this will create a new Alias, change the name (likely to Actor1000) but keep all of the relevant data intact. Then all that needs to be done is changing the Event Data under "Find Matching Reference" to "Actor 2", and re-naming the Alias ID to "Actor2".
As the Actor Dialogue Event page states, the data coming through from the event are Actor 1 -- the person initiating the conversation -- and Actor 2 -- the person being spoken to. What we've just done is made sure that our quest will work if either Bendu tries to talk to Gilfre, or if Gilfre tries to talk to Bendu. But it will only be valid for these two characters.
We're not done with Aliases just yet. We still need two more for the actual conversation. Each of these will be specific to one of our actors, so they can simply be named "Bendu" and "Gilfre", with each set to fill from their respective Unique Actors.
Building the SceneEdit
Now that the aliases are in place, we can begin building the actual conversation.
All conversations are set up as Scenes, so we start by creating a new one. Let's name it "MixwaterMillScene01".
One of the most important parts of this process (and the easiest to forget) is the two checkboxes above the main scene window: we want both "Begin on quest start" and "Stop quest on end" checked here. This will ensure that the scene begins running as soon as the quest is triggered, and will stop as soon as the scene ends. That will release our actors from the quest, allowing them to do something else.
The scene itself can be very simple. Add both actors "Bendu" and "Gilfre" (leaving "Actor1" and "Actor2" out of it) and a few phases. Now add some dialogue:
Phase 1 - add a line of dialogue for Bendu: "How is the mill running, Gilfre?"
Phase 2 - add a line of dialogue for Gilfre: "