Arcane University: Dialogue Systems for Writers
This article is a guide for writers on what the various systems in Skyrim's dialogue are and how to utilize them effectively, discussing several common pitfalls in the process.
Contents
Dialogue Branches
A large portion of dialogue that NPCs have in Skyrim occurs during conversation with the Player and is largely accessed through the dialogue menu. This is known as Player Dialogue, and dialogue of this kind is structured in Branches.
By default, when the Player initiates dialogue with an NPC, the subsequent dialogue menu will be a collection of separate Dialogue Branches that were written for this NPC, each option being its own Branch. In order for a Branch to appear in this way, it must be of a specific type, namely a Top-Level Branch.
A characteristic of Top-Level Branches is that they begin with a dialogue option by the Player, and not a line from the NPC. This allows many Branches from many different sources to be available side-by-side, without the NPC pushing the conversation in a specific direction with their opening line.
Here is a hypothetical NPC document. Player dialogue options are in bold. Each top-level entry is the beginning of a Top-Level Branch. In this example, the Branches represent typical subjects that a player might inquire into in non-quest related dialogue.
- 1. How long have you been working here?
- 1.1. I've been working these mines ever since the Forebears set foot in this place!
- 1.2. Back then, this place was a frontier. Well, in some ways, it still is.
- 2. Do you have any family?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this.
- 2.1.1. Does your daughter live alone?
- 2.1.1.1. My mom and pop look after her. She's too young to be by herself.
- 2.1.1. Does your daughter live alone?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this.
Note that 2.1.1. mentions the daughter, and therefore has to follow 2.1. Here, it is simply dialogue continuing within the same Branch, which has expanded into a small dialogue tree. Once the Player has entered into such a tree, they will no longer see the Top-Level dialogue options until they exit dialogue or reach the end of the Branch, at which point the Top-Level menu will be shown again.
Although this example is small, Branches can become so elaborate that the Player will have a bad time treading through all of the dialogue buried in them. If needed, the dialogue can be broken up by splitting part of it into its own Branch. But here, it wouldn't make sense to ask about the NPC's daughter if we haven't heard about her yet! One tool that a writer can use here is to have one piece of dialogue unlock a Top-Level Branch:
- 1. How long have you been working here?
- 1.1. I've been working these mines ever since the Forebears set foot in this place!
- 1.2. Back then, this place was a frontier. Well, in some ways, it still is.
- 2. Do you have any family?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this. (unlocks 3)
- 3. You mentioned a daughter. Does she live alone?
- 3.1. My mom and pop look after her. She's too young to be by herself.
Note how I rewrote 3. to be more natural as a conversation starter, since it no longer has to follow directly after 2.1.
- Implementer's note: "Unlocked" branches in non-quest related dialogue are usually implemented by having the unlocking dialogue set a stage in the settlement's general dialogue quest. The unlocked branch will be conditioned on that stage using GetStageDone. The quest will usually have a bunch of these stages; document them by describing what they do in the journal entry text.
As mentioned before, the dialogue menu is a collection of Top-Level Branches from various sources. If this NPC is currently involved in a quest, then they may have some active dialogue related to it, and the in-game dialogue menu will look like this:
- I found the pickaxe you were looking for.
- How long have you been working here?
- Do you have any family?
- You mentioned a daughter. Does she live alone?
The display order of Branches is determined by a number called Priority which is configured by the implementer, and standard practice is to give quests (in the narrow sense of the word) a higher Priority than non-quest dialogue, hence it appears at the top of the list.
Greetings
Although Top-Level Branches always begin with a dialogue option selected by the Player, the conversation itself will still be opened with a line from the NPC. That is because a Greeting (sometimes also referred to as a Hello) will run first.
Greetings are actually a separate system from Branches. By default, a Greeting can run when the Player initiates dialogue as well as when the Player just walks past, although it can be restricted to one or the other if needed (in practice, this distinction is rarely made). Greetings are located in a stack that is separate from the Branches. Like Branches, Greetings can be pooled from different sources and conditioned on a variety of factors.
- Greetings
- 1. Welcome, traveler. What brings you to these mines?
- 2. If you mine anything of value, it's yours to keep.
- 3. My back's acting up...
- Dialogue
- 1. How long have you been working here?
- 1.1. (etc)
Greetings can be in a fixed or in a random order. In non-quest dialogue, they are typically in a fixed order, and are written with this in mind. Note how the more important, introductory Greeting comes first, followed by ones that are just flavor text. Greetings of this kind will be implemented with a reset timer so that each one will only run once until some amount of in-game time has passed, at which point it can run again. Although the NPC may seem like an amnesiac for bidding the Player welcome a second time, this is common practice and helps keep custom dialogue active in the game. When all Greetings are on a timer, the NPC will fall back to generic dialogue (see below).
- Implementer's note: The value of this reset timer is inconsistent in vanilla, as you'll find reset times including 0.5, 2 or even 8 hours.
Instead of a reset timer, a line can be set to run only once in the entire playthrough. This is sometimes used for an initial Greeting if the NPC formally introduces themselves, but it is likely to go over the Player's head, as it passes quickly and will never be heard again.
- Greetings
- 1. Abak Lendrian. Miner, father, widower. (say once)
- 2. Welcome, traveler. What brings you to these mines?
- 3. If you mine anything of value, it's yours to keep.
- 4. My back's acting up...
Although a Greeting can technically consist of multiple lines, this is arguably not desired, because the Player can select an option in the dialogue menu r exit out before the second line has had a chance to come up. It is also never seen in vanilla.
One common pitfall is to write the dialogue options as though they are replies to a Greeting which the NPC is assumed to speak first. Consider this broken example:
- 1. A traveler! What are you looking for in these mines?
- 1.1. Nothing, but I was wondering how long you've been working here.
- 1.1.1. I've been working these mines ever since the Forebears set foot in this place!
- 1.1.2. Back then, this place was a frontier. Well, in some ways, it still is.
- 1.2. Just taking a look. Do you have any family here?
- 1.2.1. (etc)
- 1.1. Nothing, but I was wondering how long you've been working here.
As mentioned before, Top-Level Branches have to start with a dialogue option chosen by the player, so starting with 1. seems to be an error. We could instead treat it as a Greeting with a reset timer, and 1.1. and 1.2. as top-level branches. After 1. has been spoken once, however, the next conversation will open with a different Greeting, and then 1.1. and 2.2. will be non-sequiturs. Imagine the flow of conversation if a generic Greeting is active:
- NPC: "Hello."
- Player: "Nothing, but I was wondering how long you've been working here."
Moreover, when the end of a Branch is reached, the top-level dialogue menu returns, leading to more non sequiturs:
- NPC: "Back then, this place was a frontier. Well, in some ways, it still is."
- Player: "Just taking a look. Do you have any family here?"
Although it is possible to force 1. to always open the conversation, this will feel extremely repetitive, as it will seem as though the exact same conversation is repeating itself over and over. The proper solution here is to split 1. into one or more greetings, and rewrite 1.1. and 1.2. to be more general, so that they no longer require a specific line to precede them. The result of this would be the correct examples further above.
As a final note, there are NPCs whose entire unique dialogue consists of a short stack of Greetings. This means they will simply say a line when spoken to, without a dialogue menu opening up (although a dialogue menu can still appear if there is a quest active that gives them dialogue). Greetings-only NPCs can be nonetheless memorable, as attested to by Nazeem, who became one of the most infamous NPCs in Skyrim with just this:
- Greetings
- 1. Do you get to the Cloud District very often? Oh, what am I saying - of course you don't.
- 2. I actually advise the Jarl on political matters. My input is invaluable, of course. But this is all probably a bit over your head.
- 3. Oh, it took years, but I earned my way to the top. I own Chillfurrow Farm, you see. Very successful business. Obviously.
Farewells
Similarly to Greetings, NPCs have a stack of Farewells (also known as Goodbyes) that can run when the player exits dialogue. Just like Greetings, these are pooled from various sources and can have various conditions on them, and Farewells in unique NPC dialogue tend to have a fixed order and reset timers.
- Farewells
- 1. Thanks again for finding my pickaxe! (if "Find the Pickaxe" is completed)
- 2. Watch yourself in these mines, now. (if inside the mine)
- 3. Don't be a stranger, stranger.
Like with Greetings, a Farewell can technically have multiple lines, but this is again not seen in vanilla and arguably a bad idea to write.
NPCs like Nazeem who have only Greetings and no Dialogue Branches also will not say any Farewells (except in the rare and temporary case where there happens to be quest-related dialogue), so it doesn't make much sense to write custom Farewells for them.
It is actually possible to end dialogue on a regular dialogue line from a Branch rather than with a Farewell. This is done whenever it doesn't make much sense for the conversation to continue, like when the Player accepts a quest and is sent off to go do it, or if they have just said something rude:
- 1. How long have you been working here?
- 1.1. I've been working these mines ever since the Forebears set foot in this place!
- 1.2. Back then, this place was a frontier. Well, in some ways, it still is.
- 1.2.1. That's impressive. You must be very resilient.
- 1.2.1.1. Thanks, stranger! It's always nice to get proper recognition for my diligence.
- 1.2.1.2. It's taken its toll on me, but I've never once regretted coming here.
- 1.2.2. It's been a while. I bet you're just about ready to hit the retirement home.
- 1.2.2.1. Hmph! If you've got nothing nice to say, then don't say anything at all. (exit dialogue)
- 1.2.1. That's impressive. You must be very resilient.
1.2.1.2. will return the Player to the top-level dialogue menu, whereas 1.2.2.1. will close the dialogue menu altogether. Note that the player can still re-initiate dialogue right after, so these kinds of lines shouldn't be so hostile that it is no longer believable to have a normal conversation afterwards. It is possible to have the NPC refuse to speak to the Player and say some rude one-liners instead, but this is an extreme measure that is typically reserved for bad endings of quests.
Dialogue lines that exit dialogue do not have the same caveats as with Farewells regarding multiple lines; the dialogue menu will only close when the last line has been said.
It should also be noted that dialogue cannot end on the dialogue option itself, so this is impossible:
- 2. Do you have any family?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this.
- 2.1.1. Does your daughter live alone?
- 2.1.1.1. My mom and pop look after her. She's too young to be by herself.
- 2.1.2. I actually don't care. Bye. (exit dialogue)
- 2.1.1. Does your daughter live alone?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this.
Instead, a line by the NPC must always follow, and this can't be a Farewell from the stack either, so it must be a written out line.
- 2. Do you have any family?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this.
- 2.1.1. Does your daughter live alone?
- 2.1.1.1. My mom and pop look after her. She's too young to be by herself.
- 2.1.2. I actually don't care. Bye.
- 2.1.2.1. Then why ask? Hooligan... (exit dialogue)
- 2.1.1. Does your daughter live alone?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this.
Notes on generic dialogue
Generic dialogue has been mentioned a few times up to this point. It consists of default dialogue with the lowest Priority that is shared by all NPCs, for when no unique lines are present or currently valid. The order of these lines is random, and they have no reset timer. This includes Greetings and Farewells, but a plethora of other kinds of dialogue as well. For an overview, see the UESP page on Generic Dialogue.
The creation of generic dialogue is a major undertaking for any project and is not within the scope of this article. It can only be done once Voice Types have been decided on, which in turn requires clarity on the number and demographics of the NPCs comprising a planned release, and the expected number of voice actors to be cast.
One thing that should be addressed in this article is that unique NPC dialogue must not itself be so generic that it is made redundant by the actual Generic Dialogue. Consider these generic greetings in Vanilla:
- Greetings
- 1. Hmm?
- 2. Need something?
- 3. Yes?
Now, instead of the unique Greetings given to our NPC in the previous sections, imagine if their Greetings had been these:
- Greetings
- 1. Hello.
- 2. What is it?
- 3. Hmm?
There is no point to writing and recording these for any particular NPC, as this kind of filler dialogue is already provided by the Generic Dialogue. Unique Greetings should have some flavor to them that is specific to the NPC in question, as in the previous examples. If this is, for whatever reason, difficult, then it is also perfectly acceptable not to write any unique Greetings for the NPC at all, in which case they will say only Generic greetings.
Although we have only discussed custom Greetings and Farewells, it is possible to write custom lines for any category of Generic Dialogue, but this is rare in practice. One kind of dialogue for which it might make sense to do this is combat taunts (lines barked at an opponent in the middle of combat).
Blocking Branches and Forcegreets
Earlier, we noted that Top-Level Branches always begin with a dialogue option chosen by the Player. However, there are different kinds of Branches where the dialogue tree is initiated by the NPC. These are Blocking Branches, and Branches activated via Forcegreet.
A Branch of either of these types will override and disable all other Player Dialogue from this NPC as long as its conditions are valid. Thus, they are used sparingly, typically within a specific quest stage.
In Quests
If a Forcegreet is specified, the NPC will approach the Player when they come near and forcibly initiate dialogue:
- 1. You there! What took you so long? Corsairs have started attacking the mine while you were looking for my pickaxe! (Forcegreet)
- 1.1. How was I supposed to know this would happen?
- 1.1.1. Well, no matter. You can help me fight them off now. I'll take back my pickaxe as a weapon. (pickaxe removed) (exit dialogue and initiate combat)
- 1.1. How was I supposed to know this would happen?
Forcegreets run counter to the freeform nature of Skyrim, which tries to avoid forcing the Player into any specific action whenever possible. Here, the Forcegreet was necessary, because the Player would miss out on exposition and gameplay (a pickaxe-toting companion) if they were able to just run past the NPC and clear out the Corsairs by themselves.
If you want a dialogue tree to be initiated by the NPC for whatever reason (such as flavor), but can't justify a Forcegreet, then a Blocking Branch may suffice. This works similarly to a Forcegreet, except it will activate when the Player initiates dialogue with the NPC rather than being forced into it. Imagine if, instead of Corsairs attacking, the quest simply has the Player return the pickaxe to an overexcited miner:
- 1. You're back! And the rustle is unmistakable - you're carrying my pickaxe! (blocking dialogue)
- 1.1. That's right. Here you go.
- 1.1.1. By Zenithar, you've found it! Thank you so much, friend. Here is your reward. (remove pickaxe, give small leveled gold)
- 1.1. That's right. Here you go.
It would have been just as functional to write this differently as a Top-Level Branch, which is initiated by a dialogue option in the Top-Level menu. But moderate use of these Blocking Branches can add flavor.
Outside of Quests
The examples above are quest-related. However, there are instances of Forcegreets and Blocking Branches in Vanilla that are part of non-quest dialogue. For lack of other conditions, these are only triggered on the first encounter, after which they will not run again, and regular dialogue takes over.
Examples of Forcegreets include the gate guards outside Whiterun and Riften, which require persuasion or bribery before the Player is given entry. Again, Forcegreets were justifiably used here because the Player shouldn't simply cruise past and into the city.
Blocking Branches are more plentiful, and are typically done for flavor on the first meeting. Consider this encounter with Idolaf Battle-Born which, incidentally, is his only unique dialogue, after which he will revert to generic greetings. Since a Blocking Branch is by definition already a branch, there are no Top-Level Branches here, so the progression is completely determined by manual links. Since the structure isn't self-evident here, the links are shown explicitly.
- 1. Gray-Mane or Battle-Born? (blocking dialogue) (to 1.1., 1.2. or 1.3.)
- 1.1. What?
- 1.2.1. Got stones in your ears? I asked what side you're on, Gray-Mane or Battle-Born! (to 1.2., 1.3. or 1.4.)
- 1.2. Battle-Born.
- 1.2.1. Then I say well met, friend. I could tell you were a sharp one the moment I laid eyes on you. (exit dialogue, increase disposition)
- 1.3. Grey-Mane.
- 1.3.1. Then you're either a Stormcloak sympathizer or a fool. Either way, you're no friend of mine. (exit dialogue, decrease disposition)
- 1.4. I don't know what you're asking.
- 1.4.1. New in town, huh? Whiterun's got two clans, both old and both respected.
- 1.4.2. Difference is, the Gray-Manes turned their backs on the Empire and we Battle-Borns stayed loyal.
- 1.4.3. So I'll ask again, Gray-Mane or Battle-Born? (to 1.2., 1.3. or 1.5.)
- 1.5. I'm not picking sides.
- 1.5.1. Sooner or later, we all have to choose a side. (exit dialogue)
- 1.1. What?
- Implementer's note: Although 1.2.1., 1.3.1. and 1.5.1. do not have the Goodbye flag set, they still close the dialogue menu since they link to no other topic and Idolaf has no Top-Level Branches.
One crucial point of note is that these Blocking Branches should be kept short, not be excessively branching, and not include dialogue that is essential world building for the Player. Consider this broken example where the NPC is the mayor of a town:
- 1. You there! Haven't seen you before in my town. What is your purpose here? (Blocking dialogue on first meeting)
- 1.1. Nothing, just passing through.
- 1.1.1. That's what they all say. I've got my eye on you. (exit dialogue)
- 1.2. Nothing but trouble, I assure you.
- 1.2.1. Don't play sassy with me. That's a surefire way to end up in the brig. (exit dialogue)
- 1.3. I just saw this town and wondered what it was like.
- 1.3.1. This town, stranger, is the hallowed abode of Stoudholm, haven for Kings and fishermen alike.
- 1.3.2. It has sometimes been described as being situated in the armpit of High Rock, a moniker which I personally take pride in.
- 1.3.3. Rest assured that we are a proud and prosperous community, and will do anything to keep it that way.
- 1.4. I came here looking for work.
- 1.4.1. (etc)
- 1.1. Nothing, just passing through.
The biggest problem is that selecting either 1.1. or 1.2. will disable this entire dialogue tree for good, including 1.3. and 1.4. which are important pieces of dialogue to establish lore and direct the Player toward quests, respectively. Furthermore, it is not clear what happens after 1.3.3.; does it end dialogue and disable the tree, even though the dialogue doesn't suggest a sudden end to the conversation? Or does it bring up all the dialogue options again (as though it were a Top-Level menu, which it is not), leading to non sequiturs?
In the section on Greetings, we addressed such a situation by rewriting all the dialogue options so that they don't expect to follow a specific line anymore. This is appropriate for 1.3. and 1.4., but not for 1.1. and 1.2., which only make sense within the context of the Mayor calling the Player out on the first meeting. The true solution here is to split 1.1. and 1.2. into their own Blocking Branch and have the rest rewritten as Top-Level Branches, with a regular stack of greetings added for completeness. The guidelines for formatting and labeling this depend on the project in question.
- Blocking dialogue on first meeting
- 1. You there! Haven't seen you before in my town. What is your purpose here?
- 1.1. Nothing, just passing through.
- 1.1.1. That's what they all say. I've got my eye on you. (to standard dialogue)
- 1.2. Nothing but trouble, I assure you.
- 1.2.1. Don't play sassy with me. That's a surefire way to end up in the brig. (to standard dialogue)
- 1.1. Nothing, just passing through.
- Greetings
- 1. I hope you find yourself well in Stoudholm, traveler.
- 2. If there is any sign of trouble, tell the Guard right away.
- 3. How can I be of service?
- Standard dialogue
- 1. What can you tell me about this town?
- 1.1. This town, stranger, is the hallowed abode of Stoudholm, haven for Kings and fishermen alike.
- 1.2. It has sometimes been described as being situated in the armpit of High Rock, a moniker which I personally take pride in.
- 1.3. Rest assured that we are a proud and prosperous community, and will do anything to keep it that way.
- 2. Is there any work available?
- 2.1. (etc)
In combination with Greetings
There is one additional challenge with Blocking Branches as opposed to Forcegreets, which is that the NPC will still speak Greetings drawn from their regular stack if the Player walks past. In many cases, this is not problematic, but sometimes, it will be very jarring to have a normal Greeting ("Need something?") followed by a totally different tone as soon as the Player initiates dialogue ("Well, what have we here? A newcomer in town!")
- Implementer's note: By default, the first line in a Blocking Branch will actually also be spoken when the Player walks past, making it functionally indistinguishable from a Greeting. However, this behavior should almost always be conditioned out using IsInDialogueWithPlayer, as it is janky otherwise.
If the first line of a Blocking Branch is at odds with the NPC's Greetings at that time (whether unique or generic), then the solution is to provide one or more custom Greetings which are valid at the same time as the Blocking Branch. One example from Vanilla is Jaree-Ra:
- Greetings (if Lights Out! has not been started)
- 1. You look new. I'm new, too. I think we could be friends.
- 2. If you're looking for opportunities to make some coin, well... I'm your man.
- 3. Everyone needs work, right? I have good work for you.
- Blocking Dialogue (if Lights Out! has not been started)
- 1. You're passing through Solitude? Maybe you're looking to make some easy gold, yes?
- 1.1. What did you have in mind?
- 1.1.1. It's easy to find things to sell. Things nobody will miss. Things from underground, or just left lying around in someone's house.
- 1.1.2. (etc)
- 1.1. What did you have in mind?
As seen here, the Greetings are written to catch the Player's attention as they walk past, and once they initiate dialogue with Jaree-Ra, the Blocking Branch seamlessly takes over. Note that the Greeting would've been unnecessary had this dialogue been implemented as a Forcegreet instead, but it would have been inexcusable to have the Player be forced into dialogue on every approach, as the NPC is located near the city entrance and is plenty annoying as it is.
Walk Away Dialogue
One feature introduced in Skyrim is that the Player can quit out of dialogue at any time, even when faced with important choices. Ordinarily, the NPC will then speak a Farewell, which may be completely at odds with the situation. Consider this heartfelt plea by an NPC:
- 1. Please, adventurer, I beg of you, save my children! They must be terrified in that cave!
- 1.1. I will rescue your children for you.
- 1.1.1. Thank you, thank you! I will pray for your safe return!
- 1.2. I can't spare the time right now.
- 1.2.1. Oh, woe is me! I urge you reconsider! Come find me again if you do.
- 1.1. I will rescue your children for you.
1.2.1. is an appropriate response to the Player declining the quest. However, the Player can also "decline" by just canceling out of dialogue, at which point a Farewell will be spoken, which might be completely inappropriate.
- NPC: "Please, adventurer, I beg of you, save my children! They must be terrified in that cave!"
- (Player exits out of dialogue)
- NPC: "Stop by again any time, friend!"
Thankfully, whenever there are dialogue choices, one of the options can be designated as Walk Away and will be spoken instead of a Farewell if the Player exits out of dialogue at that point. Usually, the implementer's own executive acumen should suffice to identify and apply such decisions, so that the writer doesn't have to prescribe Walk Away dialogue in every instance. Here, it goes without saying that 1.2.1. should be marked as Walk Away.
However, there is a tool at the writer's disposal in case no dialogue option would be suitable as a Walk Away. Namely, it is possible to write dialogue that only occurs if the Player exits dialogue at that point, and can't be selected otherwise. One rare example from Vanilla comes from Maul:
- Forcegreet on first meeting
- 1. I don't know you. You in Riften lookin' for trouble?
- 1.1. Just passing through.
- 1.1.1. Yeah? Well, I got news for you; there's nothing to see here.
- 1.1.2. Last thing the Black-Briars need is some stranger stickin' their nose where it doesn't belong.
- 1.2. What's it to you?
- 1.2.1. Don't say something you'll regret.
- 1.2.2. Last thing the Black-Briars need is some loudmouth tryin' to meddle in their affairs.
- 1.3. I'm not scared of you.
- 1.3.1. That's the wrong answer.
- 1.3.2. Last thing the Black-Briars need around here is some troublemaker tryin' to steal a piece of the action.
- 1.4. (walk away)
- 1.4.1. You can pretend not to hear me all you want... but you better stay out of the Black-Briars' business.
- 1.1. Just passing through.
By including 1.4.1., the writer has ensured that the Player receives Maul's warning in all cases, even after canceling out of the dialogue.
- Implementer's note: (walk away) is just an arbitrary label, and must not be taken to mean an explicit (walk away) dialogue option that can be selected. Such a line should be implemented by linking to it as a topic, selecting it as the Walk Away line, and checking the "Walk Away invisible in menu" box.
One hidden danger with the Walk Away system is that it can lead to exploits. Ordinarily, if the Player quits out of important quest dialogue without a Walk Away line being specified, they must simply talk to the NPC again and run through the dialogue from the beginning again, which is immersion-breaking but functional (and it's their own fault for exiting dialogue anyway).
However, an exploit can occur if the Player receives a reward without the Quest advancing at the same time. Consider this example, where the Player turns in a quest, and receives the next quest in the same conversation:
- 1. I have slain the Gryphon of Evermore.
- 1.1. Amazing, my friend! Here is your reward. That is, the riches. The fame is not ours to bestow. (receive 1000 gold)
- 1.1.1. Do you have any other marks in need of slaying?
- 1.1.1.1. As a matter of fact, yes! The King has put out a bounty for the Werehare of Dunlain.
- 1.1.1.2. Vanquishing this fell beast is the next step in your trials. (advance to next stage)
- 1.1.1. Do you have any other marks in need of slaying?
- 1.1. Amazing, my friend! Here is your reward. That is, the riches. The fame is not ours to bestow. (receive 1000 gold)
If the player cancels out at 1.1.1., then they may be able to re-enter dialogue and select 1. again, and receive another 1000 gold, over and over. One way to mitigate this would be to mark 1.1.1.1. as Walk Away dialogue, forcing the questline to continue no matter what, but this line is phrased as a direct reply to 1.1.1., and would be a non sequitur if spoken as a Walk Away. Thus, it might be a good idea to provide a custom written Walk Away line.
- 1. I have slain the Gryphon of Evermore.
- 1.1. Amazing, my friend! Here is your reward. That is, the riches. The fame is not ours to bestow. (receive 1000 gold)
- 1.1.1. Do you have any other marks in need of slaying?
- 1.1.1.1. As a matter of fact, yes! The King has put out a bounty for the Werehare of Dunlain.
- 1.1.1.2. Vanquishing this fell beast is the next step in your trials. (advance to next stage)
- 1.1.2. (walk away)
- 1.1.2.1. Your next trial is to vanquish the Werehare of Dunlain, a truly fell beast indeed. (advance to next stage)
- 1.1.1. Do you have any other marks in need of slaying?
- 1.1. Amazing, my friend! Here is your reward. That is, the riches. The fame is not ours to bestow. (receive 1000 gold)
Implementers should be encouraged to identify and suggest such lines where appropriate, as it is easy to forget that this feature exists in the first place.
Services Dialogue
Several kinds of dialogue are inextricably linked with a gameplay function, and make extensive use of generic dialogue. These are barter dialogue (for merchants), rent room dialogue (for innkeepers) and trainer dialogue (for purchasing skill increases), collectively Services Dialogue. Although some custom dialogue is possible, being too creative risks breaking an established gameplay convention or even undermining the dialogue system usually used for these functions, making the dialogue prohibitively difficult to implement.
All three kinds of services are implemented as Top-Level Branches. That means they are necessarily options in the Top-Level menu, rather than being further down some dialogue tree. The generic dialogue already has many variations depending on the kind of merchant or the kind of trainer, but it is possible and straightforward to specify unique lines for a given NPC as well, as long as its Top-Level status is respected.
Barter and Training
Consider a blacksmith who happens to specialize in axes, and has unique barter dialogue to match. This is fine:
- 1. What have you got for sale?
- 1.1. Axes, axes, and more axes! (open barter menu)
- 2. How come you're so into axes?
- 2.1. I actually set out to study maces, but wasn't able to make it work.
- 2.2. Somewhere along the way, I started experimenting with axes, and haven't looked back ever since.
But this is very laborious and must be avoided:
- 1. What kinds of goods do you have in stock?
- 1.1. Axes, axes, and more axes! Wanna see?
- 1.1.1. Yes, please.
- 1.1.1.1. Let me know if there is anything that strikes your fancy. (open barter menu)
- 1.1.2. Thanks, but I'll pass.
- 1.1.2.1. Suit yourself.
- 1.1.1. Yes, please.
- 1.1. Axes, axes, and more axes! Wanna see?
- 2. How come you're so into axes?
- 2.1. I actually set out to study maces, but wasn't able to make it work.
- 2.2. Somewhere along the way, I started experimenting with axes, and haven't looked back ever since.
The reason for this is because the barter dialogue is no longer a Top-Level Branch. On the other hand, if it is kept as Top-Level, then it is actually quite easy to vary the dialogue option:
- 1. Can I buy some of your axes?
- 1.1. I was hoping you'd say that! (open barter menu)
- 2. How come you're so into axes?
- 2.1. I actually set out to study maces, but wasn't able to make it work.
- 2.2. Somewhere along the way, I started experimenting with axes, and haven't looked back ever since.
However, take caution with this, as the default line ("What have you got for sale?") is an established gameplay convention in vanilla, and players will look for this line if they want to sell something. This is equally true for innkeeper rent room dialogue ("I'd like to rent a room. (<Global=RoomCost> gold)"). For trainer dialogue, there are some minor variations in phrasing for the different skills, but not much ("I'd like training in Alchemy", "I'd like to train in One-Handed weapons", "Can you teach me about Conjuration?" and so on). See UESP for the complete list.
- Implementer's note: Custom responses for Services Dialogue should be implemented as TopicInfos in the same stack as the Generic Dialogue, but near the top, so that it takes precedence. The displayed dialogue option can be controlled with the Prompt field. Be sure to duplicate any relevant conditions (GetOffersServicesNow for barter, faction membership for trainers, etc) and add whichever conditions are needed to narrow it down to your NPC and the appropriate circumstances.
Don't feel pressured to write unique Services dialogue for every single NPC that can have it. That would make the actual generic dialogue rather pointless. If no custom lines are written, then it should suffice to mention in the NPC document which services the NPC will offer and when, without having to add the dialogue line to the tree explicitly; the implementer will then add the NPC to the appropriate factions, which will enable the appropriate generic dialogue.
Rent Room dialogue
The main dialogue option for renting a room from an Innkeeper is a Top-Level Branch:
- 1. I'd like to rent a room. (<Global=RoomCost> gold)
- 1.1. Sure thing. It's yours for a day.
- 1.2. What does this look like, the Temple of Mara? No gold, no bed. (if not enough gold)
- 1.3. Are you joking? You just rented a room from me. (if already renting a room)
When your project writes its own generic dialogue, it will likely already rewrite these into something custom (preferably while keeping 1. as in vanilla), but it is also straightforward to have variant lines for specific NPCs, even though Vanilla doesn't do this. That said, the following lines are handled in a Scene, and are much less straightforward to create variants of, so it may be advisable to keep these constant for all NPCs.
- 1. I'll show you to your room. Right this way.
- 2. Let me know if there's anything else you need.
Note that the vanilla rent room script is very inflexible; custom scripting will be required in order to vary the prices between inns or even from Vanilla, or to have multiple beds to choose from.
Additional miscellaneous dialogue
Merchants who own an indoor store will have an additional line of dialogue when the Player enters the building while they are offering services. Generic lines exist (e.g. "Got something for just about everybody in here. Give a holler if you have any questions.") but these can be overridden with unique lines (e.g. "Welcome to the Pawned Prawn. Come on in, take a look around.") These lines are handled by a Scene in the WIGreeting quest. Innkeepers work in a similar way, except their lines are handled by a Scene in the WITavern quest.
The axe merchant might therefore have these unique lines across the various categories:
- Greeting on store enter
- 1. Ho ho ho! Welcome to my axe emporium, make yourself at home!
- Greetings
- 1. Polearms? Halberds? Tomahawks? It's yours my friend! (when in store)
- 2. You seem to possess surprisingly few axes. Let me help you. (when in store)
- 3. Come see me at my store during business hours. It's axe-ilerating. (when not in store)
- Standard dialogue
- 1. What have you got for sale?
- 1.1. Axes, doggone it, axes! (open barter menu)
Merchants with outdoor stalls will not have the WIGreeting line, but they will have dialogue of a subtype called Idle while they are at their stall. This dialogue will randomly run every so often and is what causes them to hawk their wares. An outdoor mace salesman might have this dialogue:
- Idle
- 1. Maces! Come get your maces! One mace for every day of the week! Or more!
- 2. See a bandit? Mace him. Dragon? Mace it. It's amace-ing!
- 3. There is no finer macery than Windu's Maces! Come get your very own mace, today!
- Greetings
- 1. Come to buy your very own mace, friend? I promise you won't live to regret it.
- 2. I have many kinds of maces on offer! Fancy the one with the ridges?
- 3. Have you ever seen so many different maces in one place?
- Standard dialogue
- 1. What have you got for sale?
- 1.1. The finest maces this side of Dragonstar! (open barter menu)
Scenes
Scenes are a way to choreograph actions and dialogue featuring one or more NPCs. They are typically used in Quests during pivotal points in the narrative, but also have their uses outside of Quests.
In Quests
A typical use of a Scene midway through a Quest would be if the Player completes an objective, and upon returning to the questgiver, walks in on a conversation between the questgiver and one or more other NPCs. After this conversation is over, one of the NPCs will typically Forcegreet the player, and the Quest continues.
Since such Scenes are obligatory parts of the Quest, they should be implemented so that they are guaranteed to happen, rather than occur randomly when the NPCs meet. This means the Scene must take place in a designated location, and the NPCs will be pulled out of their daily schedules and be rooted in place, waiting for the Player to come along.
The following example is bad, since Quest progression hinges on this Scene between two citizens, without specifying how it will take place, implying that it is random. Among other problems, the Player can come across and talk to either NPC before they have met each other and begun the scene.
- After the Player has retrieved the Priceless Ruby from Sweatmore Peak, the following scene must take place.
- Anassel: J'Farr! You have been embezzling my funds for your mad excursions to Sweatmore Peak!
- J'Farr: What? Khajiit is innocent of this crime.
The following example is corrected. Note how it could now be rewritten so that the Player walks in on the middle of the conversation.
- After retrieving the Priceless Ruby from Sweatmore Peak, the Player must return to J'Farr in his house, who will be in a conversation with Anassel.
- Anassel: And this is why you must now pay back the funds you stole from me, or I'll have you thrown in jail.
- J'Farr: Nonsense. This one would never do such a thing to an asshole.
- Anassel: It's pronounced "Anassel"!
Note that Anassel will be staying permanently inside J'Farr's house during this stage of the Quest until the Player has had the Scene play out, which may in turn cause issues in Quests centered around Anassel if they are running concurrently, so be mindful of this.
A different pitfall relates to the Player's own involvement in the Scene. In addition to a Forcegreet at the end, Scenes can have the Player be presented with dialogue options and thus be part of the conversation. For this to happen, one of the NPCs has to explicitly Forcegreet the Player and elicit a response.
The following example is broken, since the NPCs are still talking to each other when the Player dialogue choices come up.
- Anassel: And this is why you must now pay back the funds you stole from me, or I'll have you thrown in jail.
- J'Farr: Nonsense. This is all lies.
- J'Farr paid me out of his own pocket. He can be trusted.
- J'Farr: See? J'Farr is a loyal khajiit. Leave this one alone.
- It's true, J'Farr could never have the kind of money I was paid.
- Anassel: That proves it! Now pay it back, or should I call the guards?
- J'Farr paid me out of his own pocket. He can be trusted.
The following example is corrected by separating the Forcegreet out, and having it begin with an NPC line and end with a response from the same NPC as required.
- Anassel: And this is why you must now pay back the funds you stole from me, or I'll have you thrown in jail.
- J'Farr: Nonsense. This is all lies.
- J'Farr Forcegreets the player.
- 1. Horrible! J'Farr falsely accused of wrongdoing! You will set the record straight, yes?
- 1.1. I believe you. The money you paid me with came out of your own pocket.
- 1.1.1. Thank you, great friend! (To branch A)
- 1.2. Just admit it. You clearly paid me with embezzled funds.
- 1.2.1. (hiss) Khajiit will not forget this. (To branch B)
- 1.1. I believe you. The money you paid me with came out of your own pocket.
- Branch A
- J'Farr: See? J'Farr never lies or schemes, can be trusted always.
- Anassel: If you want to keep claiming that, then prove it in court!
- Branch B
- Anassel: The jig is up, J'Farr! Even your lackey sees through your lies.
- J'Farr: Oh yeah? Let us see you prove that in court.
Scenes are also used when an NPC is accompanying the Player through a location, not merely as a follower, but independently moving to certain spots, playing animations and commenting on things without a dialogue menu popping up. If you want the Player to reply in the form of a dialogue option, then the NPC must again Forcegreet the Player in the same manner as above.
Outside of Quests
This section will detail some important uses for Scenes outside of quests. These largely belong to one of two categories: Major Establishers and Random Conversations (also known as ambient conversations, radiant conversations...)
Major Establishers are scripted to begin on game start and only run once. The involved NPCs will be rooted in place (even during the night) until the Player gets near, at which point they will carry out the Scene and then settle into their schedules. The point of these is to establish the overarching themes of a given settlement. Examples include the racist harassment in Windhelm, the high demand on the smithy in Whiterun, Roggvir's execution in Solitude, and the squabble between the Thalmor and the Chapel in Beyond Skyrim: Bruma. It is not good for the hustle and bustle of a city for NPCs to be withheld from their daily routines, so major establishers are used sparingly, and are situated near city entrances so that they run their course straight away.
Random Conversations are scripted dialogue scenes between two specific NPCs, which randomly triggers when they cross each other's paths. They are on reset timers and can run multiple times. Their function is to add flavor, background chatter and further characterization above and beyond what their usual dialogue offers. Nazeem features in three random conversations, which add some much-appreciated depth to his character.
Each city will typically have a handful of Major Establishers and a few dozen Random Conversations, which can range from extremely short (a quip and a retort) to longer exchanges. Smaller settlements, such as villages, may or may not have Major Establishers (Riverwood has one, where Hilde testifies about having seen a dragon), but they almost certainly will have several Random Conversations.
- Implementer's note: Both kinds of scenes are flagged "begin on quest start" and "stop quest on end". Major Establishers are contained in Start Game Enabled quests. Random Conversations are instead triggered via the Actor Dialogue story manager event node.
Skill Checks
Skill checks are actions that the Player can take while speaking to an NPC. Three varieties appear in the base game, namely Persuade, Intimidate and Bribe, which are all failable and often appear together, giving the Player several options to proceed. Passing any of these three types of checks will increment the Player's speech skill progression by a certain amount.
Persuade
Persuade simply checks the Player's Speech skill. There is one dialogue option which has (Persuade) added at the end. This branches into further dialogue in case the Player's Speech exceeds a required value, or (in vanilla writing) a single line of dialogue in case it doesn't, booting the Player back to the previous options.
The Speech levels that can be used as a check are Very Easy (10), Easy (25), Average (50), Hard (75) and Very Hard (100). Note that the Very Easy difficulty is below the minimum starting skill value of 15, so it can only be failed with mods or some speech-reducing ailment (although in vanilla, these still always have failure lines). The Persuasion perk in the Speech tree will lower each of these thresholds by 30%, so that a Speech skill of 70 is enough to pass Very Hard checks.
- Implementer's note: When implementing conditions on speech checks, always compare with the relevant global (e.g. SpeechAverage, SpeechHard) instead of typing in the threshold directly. These globals are scripted to change upon acquiring the Persuasion perk, so setting the numbers manually will cause the perk not to work. This is also why writers mustn't specify values other than the aforementioned five.
- Implementer's note: The Amulet of Articulation given as a reward for the Thieves Guild questline has the effect of winning every persuade check if equipped. The way this is implement is that, unfortunately, the item must be manually included as an additional OR condition every single time: GetEquipped TGAmuletofArticulationList == 1 (run on Player)
Example:
- 1. As you can see, the farm is doing quite well.
- 1.1. It's looking a little dreary to me. (Persuade) [Average]
- 1.1.1. [success] N-now hold on a minute. You can't just come in here and say that about my farm!
- 1.1.2. Drat, is it that obvious? That hagraven cursed my farm and now it's being poo-pooed by strangers... [To QUEST BRANCH]
- 1.1.3. [fail] You look like you know more about dreary face cream than about farming. [back to options]
- 1.2. I'm happy for you!
- 1.2.1. Indeed. [back to top]
- 1.1. It's looking a little dreary to me. (Persuade) [Average]
- 2. [QUEST BRANCH] I can take care of that hagraven for you.
In vanilla, there is at least one dialogue option which looks like a Persuade check and will award Speech experience normally, but is set up to always succeed (and thus doesn't have a difficulty or a failure line). This is the Whiterun gate guard dialogue, probably intended to introduce the Player to the mechanic without a risk of failure.
- 1. Halt! City's closed with the dragons about. Official business only.
- 1.1. I have news from Helgen about the dragon attack. (Persuade) [always succeed]
- 1.1.1. Fine, but we'll be keeping an eye on you.
- 1.1. I have news from Helgen about the dragon attack. (Persuade) [always succeed]
Dialogue options may include (Lie) at the end, but these are normal dialogue and have nothing to do with Persuade or other skill checks; they simply point out to the player that the dialogue option is a lie.
Intimidate
Intimidate has success and failure results just like Persuade checks, but instead of being based solely on the Player's Speech, success is primarily based on the NPC's AI Confidence Level, and a host of other factors such as the NPC's and the Player's level, and Speech (see "Mod Player Intimidation" on the Perk Entry Point CK wiki article for the full formula). As such, it is not easy to specify a difficulty for Intimidate checks; at best, specifying [Hard] will lead the implementer to set the NPC's confidence level to Brave, which also makes it so that they will rarely run away from battles, whereas specifying [Very easy] will lead them to being made Cowardly. Keep this in mind and perhaps mention the presence and required difficulty of an Intimidate check on the NPC's general document. Also do not have multiple Intimidate checks with different difficulty levels on the same NPC. It could theoretically be done by putting a perk with the Mod Player Intimidation perk entry point on and off the player, but it's probably more hassle than it's worth, and doesn't work if the intimidation checks are offered simultaneously in the dialogue.
- 1. As you can see, the farm is doing quite well.
- 1.1. Don't lie to me, or I'll bury you inside it. (Intimidate) [Easy]
- 1.1.1. [success] O-oh! I'm so sorry, I didn't mean to lie! I was just embarrassed! Please have mercy!
- 1.1.2. You're right, my farm isn't doing well - it was cursed by a hagraven and I'm on the brink of ruin! [To QUEST BRANCH]
- 1.1.3. [fail] Oh, isn't that precious. (laugh) Thanks for brightening up my day. [back to options]
- 1.2. I'm happy for you!
- 1.2.1. Indeed. [back to top]
- 1.1. Don't lie to me, or I'll bury you inside it. (Intimidate) [Easy]
- 2. [QUEST BRANCH] I can take care of that hagraven for you.
Bribe
Bribe checks will present the Player with the option to pay money to pass the check. The specific amount is calculated by the game at runtime and thus cannot be specified in advance; dialogue with specific amounts exists but those are purchases and outside the skill check system (more on that below). The amount is reportedly influenced by the player's Speech level and perhaps other similarly undocumented factors. Setting a difficulty is not really possible.
To add a Bribe check, append (<BribeCost> gold) to the dialogue option, verbatim. The <BribeCost> is what goes into the Creation Kit and will be replaced with the actual amount in-game. Bribe checks, too, have failure lines, but they will only be heard if the Player clicks the dialogue option without owning the amount of gold that is shown, which is extremely rare given how easy it is to obtain a lot of money in the game. In vanilla, failure lines are often phrased either as the NPC thinking the amount is too low, or refusing to be bribed altogether (even though they would've accepted if the Player had more gold).
- 1. As you can see, the farm is doing quite well.
- 1.1. Perhaps you would give a few more details to a partner? (<BribeCost> gold)
- 1.1.1. [success] Oh? I didn't think an investor such as yourself would take an interest in my farm... I'm flattered.
- 1.1.2. But to tell you the truth, there won't be much of a return until the hagraven's curse is dealt with. [To QUEST BRANCH]
- 1.1.3. [fail] Go away, and take your ill-gotten funds with you. [back to options]
- 1.2. I'm happy for you!
- 1.2.1. Indeed. [back to top]
- 1.1. Perhaps you would give a few more details to a partner? (<BribeCost> gold)
- 2. [QUEST BRANCH] I can take care of that hagraven for you.
If the player is buying something for a specific amount, then this is just a Purchase, not a Bribe, and no Speech skill reward is given on success. These types of transactions are usually for goods, services or real estate, and don't involve any subterfuge. The "failure line" is when the player doesn't have the amount shown.
- 1. I would like to buy your farm. (1500 gold)
- 1.1. Ah, just as well. Hopefully it'll prosper under new management.
- 1.2. [not enough gold] I'm sorry, this isn't a bargain. Come back when you have enough gold.
Other skill checks
Although these do not appear in vanilla, Beyond Skyrim occasionally uses Fallout: New Vegas-style checks for various skills and attributes. The skill being checked is shown in the dialogue option, but the specific amount is not visible to the player. They do not have failure lines and so will only appear as an option if the Player will actually pass the check. No difficulty system exists for these, so the writer may pick any arbitrary value, and combine it with other conditions like perks or whatever else.
- 1. As you can see, the farm is doing quite well.
- 1.1. Those crops look just about dead before they've even been harvested. (Alchemy) [35]
- 1.1.1. [success] Oh? Oh no... I thought it was bad, but not quite that bad. This is troubling.
- 1.1.2. This farm was cursed by a hagraven and it's nearly ruined me. I hope there is still time... [To QUEST BRANCH]
- 1.2. I'm happy for you!
- 1.2.1. Indeed. [back to top]
- 1.1. Those crops look just about dead before they've even been harvested. (Alchemy) [35]
- 2. [QUEST BRANCH] I can take care of that hagraven for you.
In Beyond Skyrim, Illusion will also appear as a speech check, but it is used as a fourth main check type alongside Persuade, Intimidate and Bribe, will give Illusion experience on success, and has failure lines.
Rumors
Rumors are an extra aide for the player to find out about quests in the area to do. In gameplay terms, they add a dialogue option to certain NPCs (typically innkeepers) which can be repeatedly clicked to give pointers to several quests, or flavor text, in a random order. In technical terms, they allow topics from different quests to appear under the same dialogue option as if their infos were pooled under one topic. This is what the special dialogue subtype "Rumor" does.
As with any other dialogue, which NPC displays the rumor dialogue option depends on the conditions of the specific rumor dialogue lines. In theory, one could use keywords and/or factions to give all NPCs of a certain city access to a certain stack of rumors, as in previous Elder Scrolls games. However, Skyrim has moved away from this generic approach to dialogue, and instead the rumor lines appear to be directly conditioned on whichever NPC is the innkeeper in a given settlement (there's even a loadscreen explaining this to the player). This makes it so that rumors can be written in the voice of that specific NPC. In cases where one NPC can replace another as innkeeper, vanilla sometimes provides variants of each applicable rumor for both NPCs. Some rumors pertaining to major questlines or daedric quests can be heard province-wide and these are generically available to all innkeepers.
A rumor will consist of a stock dialogue option which doesn't need to be provided by the writer (it defaults to "Heard any rumors lately?") and a line spoken by the NPC. This can technically be several lines but vanilla sticks to just one per rumor, giving them a rapid-fire quality, so it would be best to follow this pattern. If the rumor is about a quest, a misc. objective may be added which points to the questgiver. Clicking the rumor dialogue could be considered as the player opting in to receiving these kinds of objectives in the journal. Therefore, the "Heard any rumors lately?" should probably be kept as-is as the player has been trained to look out for this text.
Example from a hypothetical innkeeper NPC's dialogue document:
- 4. <generic rumor topic>
- 4.1 People are saying Grugnur Sneaky-Fingers has been up to no good again... Color me surprised.
- 4.2 Did you hear about Julie Giroux? Great for her that she's getting married, but why Riften?
- 4.3 The guards spotted a pair of wormmouths between the hills near here. Be careful.
- 4.1 People are saying Grugnur Sneaky-Fingers has been up to no good again... Color me surprised.
There may, however, be exceptions. Hulda from the Bannered Mare in Whiterun has a rumor about the Companions recruiting for new members; this rumor uniquely has the dialogue option text "Give me the latest gossip." What will happen in-game is that the text will still say "Heard any rumors lately?" if any of the other rumors were randomly selected to be said next, but that same option will suddenly read "Give me the latest gossip" if the companions rumor is next. This seems like buggy behavior and therefore the custom line should be treated as an error. The line is located in WhiterunInnkeeperRumorsBranchTopic in DialogueWhiterun.
- Implementer's note: When a rumor topic has no topic text (and they typically don't), the in-game text is pulled from the sTopicSubtypeTextPlayerDialogueRumors game setting, which by default is "Heard any rumors lately?"
The big advantage of the Rumor subtype is that rumors can be implemented in different quests without causing a proliferation of dialogue options, and therefore it is of no inconvenience to the implementer if these rumors are provided by the writer scattered around different documents. While the above example may come from the NPC's standard dialogue document, as those rumors are just flavor text for the region, rumors that lead to specific quests can be provided in the document for that quest, and implemented within the scope of that quest.
- Implementer's note: For quests that have a full journal entry, the miscellaneous objective that comes from a rumor is instead implemented in a small, separate "rumor" or "pointer" quest which also holds the rumor line, otherwise the full journal entry would be added before even talking to the questgiver.