Skip to main content

QUEST Conversion Hub and Tutorial - Skywind

Submitted by digitalparanoid on

Quest Conversion Tutorial

by digitalparanoid and thermador


Working on quests for Skywind is actually a fairly straightforward, repetitive process.  However, it is a steep learning curve for the first few quests, especially if you have never worked with the Creation Kit before.  This guide should help introduce you to the basics of the Creation Kit, and specifically, how to work on Skywind quests.  If you are already very experienced with the Creation Kit, see these quick notes for advanced users.

Tutorial index:

For advanced users:

 

 

 


Prerequisites - Installing Software


 

Step 1: Clean installs of Skyrim and Oblivion

This guide assumes that you are starting from scratch.  If you are have pre-existing installations of Skyrim, Oblivion, and optionally, Morrowind make full backups of your game directories and then uninstall the games and delete their directories.

If you have purchased or registered these games through Steam, it is easy to install them all in the background without having to worry about getting all the patches and updates, etc.

 

Step 2: Install the Skyrim Creation Kit and the Oblivion Construction Set

  • optional: install the Morrowind Construction Set (on your Morrowind CD-Rom, or available through Steam)

The Skyrim Creation Kit (CK) can be installed through Steam once Skyrim is installed - click here for instructions.

The Oblivion Construction Set (CS) can be installed once Oblivion is installed by downloading the files - click here for instructions & download links.  Note that you need to install both the Installer and the Patcher.

 

Step 3: Install the latest version of Morroblivion and install the latest version of Skywind

  • optional: if you are working on Skyblivion, then install that instead, and you don't need to install Morroblivion obviously

The easiest way to install Morroblivion is to use the complete installation - click here for instructions & download links.

The easiest way to install Skywind is to download the latest version from the project release thread - click here for instructions & download links.

 

Step 4: Set up the Skywind Exchanger

While you can load both Skyrim.esm and Skywind.esm at the same time in the Construction Kit, it is easier to swap out the Skyrim.esm file with one that has been "stripped" of most of its content.  This reduces the time required to load the Creation Kit by over 50%, speeds up the Creation Kit while you are using it, and makes it much easier to find the Skywind content in the Creation Kit because most of the Skyrim content is not present.

Skywind Exchanger is a simple application that swaps back and forth the original Skyrim.esm file with the "stripped" version as needed. 

Click here to download the Skywind Exchanger.  Click here to download the stripped Skyrim.esm.

Instructions:

  • Add a folder entitled "0Skyrim" to your Skyrim\Data directory (so your folder path is \Skyrim\Data\0Skyrim\). 
  • Copy your stripped .esm inside, and name it "Stripped.esm".
  • Copy your original Skyrim.esm (from the \Data\ folder) inside and rename it "Original.esm"
  • Leave the original Skyrim.esm in your \Data\ folder with the original Skyrim.esm name. 
  • Start the Skywind Exchanger.exe application from anywhere on your computer
  • At the top of the Exchanger window, enter your Skyrim path and press save
  • Launch the Creation Kit or the Game from one of the buttons and the program will automatically swap the correct ESM file for you.

 

Step 5: Get set up for efficiency (optional)

Efficiency is a somewhat personalized decision, but if you have any additional monitors lying around, now is a good time to set up the second one, so that you can have the Oblivion Contruction Set on one and the Skyrim Creation Kit on the other, since you will be switching back and forth a lot.

For each program you intend to use regularly, set up convenient shortcuts in your preferred method.  I typically pin programs to my taskbar in Windows 7.  From left to right: Skywind Exchanger, Creation Kit, TES5Edit, Notepad++, and the Oblivion Construction Set.

 

If you plan on working with scripts a lot, then you will probably want to set up an external editor.  Note that the Creation Kit natively supports editing in external editors.  Personally, I prefer Notepad++, a free windows text editor.  There are setup instructions for Notepad++, Sublime Text, Emacs, UltraEdit, and Vim on the Creation Kit Wiki.  If you don't have a preferred text editor, either skip this step, or set up Notepad++, which is probably the most widely used.

Why use an external text editor?

It is the difference between editing like this (no color coding, no autofill):

and this (color coding, autofill, syntax highlight, etc.):

 

Step 6: Extract the scripts from Skywind.bsa (optional)

Following this BSA unpacking tutorial, use the program BSA Unpacker to extract just the scripts from the Skywind.bsa file.  Add them to your \Skyrim\Data\Scripts\ folder. 

This will allow you to look at the scripts on other quests in Skywind.esm.  If you are new to scripting and want to see how other people have set up their scripts, this extra step is highly recommended.  Note that you will have to do this step each time an updated version of Skywind.bsa is released.

Note that if you DON'T do this step you will see the message

;CODE NOT LOADED

when you try to view a script in the Creation Kit that you haven't personally created.

 


Getting Started - Finding Quests, using the CK and CS


Now that you've got everything set up, this next section will focus on starting out with quest work.

 

Step 1: Open the Creation Kit and set your preferences.

Go to File -> Preferences:

Scroll over to "Scripts" and set your script prefix to "FBMW":

 

Step 2: Loading files in the CK and CS

In the Oblivion CS, open the Morrowind_ob.esm file by clicking the folder button:

In the window that pops up, double click on Morrowind_ob.esm

Note that it checks a box next to it.  Any other files that are "parent masters" (the list on the right) will be loaded as well, so you only need to check the one box.  Then press OK.

While the CS is loading (for any errors that pop up, click "yes to all"), go back to the Creation Kit.  Make sure to run the program through the Skywind Exchanger. 

Then, in a similar fashion, open the Skywind master file, Skywind.esm:

On any errors that pop up, just click "Yes to all"

 

Step 3: Pick a quest to work on

Have a look at the quest tracker - click here to view - and find a quest that hasn't been taken.  Post a note in this thread that you are planning on working on that quest or questline, and the spreadsheet will be updated later.

Find that quests article on a wiki like UESP - that will be your reference for the quest.  For this tutorial, we will be doing the Thieves Guild Quest "The Vintage Brandy".

 

Step 4: Find the quest in the Skyrim Creation Kit

In the CK, open an object window, and navigate to "Character" -> "Quest" and then find the quest named fbmwTGVintageBrandy

  • fbmw = prefix used for legacy reasons
  • TG = thieves guild, usually a guild prefix
  • VintageBrandy = the name of the quest, not always the same as the name of the quest on the Morrowind Wiki or the name you see in the game.

and double click on it.

This will open Skyrim's quest window, which you will see a lot of as you work on this:

 

Step 5: Find the quest in the Oblivion Construction Set

In the Oblivion Construction Set, press the "Q" button at the top:

This opens Oblivion's quest window:

Double click on the bar at the top of the list to expand the names:

Then find the quest in the list:

 

 

 


The Quest Data Tab


The Quest Data tab in the CK sets up some of the basics of the quest.

 

Step 1: Check basic settings and copy basic quest conditions:

Odds are, you won't see anything here that you need to change.  The main thing is the quest conditions section (the big white area in the center).  We want to make sure we have two basic conditions for this quest's dialogue to run.

To make it easier, go back to the list of quests and open a quest that's already been completed (you can have multiple quests open at once), such as fbmwMQ01 or, in this case, fbmwTGOverduePayments.

Right-click in the conditions window and choose "Copy all Conditions" as shown.

Close the quest and go back to the quest you're working on (fbmwTGVintageBrandy).  Right click and choose "Paste Conditions":

 

Step 2: Save your work

Click "OK" at the bottom of the quest window and save your work.

The first time you save a new plugin, you will be asked for a name.  Name it whatever you want (I usually use the name of the quest or the quest line) and save it.  Let's say you name it fbmwTGDiamonds, because you are working on that quest.

When you open the Creation Kit later, you will want to set your plugin (ESP file) as the active file and load that instead of just Skywind.esm:

