Part 2: Creating Objects and NPCs

[Note that this page is outdated! See the new page on the wiki instead: https://wiki.project-tamriel.com/wiki/Simple_Quest_Tutorial]

Creating Objects

After creating my quest journal, the next thing I want to do is make sure I have all the objects I need for the quest.  (An object is any item or character the player may interact with through the course of the quest.) The easiest way to do this is to go back to my original outline. For instance, in Kevaar Finds a Shiny, my quest is planned to go like this:

1) The player speaks with Kevaar, who talks to them about a ring he found. The player offers to find the ring’s original owner.
2) The player speaks to characters around town about the ring. The player finds out that the ring belongs to Fargoth, and gives it to them.
3) The player returns to Kevaar for their reward for returning the ring.

 I see that I need three unique objects for this quest: a Kevaar NPC, a Fargoth NPC, and a ring. When I go into the Construction Set, I see that while Fargoth already exists, neither Kevaar or a unique quest ring do. I will need to create them. (When working with claims, sometimes the NPCs and quest items already exist, and sometimes they don’t, so you will need to check!)

Creating Kevaar

I will first create my Kevaar NPC. I first navigate to the NPC tab in the Object Window.

From there, right click anywhere within the list, and click “New.” A window will open with lots of values to fill in, which I will explain briefly.

ID

First, the ID that I call my NPC for use in scripting. This is a unique identifier for the NPC and is read by the game engine only; it never appears ingame. You can make this anything you want, but while writing for TR, you should follow our naming convention, which goes: TR_m#_Q_FirstName_LastName, where # is the map number the NPC can be found in, and FirstName_LastName is the name of the NPC with underscores instead of spaces. In this case, I would call Kevaar "TR_m0_Q_Kevaar".

Name

The next part is the character’s name as it appear to players. With a few notable exceptions, all characters in TES3 have both a first name and last name, and no title. I notice that my quest design has failed to give Kevaar a last name, so I will come up with one now. I’ll call him Kevaar Ezran.

Script

For now, I will ignore this, but it comes in handy later when telling the game engine to track the status of certain NPCs or giving them special abilities.

Race

This governs what race the NPC will be. I want Kevaar to be a Dunmer, and so select Dark Elf.

Female

This checkbox makes the NPC into a female. Kevaar is a male, so I will leave this unchecked.

Class

The NPC’s class governs what skills they’re good at, what spells they have access to, and in some cases, generic dialogue available to them. Classes also include service packages such as Training and merchant services, so I will want to test my choice out ingame to make sure I am not inadvertently letting people barter for Kevaar's inventory! In my simple quest, I imagine Kevaar to be a simple peasant, and so give him the class of Commoner.

Level

This governs how strong the character is. Since players will be meeting Kevaar in a low level area and he is not intended to be a fighter, I will set his level to 5.

Faction and Rank

Unlike the player, NPCs can only belong to one faction at a time. This classification typically effects an NPC’s disposition to the player, some generic dialogue, and some universal questlines. As I want Kevaar to be friendly to thief characters and don’t mind him giving thiefly advice, I will make him a Wet Ear in the Thieves Guild.

Essential

I will be leaving this one alone. Unlike later games, in TES3, all being essential does is tell the player they broke the main quest if they kill this NPC. It doesn’t make them immune to death.

Corpses Persist

If killed, this governs if the NPC’s body sticks around. This is useful for quests where you need to loot a unique item from the body, as it keeps the body from disappearing if the player inadvertently leaves the area before obtaining the quest item. As I don’t foresee this occurring in my quest, I will leave this checkbox alone.
 

 

Pro Tip: Sometimes you will want to write a quest where the NPC shows up dead when the player first encounters them. Doing this makes use of the NPC's Health statistic and the Corpses Persist option. To make the NPC appear and act like a corpse (including being able to be looted), you first set their base Health to 0 in their statistics menu. Then you check the Corpses Persist box, so that there isn't a split second of the death animation playing whenever the player comes across the NPC, and new items aren't generated in their inventory if the player comes back to them at a later date. Neat, right?

Respawn

This effects whether the NPC can respawn after being killed. Since Kevaar is unique and afaik doesn’t have nine lives, we won’t check this box.

Attributes and Skills

These are set automatically when you choose a Class and Level. However, if I wanted to change one of these manually, I could do so by unchecking “Auto Calculate Stats” and editting them to my tastes.

Note that changing an NPC's skills may change what equipment they choose to use and wear! NPCs are (somewhat) intelligent, in that they will first try to equip armor or weapons that match their best skills. For instance, if I were to give Kevaar an Ebony Cuirass and a Netch Leather Cuirass and his Light Armor skill is higher than his Heavy Armor skill, he may still choose to wear the Netch Leather Cuirass, even though it's a worse piece of equipment. I would have to take his Netch Leather Cuirass away from him, or edit his Heavy Armor skill to be higher.

Head and Hair Listing

