VIDEO TUTORIAL ADDED!
http://youtu.be/RLv9FRL9rGQ
Please read the description at the end of the video!
I wanted to be able to add dialogue to the current house NPC's so that I can make my own upgrades, After many painstaking hours, I finally got it to work and decided I would share it with everyone!
as this is my first tutorial the formatting may be all over the place, So sorry in advanced!.
The basic steps for creating this mod are as follows.
- Generate new forms for extra dialogue.
- Generate new dialogue for the existing NPC including money transaction.
- Script dialogue to enable disabled items with world references.
- create the in-world reference marker.
- link our extension with a parent to the marker.
Part 1 - Forms.
Our first step is to load the creation kit up with the skryim.esm data file, Once done you want to navigate to the object window. You want to expand the Miscellaneous tree, and click on Global's, once done, Set your filter to HDSolitude, You will see a list of the current available upgrades for the Proudspire Manor , You want to right click on any of them, I will use kitchen for this example and hit "Duplicate", This will create a copy, Next right click it and go to edit. Set the ID to HDSolitudeBasemant, Keep the variable type to Short, And for value, Put in the value you want the upgrade to cost, I have set it to 1500. Leave constant un-checked and click OK. It will ask if it is okay to create a new form, Click No, Then click Yes to confirm.
Part 2 - NPC Dialogue
The NPC dialogue is next up, and thankfully a lot of our work is done for us, We will use the template for the other house upgrades, meaning we will get full NPC dialogue with voice and subtitles. Once again in the Object window, Set your filter to HousePurchase, and then click ALL at the bottom. Double click the quest that comes up, the first thing we need to do is add a Display Text entry, On the new window that has come up, look at the large column on the right hand side. right click this and click and new. A Form selection window will come up, Type in HDSolitudeBasemant for the filter, and then double click the entry. Next you want to click the Player Dialogue at the top. In branches select DecorateSolitudeViewBranch1, Then under topics right click a blank are and click New Topic and type in DecorateSolitudeBasemant and hit OK, This will create a new topic that we can add some NPC Dialogue into.
We are going to leave NPC Dialogue for now so we can create our reference marker, Hit OK in the bottom right of the quest dialogue.
Part 3 - Reference Marker.
Next we want to look at the Cell View, Make sure it is set to Interiors , Click on any of the entries and type in SolitudeProud, It will highlight the cell for the Proudspire Manor, Double click this to show it in the render window. Once loaded use your mouse wheel to zoom out, Until you see a bunch of red XMarkers on the lower right side of the render window. We are going to duplicate one of these, Select one of them, (Any one) and hit CTRL+D to duplicate it, Then move it slightly so that it is not overlapping. Then right click your new marker and click Edit. You want to change the Reference Editor ID to be SolitudePlayerHouseDecorateBasemant And hit OK, Then click No, and click OK to confirm. We should keep the render window open as we will be using this next.
Part 4 - NPC Dialogue Continuation
In the object viewer you should still have the HousePurchase quest, Double click on this to bring the Quest Dialogue back up. Once again click on Player Dialogue, Then DecorateSolitudeViewBranch1 in the Branches. Locate our DecorateSolitudeBasemant topic, and click it. On the large blank window to the right, Right click and select New. A New Response window will pop up, Cancel this as we are going to use a template. When you cancel it will bring up the main dialogue editor. Just below the Prompt text box, You will see a pull down called "Share Response Data From Info, Click this and type in PlayerHouseDecorateBroke, Click this and you will see that our response, Audio and subtitles are automatically filled out for us, Our next task is to create some Condition for the dialogue We will make 5, I am going to separate them out below for readablilty sakes.
To create a condition right click and then click new in the Conditions area.
- Condition 1
- Condition Function: Type GetInCell
- Parameters: Click invalid and type SolitudeBluePalace and click OK
- Condition 2
- Condition Function: Type GetInFaction
- Parameters: Click invalid and type JobStewardFaction and click OK
- Condition 3
- Condition Function: Type GetVMQuestVariable
- Parameters: Click invalid and for quest, Select HousePurchase and VM Variable should be ::SolitudeHouseVar_var, Click OK.
- Comparison: Needs to be set to >=
- Condition 4
- Condition Function: Type GetItemCount
- Parameters: Click invalid and type Gold001 and click OK
- Comparison: Needs to be <
- Use Global: Under the Value box, make sure UseGlobal Is ticked, Then set value to HDSolitudeBasemant
- Run On: Make sure this is set to Reference, Once set , Click the select box next to it, And choose Cell: (any) and Ref: PlayerRef('Player') and hit OK
- Condition 5
- Condition Function: Type GetDisabled
- Parameters: Leave as NONE
- Run On: Make sure this is set to Reference, Once set , Click the select box next to it, And click Select Reference from Render window, What you need to do here is double click the red XMarker that we created earlier. Once selected hit OK.
We now need to Ok this dialogue window, We will be back at the Topic Selection menu, You will now see the <
Part 5 - Purchase Dialogue Activation.
Essential we are going to copy step 4, With the topics window , Right click our created <
First of all, We need to change Share Response Data From Info , Change it to PlayerHouseDecorateSold, Next we need to look at the Linked To Check box, Make sure Invisible Continue is Enabled. Then look at the blank box below it, We need to add a link to the main tree dialogue. To do this we need to right click the list, and click Add Link, There is going to be a large list of topics , Now we need to make the Branch/Scene and Topic tabs larger so that we can find the one that has a Branch of DecorateSolitudeViewBranch1, And a topic of DecorateSolitudeElse, Once you have found it, Select it and hit OK. Next we need to change one of our condition, double click the GetItemCount condition, And change the condition value to =>, Ok that window.
We also need to add our dialogue reference in other parts of the dialogue as well, So OK this dialogue window so that you are back at the topics tree, And click on DecorateSolitudeElse. Then double clicked the <
On the right hand side you will see a list of Links, We need to add our new dialogue to this, So as before. Right click the list, And click Add Link, Then look for the following topic DecorateSolitudeBasemant and then click OK. Then OK out of this dialogue, And select the topic DecorateSolitudeViewBranch1Topic (At the bottom), Select the top <
Next we need to write up some script to activate our marker, This is not as hard as it sounds!.
Part 6 - The script.
Ok. We have fixed our conditions, Next we will add a script! In the Papyrus Script Section, Click on edit. At the top of the window that has just opened you will see something similar to editing fragment attached to xxxxxxx, You need to remember what your xxxxxx Is, As we need to make the script first, In this example I will use 01002DD5, Close this window for now, And click Add next to the scripts list on the right. Then double click new script, And for the name put TIF__xxxxxxx so for our example, The name is TIF__01002DD5, Then Click OK. This will add a new script that is awaiting editing. Our next step is to add some code, Right click the TIF__ script, and click Edit source. You need to paste the following, And change the script name (in Red) to your script name!,
;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment;NEXT FRAGMENT INDEX 1Scriptname TIF_01002DD5 Extends TopicInfo Hidden;BEGIN FRAGMENT Fragment_0Function Fragment_0(ObjectReference akSpeakerRef)Actor akSpeaker = akSpeakerRef as Actor;BEGIN CODEgame.getplayer().removeitem(gold, HDSolitudeBasemant.value as int)decoratemarker.enable();END CODEEndFunction;END FRAGMENT;END FRAGMENT CODE - Do not edit anything between this and the begin commentMiscObject Property Gold Auto int Property GoldAmount Auto ObjectReference Property DecorateMarker Auto GlobalVariable Property HDSolitudeBasemant Auto
After changing the name, Hit file->Save and if you did it right, You will see no errors, 1 Succeeded. Close this window.
Next we need to change the properties of our script.
Double click our TIF__ Script, and you will see the propertied window pop up, there will be 4 properties already there, we need to do is assign some values to the properties, Click on the first on, Object Reference. On the right side click Edit Value, For Cell you need to detect SolitudeProudspireManor, and set Reference to SolitudePlayerHouseDecorateBasemant (XMarker), Then click Gold, And hit Edit Value, And set it to Gold001, then click on GoldAmount , Edit value and set it to 1500 (this is the price we set before), and last but not least, Click HDSolitudeBasemant and set it to HDSolitdueBasemant Once that's done, Click OK.
We are almost done! The last thing we need to do is add some code to the fragment! Paste the following code into the Papyrus fragment box.
game.getplayer().removeitem(gold, HDSolitudeBasemant.value as int)decoratemarker.enable()
Then hit compile. If everything has gone right, No error boxes will appear. Now click OK to the Quest dialogue window. We are on the home stretch!
Part 7 - The Final Step.
I am just going to take this opportunity to explain how this works, When you place an object in your house, It by default does not have a parent ID. Now any object that has a parent ID takes on the same parameters of your Parent. What we are going to do is Place a kettle out , Set its parent to our XMarker, And that's it!. In this example we are only going to do one object, but once you understand how it works, You will be able to do any type of object from walls to doors etc.
In your render window, Find a spot to place an object down, Then in your object viewer find the kettle (filter kettle with all) and drag it from the object window do the render window. Once you can see it, Double click the kettle. Set the editor ID to anything you wish, I am going to call it BasemantKettle. Then on the tabs below, Press the > button until you see Enable Parent. In this window you want to click Select reference from Render Window, And then find our XMarker that we created. Once you double click the Xmarker you are official done!
This is the end of the tutorial, All you need to do is now save the mod however you wish, And then load it into Skyrim. If all has gone to plan what will happen, is when you go to the manor, There will be no kettle. Then run to the blue palace NPC Falk Firebeard, He will have a new house decoration option called "Basemant", Purchase that from him for 1500, Run back to the house and the kettle will be there!
Now some of you may be asking, What if I want to hide the object when its purchased? for example a wall When you double click on an item, And are in the Parent section, You will see Set enabled state of opposite..... check that box, and you will have reversed effects.