And, when you start the game to test your work (using the button in the Skywind Exchanger of course), you'll want to make sure your plugin is active in your load order:

 

 

 


The Quest Stages Tab


The Quest Stages tab in the CK sets up the "stages" of the quest.  Usually this is something like "Stage 10, get the quest from the quest-giver; Stage 20, you found the item; Stage 100, you brought back the item and received a reward, completing the quest"  Obviously it can get more complicated than that.

 

Step 1: Check the individual quest stages and make sure they are the same in the Oblivion CS and the Skyrim CK.

Looking at the Oblivion CS, in this case, the quest only has four stages, and stage 1 is just a blank placeholder. 

Stages don't always have to add a log entry (journal entry).  For example, you may want to just add stages without journal data (just to have a script fragment) to update objectives for example.

We see that on Stage 100 of this quest, there is a one-line result script attached to the stage.

 

Step 2: Copy the result scripts over from Morroblivion to Skywind

Result scripts can be attached to a variety of things in the game, but you will most likely find them attached to quest stages and to dialogue lines.

Since we don't know exactly what this line of script does, but we know it's important, we need to copy it to the equivalent Skywind quest stage:

Note that we put a semicolon ; in front of the line.  When the game runs a script line with a semicolon, it ignores whatever is behind the semicolon - a "comment" if you will, or just something we disable until we figure it out.  If you can't figure out what a script line does, just copy it over with a ; in front for now.

Also, when you create a new result script, you may find that you need to close the window you are in (press [OK]) and to reopen it for the script box to work correctly.

So here it is in the Skyrim CK:

 

Step 3: Remember to save your work.

 

 

 


The Quest Objectives Tab


The Quest Objectives tab in the CK sets up the actual objectives (and compass markers) that the player wants to accomplish.  These are what are listed in the Skyrim Journal (J key while playing the game). 

Usually the objective has the same number as the stage that completes the objective. So if stage 10 says "go fetch", and stage 20 is when you fetch it, then the objective completed at stage 20 should be #20.  This will become more clear below:

 

Step 1: Compare the quest objectives with the old quest targets

In the Oblivion CS, these are called "Quest Targets" and are similar, conceptually, but work in very different ways:

Looking at the Oblivion CS Quest targets we can see some simple quest targets - these are used to define where your compass market points.  They typically point to an NPC or item, and have conditions on them that show the marker only during a certain stage of the quest.

Skyrim does things a little differently.  Instead, quests have objectives, which are displayed to the player and completed when the player does a certain thing.  They typically have fewer conditions,  but need to be set up a little differently.

In this quest there are basically two objectives: get the brandy, and return it to the quest-giver, Sugar-Lips Habasi.

 

Step 2: Create the new quest objectives

Go the the Skyrim CK, Quest Objectives Tab, and right click the window and choose New:

You can always edit these later so play around.  You have to write them out yourself, since no such thing existed in Morrowind or Oblivion.

Here, I've created two objectives that will be completed at stages 20, and 100.

 

Step 3: Save your work

 

 

 


The Quest Aliases Tab


Once you set up your basic objectives, you need to create Aliases.  Think of an Alias like an overcoat.  You can put it on anything in the game, or take it off anything.  Quest Aliases get put on something in the game during the quest.  In the Skyrim CK, we need to set up Aliases so the quest objectives can work.

 

Step 1: Create those Aliases

Since we only have two objectives, we only need two aliases.  Well, actually three - one for the intermediate step where we switch objectives.

Right-click to create a new reference alias.  We won't be using location aliases in this tutorial; they are useful for radiant quests mainly.

The first alias is a unique actor, Ralen Hlaalo.  Or if we wanted the compass to point somewhere else, we could pick "specific reference" and pick his front door, or the bottle of Vintage Brandy itself.  But actors are faster to set up.

Since he is dead, make sure you check the box "allow dead" at the top.  Otherwise, the quest won't start because the aliases (overcoats) can't be filled.

Next, we'll create another alias for Sugar-Lips Habasi, since that's who we'll return the brandy to.

Finally, we'll create one more for the Player (this will be used for the objective switching when the player picks up the Brandy):

Name the alias, and check "Specific Reference" then press the button to the right.

A box pops up.  Chose (any) for the cell and then PlayerRef should autofill the "Ref" field below.  Press OK

 

Step 2: Save your work

 

 

 


Filling out the Quest Objectives with Aliases


Now that we've got our aliases, we can finish up our quest objectives. 

 

Step 1: Add a target to each objective, and associate it with an alias

First, go back to that Quest Objectives Tab, and right-click in the middle box to add a new target ref:

Click on the line and set the target alias: Since this stage is to find the Brandy in Ralen Hlaalo's house, set him to be the target alias.

Repeat this exercise for the other objectives.  In this case, we set objective 100's target alias to Habasi.

Now, we need to copy an important condition to these quest objectives - you can find in any other completed quest and copy it (such as in MQ02).  Open another quest and copy the condition (or just create it manually): GetGlobalValue Global:fbmwShowQuestMarker==1.  This will be used to allow players to turn off quest markers (quest objectives).

Once you copy the condition, go back to the quest you're working on and paste it in to the quest objective:

 

Step 2: Going back to the quest stages and adding result scripts to each stage to Display and Complete these objectives