Unfortunately there is no easy way to preview these within the CS itself, and you must either pick these by trial and error, or by referring to a head and hair guide like the one available here: http://mw.modhistory.com/download-106-14751. I chose b_n_dark elf_m_head_07 and b_n_dark elf_m_hair_21 for Kevaar, but if you are modding for Tamriel Rebuilt, this is a great opportunity to make use of some of the new meshes available!

Items

This governs what is found in a NPC’s inventory when slain or pickpocketed, and what the NPC wears. Note, as stated before, that the Morrowind engine automatically equips the best items for a NPC's skill set, which then makes it impossible for those items to be pickpocketed. For instance, if I wanted Kevaar to have access to a pair of Medium Armor boots for the player to steal, I would have to make sure the boots he wears are either more valuable, or belong to a skill he is better at than the boots I want to be pickpocketed.

For the purposes of my quest, I don't intend Kevaar to get involved in combat, so all I want to do is make sure he has some clothes on. I will not put the quest ring in his inventory, because giving this to the player will be handled by a script later on, and giving it to him now would cause duplicates.

Spells

These are automatically chosen dictated by the character’s Class and Race. But if I wanted to add some special spells to the NPC, I could do so here after unchecking the "Auto Calculate Stats" box.

After setting all these attributes to my liking, I will click the Save button. I will also save my mod file!

Placing Kevaar: Keep Him From Wandering Off!

A player can’t talk to an NPC that isn’t in the game world! I will also want to pick a spot for to put my new Kevaar NPC. Since placing objects is already handled in other tutorials, I will only draw attention here to the Wander mechanic for NPCs.

Wander is a script automatically assigned to NPCs that makes them randomly walk about on their own. Most NPCs in exteriors will have this, while most NPCs in interiors won’t, as they have a tendency to climb on tables or get stuck behind crates otherwise. I want to put Kevaar in Seyda Neen’s Lighthouse, an interior, so I’ll want to make sure he doesn’t Wander.

To do this, I’ll want to open up his NPC window, and click on AI.

In the list of AI Packages there should be one called Wander. I will double-click this, and set the distance to 0. I will then click Save in each window to save the change. Now Kevaar will stay put and not wander off.

The other options in this window I will leave alone. They govern things like how often Kevaar plays certain animations like yawning or scratching his neck (Idle Chances), how much he wants to pick a fight with the player (Fight), how cowardly he is (Flee), and how likely he is to turn around and greet a player walking near him (Hello). For my simple quest, the default values will do just fine.

Creating the Ring

Next, I want to create the ring. This is most easily done by finding an existing ring and tweaking it to my liking rather than making an entirely new one. First I will go to the Clothing tab and find a ring that seems close to what I want my quest ring to be.

I’ve picked ring_keley. To create my ring from this one, I right-click on ring_keley, and click “Edit”. I then give this ring a new ID and click Save. I want to be very careful to tell the editor to create a New Object in the dialogue window that pops up, or else I will replace the existing version with my quest version, and thereby may break both my quest and any others that use ring_keley!

After saving my quest ring under a new ID, I can tweak the quest ring to my liking, such as changing the ingame name, the enchantment, or the value.

 

Pro Tip: Since enchanting an item ingame will change its ID, a good way to keep players from accidentally breaking quests is to give them quest items that already have an enchantment.

Since I don’t intend the player to be keeping this ring, I’m going to keep the value trivial. I've decided to change the enchantment, however, so it's not a direct copy of Fargoth's other ring. New enchantments can be created in the Enchanting tab of the Object Window, but for now, I'm going to be lazy and choose one of the pre-existing ones.

Whenever you do this, note that the Enchantment subfield governs how many charge points the item has. Since I am giving this ring a more powerful enchantment than the original ring_keley, I should be nice and increase the Enchantment value so that this ring can be used more times before running out of charge. I picked the number 50 to match the Enchantment value of a Tier 2, or Expensive Ring.

 

Pro Tip: Even though they can't be enchanted, you may also see Enchantment values on books and scrolls. This is primarily is a way of organizing the ingame inventory for the player, as the inventory organizes first by enchantment strength and then by alphabetical order. Most important quest books will thus have an Enchantment value of 100 to put them at the very front of the list.

I will also want to make sure the script window for my is EMPTY, so that this ring doesn't inadvertently affect any quests or events the original ring was a part of!

Creating a Reward?

Finally, I also want to give some consideration to what reward to give to the player once they have completed the quest. While most quest designs will specify the reward, mine didn’t, so I will have to come up with something. As appropriate to the ease of the quest, I think I will have Kevaar reward the player with 50 gold and a low level item. Though I could create a new, unique low level item to give the player, I don’t want to make more work for myself, and instead will choose something out of the existing item list. I want to be sure I pick something with a count greater than 1, so I don’t inadvertently give the player something that is a unique item for another quest.

I chose to give the player a silver staff. I do not need to place this reward in the game anywhere, as like the ring, giving it to the player will be handled by a special script.

I am now ready to go on to crafting the dialogue!