Go back to the Quest Stages tab.  (Actually, you can do this any time since the script compiler doesn't check to see if the objectives you set actually exist)

For some of the quest stages, we will need to set objectives, and for others, we will need to complete objectives.

For example, at stage 100 when we return the Vintage Brandy to Habasi, we will be completing objective 100.  So that stage should have a result script like so:

SetObjectiveCompleted(100)

Stage 10, on the other hand needs to start an objective for the next stage, so it should have the result script:

SetObjectiveDisplayed(20)

You MUST have a setObjectiveDisplayed(xx) papyrus fragment on the startup stage (usually the first or second stage of the quest), otherwise the quest will not show up in the journal.

 

But what about in the middle?  How do we know when the player has grabbed the Brandy ( SetObjectiveCompleted(20) ) and needs to know what to do next ( SetObjectiveDisplayed(100) ) ?  Where do we put those lines?  That will be answered in the next section.

 

Step 3: Save your work

 

 

 


Assigning a Script to an Alias


At some point we need to know when the player picks up the Brandy.  This is why we created the Player alias - it is an overcoat on the player that basically is used to monitor the player during the quest.  We can assign a script to this alias that reacts when the player adds Brandy to their inventory.

 

Step 1: Add a script to the Player Alias

Open up the Aliases tab in the quest and double-click the one for the player.  Over on the right you will see a section for scripts:

Click the "Add" button and a window pops up:

Double-click new script; and then another window:

Here, we can name our script.  Please use a name that has the quest name as the prefix.  This helps keep the scripts organized.

 

Step 2: Add properties to the script for the Player Alias

Once you've created the script, you'll need to create some "properties".  Properties are required for Skyrim's scripts and are a new part of the scripting workflow.

Basically, anything in the game that you refer to in a script will need a property defined.  (You can go back and add properties after you write a script, but it's easier to add them first because the script will fail to compile if its properties aren't defined.)

By default, double-clicking on a script will open the properties box.  (Or right click on a script and choose "edit properties)

Next, click "add property".  This opens another window:

The only really good thing about Properties is that if you name your property the same as the base item, it is less work.  So, we will need a quest property, so we set the top box to quest, and then the name to the name of the quest.  Since we named it the same as the quest, the Property's "value" (the base object in the game) is filled out automatically:

Then we need a property for the vintage brandy itself (the item the quest-giver sends the player to fetch).

So we add a new property for the brandy itself, but we don't know what the item is called.  This is where we go back to the Object Window and use the search filter in the top:

And so we find that the base item is called 0FoodVintageBrandy.  So, we go to "add property" and type that in, and select "Potion" as the type.  Oops, it won't take names with a number at the beginning.  Fine.  That means it won't auto-fill the property's value, since the name isn't an exact match.

So, click "Edit Value":

And find the item 0FoodVintageBrandy in the list.

In this case, that's all the properties we need, but remember, anything in the game that you refer to in a script will need a property defined.

 

Step 3: Write the script for the Player Alias

You can go back to the quest window, then open the Player Alias, and then and edit the script by right-clicking on it and choosing "Edit Source".  (If you choose "open in external editor" and you have properly set up Notepad++, it will open that.)

When your editor window pops up, you'll need to add some lines of script - what we want to happen in the game to the Player:

Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
    if (akBaseItem == FoodVintageBrandy)
    fbmwTGVintageBrandy.SetObjectiveCompleted(20)
    fbmwTGVintageBrandy.setObjectiveDisplayed(100)
    endif
EndEvent

What does this script do? 

  • Event OnItemAdded It runs when the player adds an item to his or her inventory
  • if (akBaseItem == FoodVintageBrandy) checks to see if the item added was the property we defined earlier (FoodVintageBrandy).  As you recall, this property points to the base brandy item 0foodvintagebrandy that we found using the object window.
  • fbmwTGVintageBrandy.SetObjectiveCompleted(20) tells the game to complete Objective #20 for this quest and update the player's journal (since the player now has the Brandy).
  • fbmwTGVintageBrandy.setObjectiveDisplayed(100) tells the game to update the player's journal with a new objective - which we defined earlier as the one to return the Brandy to Sugar-Lips Habasi.
  • EndIf closes out the IF statement so the game knows we are done with the list of things we want it to do if the player has added the brandy to his/her inventory.
  • EndEvent closes out the event, finishing the script.

Put into the script, it looks like this:

When you save it (Ctrl+S) the game will try to compile the script (basically, evaluate it and make sure it works). 

If all goes well, you should see the message "Compilation Succeeded".  Othewise, the compiler will try to tell you why it failed and give you some hints as to how to fix it.

When you write a complicated script, make sure to explain what you're doing - ;comment your scripts - it helps reading them, for you and for the others.

 


Side Note on Objectives (advanced):

It is also possible to have multiple aliases on a single objective:

example1: multiple NPC to kill for the same quest

example2: objective is "fetch itemX for NpcY" and you just have two stages [10: I have been asked to fetch] & [100: I have fetched]
You can set one objective #100 with an alias on the itemX and an alias on the questgiver. Use conditions on the objectives accordingly to display the right alias at the right moment (eg getItemCount)

 

Step 4: Save your work

 

 

 


The Player Dialogue Tab & Finding Missing Dialog Topics


Now that we've got the basic of the quest stages and objectives set up, and you are a little more familiar with how the scripting system works, we need to go through the dialogue.

 

Step 1: Compare the Dialogue Lines Between the Games

In the Skyrim Construction Kit, go to the "Player Dialogue" view.

For the Vintage Brandy quest, it looks like this:

The ORDER of the topic infos (the list on the right) is EXTREMELY IMPORTANT! Do not change the order!

 

 

In the Oblivion Construction Set, click the equivalent, the "Topics" view.

You will see some similarities; however, with the Oblivion CS there is an extra line called "1corruption".   If you look at the text and the speaker, it obviously doesn't belong on this quest.  This is an error in the Morroblivion ESM file, unfortunately.

So, we can ignore that one.  Otherwise all of the dialogue is there.  Except for the GREETING topic.

If you see something weird, like topics that don't belong, please post about it in this thread.

 

Step 2: Compare, create, and find/move any missing GREETING/Hello lines.

So this gets a little weird.  In the Oblivion CS there was a dialogue topic called "GREETING" for every quest, which held the lines that the NPC said to the player when the player first initiated a conversation with the NPC.

In Skyrim, it works a bit differently.  Instead, there is the "Misc" tab on the quest window, which holds all the other types of dialogue, including the Skyrim equivalent of GREETING called "Hello".

If you take a look at the Vintage Brandy quest in the Oblivion CS, you'll note there is one GREETING.  So we have to find this in the CK and move it to a newly-created Misc/Hello topic.

Side note: If you can't find the greeting that starts a quest in Morroblivion, and you are working on a misc. quest, in the Oblivion CS try checking the quest fbmwMSGreetings (Greetings to Start Various Quests) for your greeting there.

 

IMPORTANT - only move greetings to a quest if the greeting is obviously a PART of the quest - if you're unsure, DON'T move it.

In the CK, go to the "Misc" tab:

Click New Topic:

Select "Hello" from the list:

Give it a name - usually the quest name + "GREETING":

Next, we use the "Edit" -> "Find text..." menu at the top of the CK to find the missing line:

Double-click on it in the search box to open the quest where it's hiding, then right-click on it and choose "Move to Topic"

Next, select the GREETING topic you just created.  You will have to uncheck the boxes at the top to show all topics.

Click ok to move it, resulting in this:

 

Compare the rest of the lines of dialogue by clicking through both the Skryim CK and the Oblivion CS and make sure everything is in its right place.  It is.  Good.

 

Step 5: Save your work

 

 

 


The Player Dialogue Tab & Dialog Conditions


Next, we need to make sure all of the dialogue in the quest in the Skyrim Creation Kit has the appropriate conditions.

 

Step 1: Basics of dialogue conditions:

A condition is basically like a constraint (or set of constraints) that limits when the dialogue topic will be said by someone.  Typically this is something like "GetIsID == Name of NPC" so only the dialogue topic is said by one NPC.  There are also conditions like "GetStage == XX" so that the topic is only said during a certain stage of the quest.  There are many, many ways to set these up, but luckily all we have to do is copy them. 

Here's our Skyrim CK Dialogue window.  If you double-click on a line on the right (highlighted blue below), it opens a window to work with that piece of dialogue:

In the Oblivion CS, you don't have to double-click.  Everything (conditions, etc.) is below the line, and changes when you click a new line.

Notice that there are three conditions on this line. 

  • GetIsID == 0habasi == 1 makes sure that only Sugar-Lips Habasi says the line.
  • GetPCExpelled == Faction:0ThievesSGuild == 1 makes sure that this line is only said if the player has been expelled from the guild.
  • GetInFaction == Faction:0factMorrowind == 1 is a legacy system from Morroblivion - there is no need to copy it

So we have to conditions to create on the equivalent line in the Creation Kit.

If you get into a situation with OR operators, instead of AND, make sure you keep the exact same order of the conditions
For details on how the game evaluates AND/OR logicals in dialogue conditions, read these posts.

Going back to the CK, double click on that same line:

First, at the top, check "Force Subtitle" -- do this on all the lines always so that if the player doesn't have subtitles turned on, they still see the lines.  (Yes, people are idiots)

Next, click on that middle section and add a new condition:

Use the condition menu to set up the condition:

And again for the "GetPCExpelled" condition:

 

Step 2:  A few IMPORTANT tips on working with conditions

Make sure that you set "Subject" and "Target" correctly for dialogue lines. 

In the Oblivion CS it is a checkbox called "target" to toggle back and forth.  In the CK, you have more options.

 

Where you can, use >=, <= instead of == .  If you have a condition like getDeadCount == 1, getItemCount == 1 etc... If that doesn't break the logic of other topic infos, use >= 1 (so that your conditions support more cases, like if the Player has more than one of the item, or somehow killed someone twice.)

 

If your quest comes with conditions already set: review them! they might not be complete/correct.  You should also double-check your conditions that you create on each dialogue line (just look at them a second time) to avoid errors, especially when you're just starting out.

 

Make sure your conditions will restrict this topicInfo to Skywind and will not bleed over to vanilla NPCs. 

This is pretty important: For example, if your only condition is getIsRace Khajiit == 1, then all khajiit in vanilla Skyrim or any mod loaded will be impacted.  (This is why in Morroblivion we used GetInFaction == Faction:0factMorrowind == 1)

Most of the time, the conditions on factions, locations, and specific NPCs are enough to restrict the dialogue to only Skywind NPCs.

In case of doubt, add a condition getInCurrentLoc OMorrowindLocation == 1 and you're good.

Speaking of conditions on location, you can use getInCurrentLoc for exterior areas and getInCell for interiors.

 

You can copy and paste conditions from one line to another to save time:

 

Note that in some dialogue topics you have choices - these point to other dialogue branches that are editable in the main dialogue window.  These should already be set up.  They are highlighted below in blue so you know where they're at.

 

Step 3: Save your work

 

 

 


The Player Dialogue Tab & Adding Scripts to Dialogue


Now that all of the dialogue lines are in place, and all of the dialogue conditions are in place, we need to make sure we copy over the dialogue scripts

 

Step 1: The basics of result scripts

In the Oblivion CS, there is a white text area for each dialogue line where you can type in a result script.

For example, it may just be a one-liner to set the appropriate stage in the script:

These lines are pretty easy to copy; you just have to:

  • find the equivalent (same) line in the Skyrim CK
  • copy over the script line
  • convert it to the format of a Skyrim script

so:

SetStage fbmwTGVintageBrandy 10

becomes:

GetOwningQuest().SetStage(10)

And then we add a couple of comments (with a ; before them so the game engine know they are comments, and not code) which are helpful for keeping track of things.

Most importantly, for the sake of everyone else, put in a comment telling people what quest this script is for.  Additionally, if it helps you to stay organized, include the original Oblivion script commands with a ; before them for your reference.

So our script becomes:

;quest is fbmwTGVintageBrandy
;SetStage fbmwTGVintageBrandy 10
GetOwningQuest().SetStage(10)

 

Step 2: Working with more complicated result scripts

The same basic process applies, but there is more to keep track of.  Like the scripts on our aliases earlier, we need to define properties for everything that we refer to in the script.

Let's look at a more complicated result script, where you complete the quest and you get your reward from Sugar-Lips Habasi.

Note that the box for result scripts in Oblivion is very small and it is easy to miss lines that are not shown - make sure to catch them all!

While only two lines are shown, there are actually about six lines if you scroll the box:

First, copy those lines to the Skyrim CK in the appropriate place, and put comments in front of them:

Next, go line by line and figure out the equivalent script for Skyrim.  This will get easier as you go, because most Morrowind quests have very simple result scripts, so there are only a few commands to know.

The final script will be:

;quest is fbmwTGVintageBrandy

;setstage fbmwtgvintagebrandy 100
GetOwningQuest().SetStage(100)

;player.removeitem 0puvintagecomberrybrandy1 1
Game.GetPlayer().RemoveItem(FoodVintageBrandy, 1)

;player.additem gold001 1000
Game.GetPlayer().AddItem(Gold001, 1000)

;additem 0puvintagecomberrybrandy1 1
Game.GetPlayer().AddItem(Greef, 1)

;modfactionreaction 0thievessguild playerfaction 5
ThievesGuild.ModReaction(PlayerFaction, 5)

;moddisposition player 10

Note that you have to define five properties for this script (in bold text above) for this script to compile.

If you forgot how to define properties, click here to jump to that section of the guide.

At the end, your properties look like this:

If you did everything right, you should be able to successfully compile the script (press the "compile" button) and check it for errors.

 

Step 3: Save your work

 

 

 


Cleaning your Mod in TES5Edit


Remember that mistake I made in this quest?  Moving the dialogue line "1corruption" when I shouldn't have?

Luckily, there is an easy way to edit our mod files (the .esp file you've been saving so regularly).A

A little program called TES5Edit - download link - will let you fix your mistakes.  Download the program, and extract the files to your main \Skyrim\ folder (not \Skyrim\Data\).

If you want to learn more about how powerful a tool TES5edit can be, there are plenty of links and reading at the download link.

 

Step 1: Removing your mistakes from a mod (very basic)

Then double click on your mod (or check its box and press OK).

When you run TES5edit, it will ask you what file, or multiple files, to open. 

Right-click and choose "Select None". 

Then double click on your mod (or check its box and press OK).

Wait for the program to finish loading your mod and its master files.

In this example, we know what we're looking for (the dialogue topic), so we open up the tree on the left and find it.  Then we right-click it and choose "Remove".

The first time you choose "Remove" you get a warning message:

Just wait and press "Yes I'm absolutely sure."  (Even if you mess up, you can close the program without saving, so no big deal)

There's one more part we need to remove (the dialogue branch) and then we're done with that:

 

Step 2: Cleaning your mod

Now, we get to a sore subject with many modders - dirty mods.  No not that kind of dirty - what we mean is that there are pieces of data in the mod that we don't need, or even want, but they are either added by mistake, or added due to bugs in the creation kit.

For more info on mod cleaning, see this article and this article.

Luckily, TES5edit can automate this process.

First, we go to the top and right-click on the header row for our .esp file, and choose "Apply Filter"

Next, we make sure the only box that is checked at the bottom that says "Conflict status inherited by parent."  The rest of the sections should be unchecked, as shown below.

Once the program is done applying the filter, we can right-click again and click "Remove "Identical to Master" records"

Once that's done, you'll see a message below with what it removed.  Note that it removes two records that I didn't even mess with, but for some reason (thanks CK) they were included in the mod's file.

If you see something there that you didn't WANT removed, make sure to NOT save the file and maybe start over or clean the mod by hand by looking for things that shouldn't be there and removing them.

Finally, we save the mod.

 

 

 

 


Testing your work


Step 1: Make sure your mod is active in your load order.

Step 2: Make sure you are familiar with the way the quest works

Go to UESP and find your quest, and make sure you know how it is supposed to work.

Step 3: Make a savegame just before you start the quest

This will really speed up the testing.

Step 4: Play through the quest every way possible

Many quests have multiple ways to play through them, so make sure to test them all.

Step 5: Note any problems and go back and fix them

Don't worry if you don't get them right the first time - that almost never happens. 

Useful in-game quest commands from the console

In game, press the tilde key (~, to the left of the number 1 key) and open the console.

Then type "StartQuest fbmwTGVintageBrandy" (or whatever your quest's name is).

You can check if it worked by typing: "GetQuestRunning fbmwTGVintageBrandy" (or whatever your quest's name is).

You can check the status of the quest's variables with "SQV fbmwTGVintageBrandy" (or whatever your quest's name is).

You can also use SetStage, GetStage, GetStageDone, CompleteQuest, StopQuest and other quest commands.

 

HELP my quest won't start!

If, for some reason the quest won't start at all, there are a few things to try:

Figure out what is supposed to start the quest normally

If you can't get a quest to start, make sure that somewhere in your quest's dialogue, the quest actually is started, either with

questname.start()

or

questname.setstage(# of the first real (non-blank) stage of the quest)

If there is no dialogue to start your quest in the quest itself, and it's a misc. quest, check the Morroblivion quest called fbmwMSGreetings (Greetings to Start Various Quests).  The greeting that starts your quest is probably there.  Then you need to use "Find Text" in the CK, and move it to a new Misc/Hello branch that you have created for it.  Then copy the result script over from Morroblivion, dialogue conditions, etc.

Make sure you have a setObjectiveDisplayed on the first stage

Remember, you MUST have a setObjectiveDisplayed(xx) fragment on the startup stage (usually the first or second stage of the quest, otherwise the quest will not show up in the journal.

Check your aliases

A quest won't start if it's aliases can't be filled.  Usually this is because either an alias wasn't fully set up (created, but not all the required settings were filled out) or if an alias points to something that can't actually fill that alias.  For example, if your alias points to a dead body, and you didn't check the "allow dead" box, then the alias can't be filled.

You can check if this is causing the problem by opening the console (described above) and starting the quest manually with the StartQuest command. Then use the GetQuestRunning command to see if the quest was successfully started (it will return "1" if it started, and "0" if it didn't).

 

Optional: getting an object's form ID

A few console commands require the use of a "form ID" instead of the name.  Here's how to find it and use it. (note that for quests it's not necessary, since you can just use the name of the quest, but that's what I used in the example for finding a form ID):

Look up the item you are interested in, in the object window, and get the ID (that long number to the right of the name):

So, the number is 0100F999 (the "form ID" of the quest).

However, the first two digits (01) will change based on your load order:

Since Skywind.esm is actually at position 05, the form ID we'll type in-game is 0500F999.

What?  Well, Skyrim.esm is 00, Update.esm is 01, then comes Dawngaurd (02), Hearthfires (03), Dragonborn (04) and finally Skywind (05). 

Your load order may be different of course, but that's the general process for finding Form ID's.  If you don't know your load order index, you can just try a few different first-two-digit possibilities in the console and you'll eventually get it.

 

 

 


Packing your mod to upload to Morroblivion.com


Once you're done with your mod to the best of your ability, you've got to get it ready to upload.  In the old days, you usually needed just an .esp file. 

With Skyrim's CK, you need to get the scripts you wrote too.

 

Step 1: Recompile all your scripts

For each quest you edited or worked on, open the quest window in the CK, and on the first tab (Quest Data) click the button "Recompile All Papyrus Scripts"

A window will pop up and inform you of the progress.  Wait for it to complete.

 

Step 2: Find your scripts

The reason we recompile all the scripts is so that all of their "modified dates" in windows get updated.

Then go to your \Skyrim\Data\Scripts folder, and sort it by date modified.  Then find the scripts that were updated a few minutes ago when you recompiled them.

Next, find the equivalent files in \Data\Scripts\Source:

These are the scripts (the four in the \Data\Scripts\ folder and the four source versions in \Data\Scripts\Source\ you need to include with your upload.

 

 

Step 3: Archive your files with 7zip or a similar program

If you are uploading more than one or two files, it's best to archive them in a single compressed folder.

The best program to do this is probably 7zip - download link -

Once you get it installed,

  • Create a new folder somewhere on your computer.
  • Copy your .esp file to that folder (just 1 file in our example)
  • Create a new folder within it and call it "Scripts". 
  • Copy all of the script files you recompiled to that folder (4 files in our example)
  • Create a new sub-folder under "Scripts" called "Source".
  • Copy all of the equivalent source script files you recompiled to that folder (4 more files in our example)

Again, make sure you include both the compiled scripts AND the source versions

Select both your .esp file and the Scripts folder that you have created.  Then right-click and choose "add to (foldername).7z"

7-zip will create the archive containing the files.  This is the file you upload to Morroblivion.com

 

Step 4: Upload the file to Morroblivion.com (or wherever, who cares)

Go to the quest hub thread.

Post a new comment and attach your file.

 

In the comment explain what you did, and what if anything you DIDN'T FINISH. 

... so hopefully someone else can figure it out and finish it.  :-)

 

 

 


Useful Websites and Links


Skyrim Creation Kit site - a particularly useful reference for the CK. 

Unofficial Elder Scrolls Pages (UESP) - a wiki covering all the content of the original Morrowind game, as well as the other games

Oblivion Construction Set site - if you are having trouble using the Oblivion CS

 

 

 


Useful Scripts for Dialogue


If you're looking for something that's not on here, try searching for it on the Skyrim Creation Kit site

 

Setting a quest stage:

Oblivion:
syntax: setstage questname #
example: setstage fbmwtgvintagebrandy 100

Skyrim:
syntax: property.SetStage(#)

example: GetOwningQuest().SetStage(100)
;does not require a property defined

example: fbmwtgvintagebrandy.SetStage(100)
;requires a property defined for the quest

 

Starting a quest:

Oblivion:
syntax: StartQuest questname
example: startquest fbmwtgvintagebrandy

Skyrim:
syntax: property.start()
example: fbmwtgvintagebrandy.start()
;requires a property defined for the quest

 

Displaying & Completing Quest Objectives:

Oblivion: N/A

Skyrim:
syntax: property.SetObjectiveDisplayed(#)
;if setting a objective for a quest other than the one that you are in

syntax: GetOwningQuest().SetObjectiveDisplayed(#)
;if setting an objective for the current quest you are working on

syntax: SetObjectiveDisplayed(#)
;if you are in that quest's stage tab

example:  fbmwtgvintagebrandy.SetObjectiveDisplayed(10)
;requires a property defined for the quest

example:  GetOwningQuest().SetObjectiveDisplayed(10)
;no properties needed

example: SetObjectiveDisplayed(10)
;no properties needed

For completing objectives, replace SetObjectiveDisplayed with SetObjectiveCompleted

 

Adding and removing items from the Player:

Oblivion:
syntax (remove): player.removeitem itemref #
example (remove): player.removeitem 0puvintagecomberrybrandy1 1

syntax (add): player.additem itemref #
example (add): player.additem gold001 1000

Skyrim:
syntax (remove): property.RemoveItem(property, #)

example (remove): Game.GetPlayer().RemoveItem(FoodVintageBrandy, 1)
;requires only the item's property defined

example (remove): playerref.RemoveItem(FoodVintageBrandy, 1)
;requires both the "playerref" property and the item's property defined

syntax (add): property.AddItem(property, #)

example (add): Game.GetPlayer().AddItem(Gold001, 1000)
;requires only the item's property defined

example (add): NPCref.AddItem(Gold001, 1000)
;requires both the "NPCref" property and the item's property defined (it could be anyone, or a container, or the player)



Adding or removing items from the NPC (speaker):

Oblivion:
syntax (remove): removeitem itemref 1
example (remove): removeitem Gold001 1000

syntax (add): additem itemref 1
example (add): additem 0puvintagecomberrybrandy1 1

Skyrim:
syntax (remove): akSpeakerRemoveItem(property, 1)
example (remove): akSpeaker.RemoveItem(Gold001, 1000)
;requires a property defined for the item

syntax (add): akSpeakerAddItem(property, 1)
example (add): akSpeaker.AddItem(FoodVintageBrandy, 1)
;requires a property defined for the item

 

Changing a faction reaction:

Oblivion:
syntax: modfactionreaction faction1 faction2 #
example: modfactionreaction 0thievessguild playerfaction 5

Skyrim:
syntax: Property1.ModReaction(Property2, #)
example: ThievesGuild.ModReaction(PlayerFaction, 5)
;requires two properties defined, one for each faction

 

Changing a faction rank:

Oblivion:
syntax: Player.SetFactionRank faction, rank#
example: Player.SetFactionRank 0ThievesSGuild, 1

Skyrim:
syntax: property.SetFactionRank(property, rank#)
;requires two properties defined -one for the actor, one for the faction

example: Game.getPlayer().SetFactionRank(ThievesSGuild, 0)
;requires only the faction property since we use "Game.getPlayer()"

 

Starting combat with the player:

Oblivion:
example: startcombat player

Skyrim:
syntax: property1.startCombat(property2)
example: akspeaker.startCombat(Game.GetPlayer())
;does not require any properties if it's in a dialogue result script

 

 

 


Quick Guide for those who are already experienced with the Skyrim Creation Kit


 

Requirement

Set the following script prefix in your CK preferences : FBMW (all your TIF will be named FBMW_TIF_XYZABCD)

  • use « ; » to write comments (for exemple commenting the script with the name of the quest it comes from is really useful)

 

Main Steps

 

  • Have a look at the quests tracker https://docs.google.com/spreadsheet/ccc?key=0AubmRhWYZsEbdDFaNEtxb1F4R0NOOXZrVkhBbE82c2c and reserve a quest that is not yet reserved.

  • find its article on a wiki like UESP (that will be your reference)

  • download the latest Skywind master

  • open Oblivion's construction set and load morrowind_ob.esm, this will be your reference). You can also use Morrowind's construction set, but the quests are organized a bit differently).

  • open Skyrim's creation kit and load Skywind.esm (used the stripped version of skyrim.esm)

  • Find your quest

    • In Creation Kit, under character > Quest

    • In Oblivion's Construction Set, push the Q button in the toolbar

  • Before starting implementation, check that you understand and apply all the rules/settings described here : http://morroblivion.com/forums/skyrim/skywind-mod-releases/3306

  • Implement the quest to the extent of capability

  • Save your changes in a esp file

  • package an archive with the esp file and the scipts files (both source and compiled versions)

  • Merge/Propose the esp for merge (caution about merging and packaging : if merging with the CK, the names of the script files are modified)

  • Once the esp file is merged, update the tracker to unreserve the quest and note what you did and what you weren't able to do.

 

Implementation

 

  • Your quest stages should've already been created. You will have to script them.
  • Aliases and Objectives will have to be created
  • Dialogues: They should be there as well. If the dialogue is not in your current quest. Try to find its location by using the "find text" menu in the CK. Check in the quest tracker if the quest is currently reserved. If no, then reserve the quest, go ahead and do your change. If yes, then contact the modder who reserved and coordinate with him or her. If your dialogue already have conditions, verify and fix them as this was a first rough pass. If the conditions haven't been done, you will have to implement them by comparing with morroblivion or morrowind.
  • Dialogues: You will have to script the topic info fragments in order to advance the quets, give items to PC/NPC, etc....
  • Some quests will need further scripts (like advancement in factions). Have a look at the quests that have already been implemented to understand how that was done.

If you never implemented a quest and feel lost, please have a look at the CreationKit.com tutorials, they're really well done.

 

a few points to know:

 

  • Quest Data : the description of the quest

    • ID : internal ID

    • Quest Name : appears in the journal

    • Priority

    • Start Game Enabled : is it started as soon as the game start (most of the times, no)

    • Quest conditions / Quest dialogue conditions

 

All these fields must be the same than in morroblivion (value, checked/unchecked, conditions)

 

  • Quest stages : the different steps of the quest

    • check « complete quest » if necessary

       add script fragment if necessary (add comments using « ; »)
  • Quest Aliases

    • If you want to add a quest marker to any of your objectives, you need to use aliases

 

  • Quest Objectives

  • identify the various objectives of your quest (kill NPCxxx, bring itemYYY for every stage)

  • Create an objective for each one of them

    • for more clarity, the objective index usually matches the stage that describes this action being done.

    • add correct conditions

    • add aliases (that would be your quest markers).

 

Objective Index

Display text

Target Ref

100

Bring shipment to Bivale Teneran

Bivale Teneran [getStage fbmwVTraderLater ==30]

 

 

  • Player Dialogue / Topics

  • all your dialogue will be there, except the greetings and special dialogue (see below)

  • Misc Tab

  • 99% of the GREETINGS should be in the MISC tab. If you're greeting is missing in your quest, verify if it's not in another quest. if it's nowhere to be found, you can create it.

Tips

 

  • The order of the topic infos is extremely important ! Do not change it, unless you're confident in your change.

  • Check « force subtitle » on every topic info

  • order of the conditions: read this http://morroblivion.com/forums/skyrim/skywind-mod-releases/3306?page=1#comment-28712

  • Pay attention to the conditions you are writing ? Does it apply on the NPC talking or on the player ? Select subject or target

  • If a condition like getDeadCount == 1, getItemCount == 1 etc.. If that doesn't break the logic of other topic infos, use >= 1 (so that your conditions support more cases).

  • If you don't know how to do something for now, keep track of it ! (use Skywind's bugtracker and the quest tracker)

  • when a topic info fragment script is created, it usually needs to close the topic info screen [OK] and to reopen it to work correctly.

  • if you need to have a script, in order to declare properties, you can just type a « ; » character and a script will appear.

  • Comment  your scripts ! (it helps reading them, for you and for the others)

  • For conditions involving disposition, have a look at http://morroblivion.com/forums/skywind/skywind-development/2772
  • SAVE OFTEN !

  • File > Preferences > Script : Prefix allows you to define an automatic prefix for your scripts

Tests

 

  • At least verify that all your scripts compile.

  • To test, run Skyrim with skyind.esm and your esp checked.

  • Try to walkthrough your quest.

Release

You have to send to Skywind's team (drop a line in the quest hub forum thread) :

  • your esp

  • the scripts (compiled and source), found in Skyrim/data/Scripts and Skyrim/data/Sources

    • Find them using the prefix of FBMW and the timestamp

    • In case of doubt, open your quest and on Quest Data, click « Recompile All Papyrus Scripts », it will update the corresponding files in your scripts folder (updating their timestamps).

Tutorial / Links

http://mw.modhistory.com/download-106-5552   A good dialogue tutorial for Morrowind modding, if you work with Morrowind's and want to understand what's in there.

Karma: 0 (0 votes)
Last edited by grumpycat on 8 Dec 2013 - 16:28.

So I'm trying my hand at scripting and quest conversion using this tutorial - I'm a long time out of the game and things have changed a lot since the Morrowind days!

I wanted to start with a miscellaneous quest to see if I could get the hang of it again, so eloth recommended I start with 'Death of a Taxman' - that appears to be too much right now (Papyrus' event system is stumping me, can't even get a quest to trigger on examination of the body) so I might start with something smaller, like 'Hentus Needs Pants' (that quest cracks me up every time).

So, um, hello and hopefully I will have something to contribute soon!

Karma: 0 (0 votes)

I've updated the main post with the first part of my quest conversion tutorial.  I'm still putting together the sections on dialogue and using TES5edit, which should be added by tomorrow.

Karma: 0 (0 votes)

Yeah Thermador explains clearly what I mean confusely (is that even a word?)

Karma: 0 (0 votes)

The new tutorial is great and cleared up a lot of things I was confused about, thanks :)

Karma: 0 (0 votes)

You're welcome!  The tutorial is now complete - have fun!

I will go back and fix typos later prolly ;-)

Karma: 0 (0 votes)

Okay, two super quick questions.

I think I've almost completed the quest "Hentus Needs Pants" (simple quest, guy standing in the river in Gnisis with no pants, go talk to other guy, get pants, bring them back), except for two things:

1) Hentus' greeting "Hainab stole my pants!" doesn't appear unless I start the quest from the console, I'm not sure why that is. I moved the line of dialogue to the correct topic as detailed in the tutorial, but I get the normal greetings anyway.

2) The script on the player alias to monitor when they pick up the pants (eg. if the player kills Hainab and takes the pants off his corpse) doesn't seem to be running at all. I changed the OnItemAdded to just display a message box, and it never gets triggered :/

Apart from that I believe the quest is done, after a lot of frustration and teeth gnashing over how complicated the scripting system is now.

If it would be easier, I can simply submit what I have in the quest hub topic and someone can review it and tell me what I've done wrong >_>

Karma: 0 (0 votes)

1/ if the quest is not started, the dialogue it contains are not available. This means that for exemple the greeting must be in a quest that is start game enabled. To do this you either need to update your quest (and generate a seq file http://forums.bethsoft.com/topic/1417941-dialoguequest-bug-solution/?p=21672989#entry21672989) or to put the greeting in another quest (like morroDefaultQuest).

Since I reserved morroDefaultQuest, I would suggest as long as your quest works when you start it in the console to leave like this. I will take care of it (just remind me of this when you post your esp and scripts)

2/ Since this is a specific pants, I would do the following

1: remove the pants from hainab inventory

2: create a new alias similar to this http://www.creationkit.com/images/2/27/AmuletAlias.png    It will put the pants in Hainab's inventory.

3: on this alias, add the script "defaultsetStageAlias" (name might be slightly different, I'm not in front of the CK). You just need to update the properties with the correct values and the job is done for you - just let your mouse float on the properties name to see the tooltip.

Also you can always post anything you have (even not completed) in the quest hub, I think this thread has deviated from its original purpose :)

Karma: 0 (0 votes)

Thermador, some feedback on the tutorial.

 

Objectives

I don't totally agree with your approach. Here's what I think is the best practice.

Objective 20: Kill xxxx

Objective 30: Report to YYY

stage 10   I have been asked to kill xxxx

setObjectiveDisplayed(20)

stage 20   I have killed XXX, I must report to YYY

setObjectiveCompleted(20)

setObjectiveDisplayed(30)

stage 30   I have reported (quest complete)

setObjectiveCompleted(30)

The objective number should be the same as the stage it will be completed in (in certain cases it might be completed on several stages, just choose the first one)

Technically, it's not really important, but it's easier to understand.

Also note, it's possible to add stages without journal data, just to have a script fragment, to update objectives for example.

It is also possible to have multiple aliases on a single objective:

example1: multiple NPC to kill for the same quest

example2: objective is "fetch itemX for NpcY" and you just have two stages 10: I have been asked to fetch 100: I have fetched.
You can set one objective #100 with an alias on the itemX and an alias on the questgiver. Use conditions accordingly to display the right alias at the right moment (eg getItemCount)

Dialogues not related to the correct quest

please do not move them yourself. I am currently in the middle of a large topics reorganization effort. If you see something weird, ping me I'll take care of it.

Greetings
It's actually a bit more complex than that...
1/ In the misc tab there would be all the hello lines said by the NPC: when you come close to them or when you engage dialogue with them (you can use IsInDialogueWithPlayer condition to control that)
2/ But for some of them actually you want to make it blocking (like the courriers coming to you in vanilla skyrim).

Examples:
Blocking:  when passing next to a quest giver, the NPC stops you: "Hey you, i need your help !" [...]
greetings:  when engaging dialogue with another NPC: "I heard you agreed to help xxx"

See the difference?

In the end I want all the greetings to be in morrodefault quest (except for the blocking dialogues), I'm working on that.

In the meantime, separate the greetings in your current quest between the misc tab and a blocking dialogue according to your need.

One thing is certain: there should be no GREETING topic shown in the NPC topic list.


Conditions

I started a large round of conditions setting in the early days of the project but was very quick about it and didn't completed it.
If you take a quest and see some conditions already set: review them! they might not be complete/correct.

Make sure your conditions will restrict this topicInfo to Skywind and will not bleed over to vanilla NPCs.

For example, if your only condition is getIsRace Khajiit == 1, all khajiit in vanilla skyrim or any mod loaded will be impacted.
Most of the time, the conditions on factions, locations, etc.. are enough to identify skywind NPC. In case of doubt, add a condition getInCurrentLocation OMorrowindLocation == 1 and you're good.

Conditions on location. Only use getInCurrentCell with interiorCells. For exterior cells, use getInCurrentLocation


console commands

You can use the quest name instead of the formID, it's easier ;)

Karma: 0 (0 votes)

sevenseacat

1) Hentus' greeting "Hainab stole my pants!" doesn't appear unless I start the quest from the console, I'm not sure why that is. I moved the line of dialogue to the correct topic as detailed in the tutorial, but I get the normal greetings anyway.

We went through to figure out the same problem with a quest Mehh was working on last night.

In Morroblivion, there is a quest called fbmwMSGreetings (Greetings to Start Various Quests).  The greeting that starts your quest is probably there.  Then you need to use "Find Text" in the CK, and move it to a new Misc/Hello branch that you have created for it.  Then copy the result script over from Morroblivion, dialogue conditions, etc.

Thus, there is probably no need to make the quest start-game-enabled.

digitalparanoid

Thermador, some feedback on the tutorial.

digital; thanks for the review I really appreciate it.  I will get those things updated in the guide today and make new screenshots (if necessary) tonight.  Me writing this tutorial is a bit like the blind leading the blind, so there are bound to be issues ;-)

Karma: 0 (0 votes)

Sure thing. I hope I don't sound bossy. That was not my goal :)

Karma: 0 (0 votes)

Lol two super quick questions, digital gives 2 mile long posts to answer then apologizes for being bossy, made me laugh. Great workbook the quests though guys
Karma: 0 (0 votes)

OK I made some new screenshots and I think everything is fixed. smiley

Karma: 0 (0 votes)

Thermador, I just remembered when helping Mehh that you MUST have a setObjectiveDisplayed(xx) fragment on the startup stage, otherwise the quest will not show up in the journal.

Karma: 0 (0 votes)

OK I added that to the tutorial, both in the quest stages section and in the "help my quest won't start" section at the end.

Karma: 0 (0 votes)

Another advice on good coding practices for papyrus

http://forums.bethsoft.com/topic/1467926-how-to-fix-some-log-errors/#entry22880784

Karma: 0 (0 votes)

Some information about papyrus scripts on dialogs from Bethesda's Papyrus developer (afaik he created it)

http://forums.bethsoft.com/topic/1468718-when-do-scripts-get-baked-into-your-save/#entry22903096

Karma: 0 (0 votes)

Hopefully this isn't a repeated post. I think this site ate the other one.

Attached is the final version of the Imperial Cult questline. I have included the revised Advancement Check script which now doesn't run all the time in the background, just once after each quest completion. I was able to finally fix the quests that wouldn't trigger even when using the console. At issue was using Alias commands like the tutorial website showed for activating people and items. Once I used GetReference().Enable() on them instead, it seemed to fix the problem for people. There are some quests that won't have their objectives cleared out until you complete the quest. This is due to removing those alias. Keep them, the quest didn't work, remove them, the objectives don't get updated. Such is life for now.

At some point I may come back to this and fluff out the objectives to make it richer, but any white arrow is better than what we have in TES3 with nothing. And of course some of us know these quests so well, no arrow is needed anyway.

Now to fix the Temple quests and include this advancement script.

Attachment Size
SBB64ICQuestsFinal.rar (external) 263.85 KB

Attachments

Karma: 0 (0 votes)

Great job ! Sorry I haven't been very responsive lately. I was on vacation and then stuck on a dialogue task. As you may have seen in other threads, I'm now getting back to testing and merging your stuff ;)

Karma: 0 (0 votes)

Scripters! Please read the first post of this post

http://forums.bethsoft.com/topic/1370110-impact-of-system-stress-scripting-errors-on-game-performance/

I know I'm guilty of some script errors/leftovers (which I'll try to fix asap).

Karma: 0 (0 votes)

Note for everyone working on quests:

as explained in the tutorial, it is a requirement that you extract skywind.bsa to work. Therefore, if you upgrade to a new version of Skywind, you have to unpack again skywind.bsa as its content has been updated. Failure to do that will lead to bugs since your loose files will always override the files in the bsa.

I just thought it was worth reminding.

Karma: 0 (0 votes)

Here are four source code files that I believe I didn't RAR up with the rest.

As a side note, what is everyone's thought on using built in scripts? I tried the defaultadditemaliasscript script which works great but now I am thinking this could be a problem if Beth does any modifications to the file. As much as I prefer to save space and work by reusing code, any changes they make could break other mods.

Attachment Size
MissingSourceFiles.rar (external) 622 bytes

Attachments

Karma: 0 (0 votes)

Two things!

1. Digital, thanks for sharing the link. Good information, everyone should read it.

2. SBB64, I'm all for using Skyrim's generic utility scripts, and I used them frequently in my previous projects. I suspect others might be against it, on account of our "no Skyrim assets" policy. I think the odds of Bethesda ever changing those scripts are next to none. Any change made to them would be done by a user-made mod, which would be insane, because why? Why change those scripts? There's no reason to do so.

Karma: 0 (0 votes)

Yes, re-use is a key word.

-> Bethesda has stopped development on Skyrim so there's 0,0001% chance they would update it (as I think they left a door open in case of major, critical bug but I don't see that happening 2 years later). I know I use defaultsetstagealiasscript (don't remember exact name) a lot since I know about it, as it is a life saver.

-> even if they update the script, they will keep the compatibility (I mean that's what any API provider does, right ?)

The only point to raise here is to try not to reuse scripts from other mods you might have installed ;) excepted for SKSE, which is a prerequisite.

Karma: 0 (0 votes)

Okay, cool to hear. I won't go back and revise the Cult or Temple quests just to use that script for now. However, I was planning to start in on the Mages Guild if no one else has claimed it. I hope to finally start using Mooncat's advancement script this time around.

Karma: 0 (0 votes)

SBB64, I will assign the mages guild to you ;)

Karma: 0 (0 votes)

Good luck! I hope it works. (Ugh, dropping a script on you guys without even testing it. Not a good feeling...)

Karma: 0 (0 votes)

Good general guide on scripting to follow

http://www.darkcreations.org/forums/topic/5030-my-personal-scripting-guidelines/

Karma: 0 (0 votes)

hey guys,

very excited to see this thing finished, and i always thought you have to be a super developer to help out, so when i found out that there is sthn a beginner like me can do!! so excited

anyways will start on this asap and hopefully be able to help out.

keep up the good work people

Karma: 0 (0 votes)

This is a good environment to learn stuff. I had no modding knowledge whatsoever before joining skywind :)

Karma: 0 (0 votes)

One more interesting link to read :)

http://www.darkcreations.org/forums/topic/5030-my-personal-scripting-guidelines/#entry177759

Karma: 0 (0 votes)

Masterclass on "persistence" of references, invaluable information to avoid frustration when scripting

http://afkmods.iguanadons.net/index.php?/topic/3669-overhauling-the-weapon-rack-scripts/page-26#entry148158

Karma: 0 (0 votes)

Updated Imperial Cult questline. This uses the standard advancement script and was updated for version 9.0 (meaning I matched it up against TES5Edit to remove anything already merged into the core).

I also updated Ygra in Pelagaid to offer free joining if the silver bowl quest is done (as in TES3 version). Only real tricky point in new version was that promotion people have dedicated dialogs saying generic "congrads" instead of "you are now a newbie or adept". Therefore the conditions to check for include a large OR of stage 10, 20 , 30, etc to see if you are ready for advancement.

Attachment Size
SBB64ICQuestsFinal4v9.rar (external) 266.17 KB

Attachments

Karma: 0 (0 votes)

Awesome sauce SBB64 :) I will have a look.

Karma: 0 (0 votes)

Hi digitalparanoid -

Quick question for you.

I am using the Exchanger program listed, and I can save the path to my skyrim, but when I click the button for the creation kit, I keep getting this error (See attached screenshot), and it won't let me add the path for creation kit.

What should I do?

Attachments

Karma: 0 (0 votes)

That looks weird... I don't use this exchanger tool, I rename the esm manually. When I need to open the CK, I renamed the stripped esm to skyrim.esm (and the full skyrim esm to full.esm)

Karma: 0 (0 votes)

digitalparanoid

That looks weird... I don't use this exchanger tool, I rename the esm manually. When I need to open the CK, I renamed the stripped esm to skyrim.esm (and the full skyrim esm to full.esm)

I'll give that a shot, if that's the only thing the Exchanger does, I can do that manually.

Thanks for your help!

Karma: 0 (0 votes)

I started going through your tutorial to start working on some quests, and the first step asks for a "clean install" of both oblivion and skyrim.

My understanding is that means a new install and no mods installed. This poses some obvious problems if I want to continue playing my game with mods, so I just wanted to make sure I understand the step correctly, and check if I'll have to do this every time I want to switch between playing Skyrim and working on Skywind. (Sorry if this seems like a dumb question).

Karma: 0 (0 votes)

no, you can have modded games. It just means that you basically aquired the games through legal means and have a "normal" install (eg not installed in a folder with the installer and then moved to another drive).

Karma: 0 (0 votes)

Ok, I think I've got everything setup to start working on quests. I was planning to work on The Enchanter's Rats (EBPest) in Vivec Telvanni Canton. It seems like a pretty simple quest, so I figured it's a good one to start with.

One question, the tutorial has you loading Skywind.esm, but should I also load Skywind - Patch.esp when working on quests? In the BSA it looked like all the scripts were in the patch currently.

Karma: 0 (0 votes)

No need to load the patch, however it could really help you unpack the patch.bsa to get the scripts available (when you update to a future version, either remove them or unpack the next version as well, in order to avoid version conflicts)

I put your name in from of ebpest.

Karma: 0 (0 votes)

this has been debugged, tested and merged.

Karma: 0 (0 votes)

I'm trying to get involved with the quest conversion.  I've installed the Creation Sets for both Morrowind and Oblivion and the Creation Kit for Skyrim.  I'm having a problem with the Oblivion patcher though.  I'm receiving an error that states "Missing or Invalid Registry/INI entry". I installed the games through steam.  I have the patch_tes_construction_set_v1.2.404.exe and the TESConstructionSet.exe files in the SteamApps\common\Oblivion\ folder with the OblivionLauncher.exe.  Is this the correct location for these to be placed/installed?

Any assistance would be much appreciated.  I've googled like crazy and can't find anything.

 
Karma: 0 (0 votes)

A little background on me.  I've been a java software developer for about 8 years, been working in IT for about 15, have a degree in CS, and I did do some game dev for a short bit on an MMO that never launched.  I was looking to help out with the tools but it doesn't seem you guys need any help there anymore.

Not being able to get something that seems as trivial as that patcher installed is frustrating!

 

 

Karma: 0 (0 votes)

How to turn lights off during daytime.

Leaving it here in a hope that someone is going to implement it in future :)

http://forums.bethsoft.com/topic/1483534-turning-exterior-lights-off-during-the-day/

Karma: 0 (0 votes)

I am also trying to get involved with quest creation. I've run into an issue in the setup tutorial however, and any help would be greatly appreciated.

Under step 3, the link for instructions & download links for Skyrim point me to a page for which I am denied access. What do I need to do?

Karma: 0 (0 votes)

please PM/chat with one of the team leaders (eloth, happychappy, myself)

Karma: 0 (0 votes)

Alright so this is my first time trying anything like this, I'm not the most computer-oriented person, but I saw this project and my eyes bugged out and I'd really like to help, so I'm following all your tutorials and came here to tell you I'd like to try working on the Hentus's Pants quest, so we'll see how that goes.

Karma: 0 (0 votes)

Never mind, I see that sevenseacat is already working on that. That's alright, I got stuck on aliases anyways. I don't think I'm running the right version of Skywind because none of the other quests have any data in them that I can use to get an idea of what I'm doing, so if anyone could direct me to the most recent download, that would be appreciated. I think mine's v0.56. Thanks, I think I'll check out the music project now.

Karma: 0 (0 votes)

v0.56 ? This looks like a morroblivion version.

Last public version of Skywind was 0.9.0.1

Karma: 0 (0 votes)

Another link to preserve valuable information, how to set up stationary guards

http://forums.bethsoft.com/topic/1486930-quick-questions-quick-answers-thread-33/page-7#entry23397649

Karma: 0 (0 votes)