Welcome Guest ( Log In | Register )

3 Pages V < 1 2 3  
Reply to this topicStart new topic
> T.I.M.E. (The Interactive Modding Excursion), Mod-making tutorials
Renee
post Dec 29 2018, 04:04 PM
Post #41


Councilor
Group Icon
Joined: 19-March 13



This one is not fully edited yet. But I'll be working on it the next few days / weeks.

This is one of the more advanced endeavors I've gotten involved with, and so keep that in mind. smile.gif I would say everything in this thread so far works over 90% of the time. The process below can be more time-consuming and problematic. But it also works well once it's all set up and playtested.

-----------------------------

Repeatable Bounty Quests II (innkeeper involvement). Game: TES IV: Oblivion

This module shall deal with Respawning Bounty Quests. In effect, the quest-giver won't give us this bounty quest just once. It can potentially happen over and over, as the game respawns every 3 days. This adds to the roleplaying side of things, but in a real way, not just imagination.

So in other words, when a certain NPC gets spoken to, he or she can possibly give a quest which will lead to some sort of bounty-hunt. Once we have done what this NPC wants us to do, it's then possible to go back for a reward from that NPC, or some other NPC. However, this quest is not a one-time deal; it can potentially happen every 3 days.

On the other hand, the possibility of this quest won't always show up in dialog. Instead, it shows up randomly, so we never know when the NPC will give the option to start things. Because of this, when the quest finally shows up it feels more natural, as it becomes a part of conversation only occasionally.

I have gotten this to work with numerous NPCs, mostly innkeepers. The subject of my first respawning quest was probably the most difficult, but I didn't know this at the time. I got the inspiration for this idea after visiting Malene of Roxey Inn, and she's a lot more complicated than some other NPCs in the game. The idea is: Malene already knows my character, since she's already helped her in the past, during the Gravefinder's Repose quest. Well, the necromancers have returned, so Malene needs her help again. But she will ONLY ask for this help AFTER The Gravefinder's Repose is done.

Since she has Gravefinder's Repose, a pre-written Bethesda quest, associated with her, Malene required some extra steps be taken to make my idea work. Other NPCs (Candice Corgin, owner of Pell's Gate's inn, for instance) did not require as much help to get similar quests running.


1). Open Construction Set, bla bla bla.

Innkeepers who aren't in walled towns make perfect quest-givers, because their places of business are not as protected. Whether it's Malene, Diram Sirethi, Candice Corgine, Foroch, and so on, these people have an interest in keeping the area near their establishments safe. But the thing is, using each of these innkeepers as quest-givers will make things different every time. Each one requires a unique approach. Each one must be worked with a little differently.

OBJECT window > Actors > NPC
First thing to do is do some research on the innkeeper, because this is who will also be the quest-giver. Double left-click on one of the names listed (Corgin, Malene, Diram, etc.), and click on their Dialogue button. The Dialogue panel takes forever to open. Once it does, look at the NPC's GREETINGs.

On the top right-hand side of the Dialogue panel is a large window, listing all the quests these NPCs will have for greetings. There is dialog which deals with Crime, as well as some Generic greetings. In some cases, they will also have greetings which deal with quests, such as SQ05, which is The Gravefinder's Repose (the quest Malene is associated with).

It's time to determine if the chosen NPC is already involved with any other quests. Are any of these quests current in our character's game? Have they already been done? Or have any not been started yet?

Some innkeepers are involved in quests, and some are not. Either way, look at the all the GREETINGs the NPC has. If our character is in the middle of some quest (or eventually will be) that an inkeeper deals with, you need to then look at these quests individually, and find their Priorities. In some cases, there might not be in any quests being done any time soon. If there aren't, look at the innkeeper's Generic greetings. Generic greetings often have lower Priorities than quest greetings.

For instance, Candice Corgine of Pell's Gate's inn has a bunch of Crime greetings (which can be ignored, unless your character is some sort of constant criminal). She also has DAClavicusVile, which has a Priority of 60. She will give the Clavicus Vile greetings when spoken to, but only if we're in the middle of this particular quest. She also has Vampire greetings, one Thieves Guild greeting, and several dealing with the MQEndgame. MQEndgame greetings only show up once the Main Quest is done.

We need to rule out which quests we've done, and which ones we're in the middle of. If our character is not a vampire for instance, we don't have to worry about Vampire greetings. If our character has done the Main Quest, look at the Priority for MQEndgame's GREETINGs (Priority is 12). But if the character meets Cancide before DAClavicusVile is done (Priority is 60), there are three choices.

1). Simply lower DAClavicusVile's Priority to 5 or below, ONLY if you're positive you're never going to do this quest. Maybe your current character could care less about daedric quests.

2). Finish the quest in-game, or

3). SetStage the entire thing with the console. Again, this works if your character never intends to do this quest.


Once those greetings get ironed out, this leaves the greetings for Bethesda's "Generic" quest (literally, it is called "Generic" in the Quest window), which is mostly dispenses random dialog such as "Good day" and "Well met."

As I said before, for each innkeeper that gets looked at, approaching their Greetings goes differently.

> For instance, Foroch, the wood elf who runs Gottshaw Inn, is not involved with any quests. So, just look at any Generic greetings he has. The Generic quest has a Priority of 5. Since Foroch hasn't got any quests associated with him, this means there are no other quests that introduce dialog with Priorities higher than 5.

Therefore, a revolving bounty quest that only involves Foroch can also have a Priority of 5. This Priority rating can get raised, for those who want to see their GREETINGs showing up more often, though they'll still be competing with Generic.

>>Candice Corgine has a bunch of generics she can randomly say, once the DAClavicusVile quest is out of the way. Again, the Priority for Generic is 5. Assuming no other quests are being involved with Candice, 5 can be chosen for her revolving bounty quest. Or, choose a number higher than 5. Maybe 7 or 9 or 15.

In some cases, the NPC will give GREETINGs which are Generic, but specific to a certain race.

> Diram Serethi is like this. Assuming MS47 (the Aleswell Invisibility quest) is done, he will begin giving Greetings which are from the GenericDarkElf quest, which has a Priority of 6. Therefore, a bounty quest which involves him should also have a Priority of 6 at the very least.

Every NPC is a little different. From the list above, Foroch is the least demanding, while Malene is the one who will require the most tweaking.


QUEST window
2a). If you are writing a quest involving somebody who is not involved with quests so much (not working with Malene or Diram, for instance) go ahead and start with the Quest Data tab, as usual. The quest won't require a name, but add the appropriate Priority. GetIsPlayableRace == 1 goes in the Quest Conditions window.

2b). Wtart a script which will look like this.

----------------------
scriptname aaaSQFNScript

short DoOnce
short Dead

-----------------

Go ahead and close that script as a Quest (not an Object), and save it.

Now things get more complicated, and I'll discuss the most demanding innkeeper of all: Malene of Roxey Inn. If you want to work with Malene, keep reading. If you want to work with any of the others, skip to step 5

2c).
Find SQFN in the Editor window (the long, vertical scroll-down box on the left side of the Quest window). SQFN stands for Side Quest FiNished, and it deals with NPCs who greet us after an official Beth quest is done.

So, once Gravefinder's Repose is done, that's when Malene will begin to use Topics and dialog found in SQFN.

*Note that SQFN also does not have an official name in its Quest Data tab. This means, SQFN never shows up in the in-game Current Quests page. Which is actually perfect.

2d). Topics tab
Look at Malene's GREETINGs. Note that she only has one GREETING on this page, which is "What can I do for you today?" ... Note the Conditions for this GREETING. One of them is GetStage SQ05 >= 100, meaning she will only say this once SQ05 (Gravefinder's Respose) is done. Malene will say this GREETING randomly, along with about a dozen other Beth-added GREETINGS, such as "What?" and "Good to see you."

We're going to include our own GREETING mixed in with all these others, so that she will only greet with any material we write once in a while. However, there's a small problem. If we include "What can I do for you today?" with our own GREETING, the game will only recognize the official GREETING from Bethesda, ignoring ours entirely.


4). So Step #4 is to give this GREETING to somebody else, preferably somebody who we'll never speak to in-game. Just go to the Conditions box, click on the GetIsID function, and change its NPC to some other NPC. I chose Malintus Ancrus, which is the person right below Malene.

5). Now to add our own GREETING. I made one which says "You're back, and I've got a problem."

6). Exit the Quest window and SAVE.


OBJECT window > Actors > NPC
7a). Time to make an NPC enemy. If you are working with Malene / Moss Rock Cave, quickest method is to edit a generic necromancer, such as NecromancerBossMaleBreton, saving this NPC as a New Form. Likewise, if you're adding this NPC in some lair full of bandits, you can edit an actual bandit, and so on. Edit generic enemies though, not named ones.

7b). I'm going to call the edited necromancer aaaNecroNPC as a Base ID. Her actual name though can remain "Necromancer," or whatever you'd like.

7c). If this generic enemy has any sort of script, make sure to change the Script scroll-bar to NONE.

8). Make sure 'Respawn' is toggled on, but 'No Low Level Processing' is toggled off.


9a). Go to the Factions tab and double-check the enemy is in the correct faction(s). For necromancers, there are usually going to be two: the NecromancerDungeon and NecromancerFaction factions. If you edited an actual necromancer, these factions will probably, already be chosen.

In many cases, we won't need to mess with our enemy's AI, but have a look at it anyway. Most of the time, their AI will include Wander packages, maybe a Sleep or an Eat package. As long as these packages are for IsInInterior (rather than some specific dungeon) this is good. The NPC enemy will wander around a bit, but they won't just leave.


9b). Also, delve into the Stats tab a bit. I prefer to make my NPC a boss-type with lots of health, or I'll offset him / her several levels above my character.

10). CELL / RENDER windows
Go into the cell where this enemy shall be placed. So for Malene / Moss Rock, put your NPC enemy into MossRockCavern. For Candice Corgine, she wants my toon to do something about either Fort Homestead, or Horn Cave. Diram Serethi wants us to do something about Fort Caractacus again, and so on.

Drop the NPC somewhere in this dungeon, preferably somewhere toward the end of it (so that he/she gets encountered near the place's end). This will ensure that most, if not all, of the location's enemies will have been slaughtered, by the time the hand-placed boss gets encountered.

11a).
Give the NPC a Reference ID. I chose aaaNecroNPCRef. Close all the NPC's windows and save all work.


OBJECT window > Actors
11b). Find the NPC and right-click > Edit. Open up the NPC's script window. Type the following...
-------------------

scriptname aaaNecroNPCScript

short Dead


--------------------------------

Save the script (click on its Save icon) and close it. Click OK on the NPC's window, closing him or her. SAVE.

11c). Reopen the NPC's info from the Object window again. Find the script just saved in the scroll-bar. Select it, and click OK. Re-open the NPC again.

Now, add to the script, so (in total) it will look like this.

-----------------

scriptname aaaNecroNPCScript

short Dead
Begin OnDeath

If (aaaNecroNPCRef.Dead == 1)

Set aaaNecroNPCRef.Dead to 2

Message "The leader of X has been killed", 36

EndIf
End


----------------------------------

Where the X is, substitute the name of the cell where the enemy has been placed.

11d). Use the Save icon to save the script, before closing it.

Note: When working with Malene and her Gravefinder's quest (SQFN), note that SQFN does not use Quest Stages, and neither will this quest being written now. This means no pop-up messages which pause the game. So, that on-screen message in the NPC's script is important. It lets us know the proper NPC has been killed, and now we have the option to collect a reward. You can opt for a messagebox instead of a message, but this will pause the game, killing the action until OK gets clicked.

Note 2: Technically, we won't need to kill any other NPCs once the one we added is pwned, but this is why it's a good idea to put him or her somewhere near the end of the dungeon.


12a). QUEST window > Topics tab
Find the quest being working with (SQFN if you're building a quest with Malene, or your own quest if you're building one with Diram, Foroch, or Candice). Find the GREETNG made earlier, the one which says "You're back and we've got a problem."

Here are the needed Conditions IF you're working with Malene. If you're not working with her, you won't need the GetStage, and (of course) GetIsID will be someone else, .

GetIsId NPC: Malene == 1
GetStage SQFN >= 100
GetQuestVariable Quest: SQFN DoOnce == 0.00
GetScriptVariable Reference: aaaNecroNPCRef Dead == 0.00

This will ensure that the quest-giver will only say this GREETING once the official Bethesda quest is done, and ONLY say this once. He or she will only say this if the NPC we just added into Moss Rock is (in theory) alive. If we've already been in the dungeon and already killed this NPC, the quest will still work. It'll just work a lot faster. wink.gif


12 cool.gif. In the Result Script box, type in Set aaaNecroNPCRef.Dead to 1

Note that during the quest-giver's GREETING, the ScriptVariable was 0.00, but now it is 1.00, because of the Result Script we just added. Why is this important? Well it's to ensure that Malene, Diram, Foroch, or Candice will potentially give us this GREETING only once per 3 days. As soon as they greet us in this way, they won't do so again, not for 3 days.

In a minute, we're going to add more dialog which will allow us to move this quest forward. It would be weird if (let's say) every time we speak to them, they try to goad us into going into that same lair, even though we've already accepted, or turned down, their proposal, so we're going to take care of this in a minute.

12c). Toggle Random on, and click OK, closing the Quest window. Save.

Quest-givers will now say this GREETING sometimes. Not all the time. As said before in this tutorial, they will also give other random GREETINGS like "What?" and "How are you?" .. Therefore, they won't always try to give us this quest. You can add a second GREETING (or a third, or however many you'd like) if you want to increase the chances of them giving us this mission. Just make sure you check "Random" for any additional greetings you add.

Again, for testing purposes, once you're back in-game, it is possible to enter and exit dialog with our quest-givers until they say what we've added.

12d). In the Add Topics box, add a new topic which deals further with Malene's wish to have us kill the necromancers of Moss Rock Cavern. Or if you're working with Diram, Foroch, or Candice, add dialog which explains that they want us to go into whichever lair is pertinent. Find this topic in the Editor ID box as well, and add it there also.

13). Exit the Quest window by clicking OK, and use the main toolbar to SAVE.

14). QUEST window > Topics tab
Go back to the last bit of dialog just added; in which Malene (or whoever) explains her plight with necromancers returning, or whatever. The Topic Text we'll click on in-game can be on the lines of: "Oh no, have those baddies returned?" or whatever. Then Malene will say something appropriate. "They're back, and ruining my business!" or whatever.

Copy all the Conditions from the GREETING we added (so it'll have GetStage {if needed}, GetIsID, GetQuestVariable SQFN DoOnce == 0, and GetScriptVariable), and paste them into the conditions for Malene's response. We are going to change something though.

Change GetScriptVariable aaaNecroNPCRef.Dead == 0 to GetScriptVariable aaaNecroNPCRef.Dead == 1

Note: The ScriptVariable is now on 1 instead of 0, so (again) her initial GREETING will not return until at least 3 days have passed, and the quest resets to 0 again.

> The QuestVariable's DoOnce is an optional step, which will ensure that the quest-givers will only say certain dialog during that first time we speak to them. Later on when we return, days or weeks or months later, the DoOnce will be 1 instead of 0, and they will say something different. They will be more familiar with our character basically, and this will reflect in dialog we're going to write.

16). Now, we can make it so that they will just give us the quest by using the Add Topics box, or we can make it so that we have a choice, by using the Choices box. We can add a "yes" response, and a "no" response if we choose this second option (continue to Step 17). If we don't want to include any choices, just skip to Step 18.

17). If the player chooses Yes, this willl lead to her giving us the quest. "Ah, I knew I could count on you." If we choose No, she will say something appropriate, maybe even be angry with us. In either case, again, we can just copy/paste all the Conditions from that second piece of dialog, the one about necromancers returning, but we'll be omitting the GetQuestVariable part.

Here is what it should look like, in either the "Yes" or "No" category, or in the final bit of dialog she says before we run off to Moss Rock Cavern.

GetIsId NPC: Malene == 1
GetScriptVariable Reference: aaaNecroNPCRef Dead == 1.00

GetStage SQFN >= 100 (if working with Malene / SQFN)

18). QUEST DATA tab
We're going to continue our script now. We're going to write a timer script. How it'll work: when the timer runs out after 3 days, the entire quest resets itself silently, along with Moss Rock Cavern itself, and the necromancer NPC we added. Here is what it'll look like in total.

------------------------------------
scriptname aaaSQFNScript

short DoOnce
short Dead
short Timer
short StartDay

Begin GameMode

if (Timer == 0)
If (aaaNecroNPCRef.Dead >= 2)
Set StartDay to GameDaysPassed
Set Timer to 1
EndIf
Endif

If (Timer == 1)
If ((GameDaysPassed - StartDay) >=3)
Set Timer to 0
set aaaNecroNPCRef.Dead to 0

EndIf
EndIf

End

---------------------------

.... Again, when we kill the NPC we added earlier, this causes the timer to begin. Once 3 days have passed, and the dungeon respawns all its enemies, the quest will also respawn. We'll be able to go back to our quest-giver, and potentially have him or her give this entire quest over again!

19). Go back into the Topics tab > GREETING. Give the innkeeper a GREETING which deals with her being happy we have killed the necromancers of Moss Rock Cavern.

Do NOT make this GREETING random. We want her to just reward us, not say "Hello" or "Good to see you!", when we return from Moss Rock.

And here are the needed conditions.

GetScriptVariable Reference: aaaNecroNPC.Dead == 2
GetIsID Malene == 1
GetStage SQ05 >= 100

20). Use the Add Topic box to give her some dialog which will lead to our reward, and add this topic in the Editor ID box. Once we've typed up some dialog for this reward, we can use its Result Script box to make Malene add whatever we'd like (I chose three bottles of beer, 100 gold, and some mutton, lol). We're also going to add another script which involves the main script's DoOnce, and bump the ScriptVariable forward as well, so that there's no chance Malene will keep giving us this lame reward until 3 days have passed.

Player.AddItem DrinkBeer 3
Player.AddItem F 100
Player.AddItem Mutton 1
Set SQFN.DoOnce to 1
Set aaaNecroNPCRef.Dead to 3

Make sure you copy the Conditions from the GREETING you just added, with GetIsId Malene == 1 , and GetScriptVariable aaaNecroNPCRef.Dead == 2 especially, and paste them into the Reward topic's Conditions box.

GetScriptVariable Reference: aaaNecroNPCRef Dead == 2
GetIsId NPC: Malene == 1
GetStage SQFN >= 100

21). Click OK, closing the Quest window, and SAVE.

22). QUEST WINDOW > Topics tab
Make another GREETING. It can be as generic as you'd like. "Hello" or whatever. Conditions for this GREETING will be

GetIsID Malene == 1.00
GetStage SQ05 >= 100
GetScriptVariable aaaNecroNPCRef.Dead == 3.00


Make sure Random is toggled on for this one. She will only say this GREETING (mixed along with others Bethesda added) once the quest is done, and reward is given out, but 3 days have not passed yet. Again we can test to make sure the quest is still "working" by entering and exiting dialog with the innkeeper (or any other NPCs who are grateful for our character's success) over and over, until we see our greeting. Since the GetScritptVariable is now 3 instead of 2, she won't keep potentially rewarding the player over and over, as we enter and exit dialog with her.

23). Make one more GREETING, this one will be the final one. It is optional, and only to add realism. In this GREETing, Malene will be greeting us as though she's familiar with our past actions (we've basically helped her clear Moss Rock twice by now), but those pesky necromancers have returned one more time. "I know you've done so much for me in the past, but can I bend your ear one more time?"

GetIsID NPC: Malene == 1
GetStage SQ05 >= 100
GetQuestVariable Quest: SQFN DoOnce == 1
GetScriptVariable aaaNecroNPCRef.Dead == 0

Again, add Set aaaNecroNPCRef.Dead to 1 in the Result Script box.

24). We can use the same Necromancer topic we used before after that very first GREETING, but the quest-giver (whether it's Malene or somebody else) won't need to explain in detail what comes next.

Copy all the Conditions from the final GREETING, and paste them into the "Necromancers have returned" topic. Make sure to change the ScriptVariable to 1 though. So now, it'll look like....

GetIsID NPC: Malene == 1
GetStage SQ05 >= 100
GetQuestVariable Quest: SQFN DoOnce == 1
GetScriptVariable aaaNecroNPCRef.Dead == 1

25). Add the same Topic or Choices which you added before. We won't have to add any additional dialog though, and we can keep the Conditions exactly the same for all this dialog, and also for the Reward part too.

26). Exit the Construction Set, saving your work. Make sure to make a backup copy of your .esp too, since it involved so much detail. smile.gif

---------------

Once we have our own Respawning Bounty Quest set up, we can potentially add other NPCs who give out quests, not just Candice or Malene or Diram. If we're using the same quest for multiple people, we can also add to the main script. Just make sure to add extra variables (short DoOnce2 instead of short DoOnce) for any extra quest-givers who share this main script.

This post has been edited by Renee: Jan 19 2019, 10:31 PM
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mALX
post Jan 14 2019, 07:56 PM
Post #42


Ancient
Group Icon
Joined: 14-March 10
From: Cyrodiil, the Wastelands, and BFE TN




This is an Awesome thread, Renee!!!


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Renee
post Jan 19 2019, 08:25 PM
Post #43


Councilor
Group Icon
Joined: 19-March 13



Awesome, thanks so much. smile.gif

This one is not polished up yet. It's kind of a mess, but I was learning as I wrote it up. I will edit its text in the next few days /weeks though, so it becomes more of a streamlined process.

------------------------------------------------

Respawning Bounty Quests, Game: TES V: Skyrim

Note: Currently the first 13 steps deal with my learning process, and the idea was I wanted to make a repeatable bounty quest for Skyrim, but my version works differently Than what Beth wrote. The way I've got it, certain people will occasionally want us to go kill some bandit boss who's been terrorizing locally, but they won't ALWAYS want us to do this. It's not the same as going into Bannered Mare, where Hulda always gives us a flier, advertising some local menace.

Anyway, to skip the "research" part of this lesson, go to step 14.



1). First step is open up the Creation Kit. Like, duh.

I am going to be focusing on Lucan Valerian, proprietor of Riverwood Trader. The idea behind this quest is that Lucan is fed up with the lowlifes of Embershard Mine ekeing out a living right beside the respectable town of Riverwood. Lucan recognizes my character for being an adventurer, especially after we help him get his stupid Golden Claw back. In fact, this bounty quest won't even begin until the Golden Claw is done. This is the way I decided to write what's below. With different NPCs (innkeepers, smiths, etc.) the process will be a little different every time. It all starts with figuring out what quests (if any) get associated with each one.

As I did in Oblivion, I must first have a look at all the quests involved with Lucan, so I can see all the dialog he can possibly say, especially Hellos and Greetings. I want to make sure that the dialog will match up to these quests and their Priority ratings, so that Lucan won't just start this quest every time I enter his shop.


2). OBJECT window > Actors > Imperial Race > Male. Find LucanValerius. Now right-click on him and left-click "Use Info." The Use Report panel shows up, and it includes two windows. The top one is the one I'm interested in.

At first glance, this top window seems to include everything Lucan is involved in, quest-wise. It actually does not include everything though, as I'll explain in a minute. Still, even everything can't be seen here, the Use Report top window is still a good place to start. Immediately, I can see a slew of INFO topics that get associated with Lucan.

Go ahead and left-click on a few of these INFOs, just to see what shows up. Mostly, these are just fragments of the actual quests.

3). Scroll the top window down until you see QUST. Obviously, this stands for Quest. I'll need to look at every quest Lucan is involved in. Here they all are:

MS13Intro
DialogueRiverwood_Revised
MS13LucanCamillaScene
MS13
DialogueRiverwoodDryGoodsScene1


Note that MS13 pops up several times, and this is Lucan Valerian's shining moment in the game since it is the Golden Claw quest.

Double left-click on each QUST topic, and see what pops* up. Every time we double-click on one of these topics, a quest panel will open up, which is mighty convenient.

Since I will be writing the bounty quest so that it doesn't begin until MS13 is done, I'm not going to worry about MS13's Priority. But I will go through those five quests. It is important to research these quests, so that my own quest will work with the same randomness that the Oblivion version did.


a). Double-left click on MS13Intro, and look at its Player Dialog tab. This quest deals with starting the Golden Claw, and its Priority is 0. Not only that, but Lucan doesn't have any dialog yet. Nothing to worry about, since I'm not going to write my quest for pre-MS13, or during any portion of MS13.

Close the MS13Intro panel.

cool.gif. DialogueRiverwood_Revised is the first quest I might be dealing with, since it stays active after MS13 is done. Its Priority is 30. This quest, and all its dialog, remains active throughout the game. A lot of the dialog in DialogueRiverwood_Revised has to do with generic things Riverwood residents say, so it's definitely important to check further.

c). MS13DialogueLucanCamillaScene: open it up, and look at its Player Dialogue tab. This is a short quest which causes Lucan and his wife to begin arguing about their claw, when we first walk in their shop. Its Priority is 60, and there's nothing under the Player Diaglogue tab, anyways. Let's move on.

d). Open up MS13 itself. This one deals with the rest of the Golden Claw quest: going up to Bleak Falls, retrieving the claw, returning it to Lucan (or not), etc. Its Priority is also 60. Keep moving along.

e). DialogueRiverwoodDryGoodsScene1 also has a Priority of 30. However, it doesn't have any dialog at all. It only includes a "Scene", which can be found under the Scenes tab. Scenes involve two NPCs, when they speak to each other back and forth. This quest has nothing under Player Dialogue, or any other tab, so I'm closing this panel out.

... Hmm. So far, I haven't found any of Lucan's more famous post-MS13 GREETINGs. Where, for instance, is "Thanks so much for taking care of those thieves...." ? I haven't seen this dialog yet, and I must find it. Because the dialog in my quest is going to work alongside the dialog of "Thanks so much...."


4).
Close the Use Report panel. It seems like I just wasted a bunch of time, but not really. It's important to find everything an NPC says, if he/she is to be included in my quest quest. If you don't find the things you'd normally expect, this just means "keep digging" until these things are found.


5). OBJECT window > Characters > Quest.
Scroll down to the MS13 area. Ah-ha! There's an additional quest involving MS13, which is called MS13Fin. MS13Fin deals with the aftermath of the Golden Claw quest.

Double left-click on MS13Fin. I'm going to click from tab to tab, across the top of this quest's window. Start with the Quest Data tab, which should be open by default. Notice that it's got a Priority of 60.


6a). Now go to Quest Stages tab. Notice there no Quest Stages.

6b). Skip Quest Objectives because it does not handle dialog at all. Same goes with Quest Aliases, skip that one too.

6c). The two tabs which often handle dialog: Dialogue Views and Player Dialogue, also have nothing.

You can keep clicking other tabs, just to see if there's anything under there, but it's not until I got to the Misc tab that something shows up. Finally! All the more prominent post-MS13 Greetings are right here, and there are four of them, though they aren't called GREETINGs anymore, like we'd see in the Construction Set or the GECK, they are now called Hellos. Two of these Hellos are said by Lucan, and two are said by Camilla, therefore we can immediately rule Camilla's Hellos out.

7).
Double left-click on one of Lucan's Hellos. Note that 'Random' is not toggled. Oddly, once we're back in the game, he will say his Hellos in a random fashion, when greeted several times in a row (as I did when playtesting respawning bounty quests for TES IV: Oblivion). Why is this?

>>> From this point, if you'd like to know how everything works in detail (how the game involves Lucan in various dialogue Hellos), click the Spoiler tag below, and go to Step 8. If you'd just like to continue writing the quest, go to Step 12.




12).
Open up MS13Fin > Misc tab again (if it's not already open). Now, open up Lucan's "Thank you" greeting, and toggle Random on. Click OK. Now open up the topic just below it, which is "Thank you for bringing the claw back." Toggle random on for this one, too.

13). Change Hours until reset from 0.50 to 0.00 for both these Hellos. This is not 100% necessary, but it increases the chance of my own Hello, which will get written soon, appearing.

From this point on, you can either write your quest into MS13Fin, or start your own quest. Although I prefer to start my own, right now I'm not good enough yet with the CK to link multiple quests, so I'll hitchhike my material onto MS13Fin.


14). In the big Info window, right-click > New. Write up Lucan's Response Text, which will be something like "Hey, you're that guy who helped us before. We've got a small problem now. Care to have a listen?"

15a). Click OK. The Topic Info panel will show up, and it should include the text we just typed.

15b). Toggle Random on. Leave Hours until reset at 0.00.

15c). In the Conditions box, right-click > New. GetIsID is what shows up by default, so choose LucanValerius for this condition.

Time to make some voice files, as was done for the Skyrim Quest Tut. Again, an actual voice is not needed in-game. If you already know how to do this from the Skyrim Fetch Quest tutorial, skip to Step 16.

15d). Double-click the dialog you just added in the Response Text window, so the Edit Response panel shows up again. There should be a Voice Type listed in the bottom window which corresponds to the NPC who says this dialog (MaleNord, for instance).

15e). Highlight this Voice Type. Now click the Record button. If you have a microphone and want to record yours, or someone's voice, now's the time. If not, just press Record and read the text which just got written. Press Done.

15f). Click again on the VoiceType (MaleNord or whatever), and click the Save button. If a warning shows up saying this file already exists, it's because there is already a MaleNord (or whatever) file saved. There is a choice to overwrite any previous recording made, basically.

15e). Toggle the From WAV ON, and press Generate Lip File.


16). Click OK, OK, and OK, closing out all the quest windows, just to make sure everything is saved. SAVE by pushing the main toolbar's save button. Reopen the Quest now.

My Hello is now in the game, and if I were to go back into Riverwood to greet Lucan, there's now a 50/50 chance he'll say "Thanks for taking care of those thieves," or whatever I just wrote. Thing is, he will only greet us in these two ways, and he won't give any other Hellos he was formerly using. If you are fine with this, move on to Step 18. If you want to further reduce the chances of your Hello showing up (so that he may only give this quest once or twice a year), go to 17.

17). To decrease the chance of Lucan saying the new Hello, simply lower MS13's Priority to 30. This will cause Lucan to have five extra Hellos in his arsenal from the getgo, from the DialogueRiverwood_Revised quest. An occasional generic Hello from DialogueGeneric may also sneak in there. To increase our Hello showing up from this point (while keeping all the vanilla Hellos), we can simply add another greeting into MS13Fin's Misc tab.

Go into DialogueRiverwood's Hellos, and make these random too. Hours Until Reset can stay off, or you can turn them on for each Hello.

** Now, the main difference between the respawning bounty quests for Oblivion, compared to these ones in Skyrim, is that the Oblivion versions worked solely with script and quest variables. In Skyrim, I will be using quest stages, along with some of the other things the CK likes to see, such as Properties and Aliases. There probably is a way to avoid using stages, instead using variables like I did in the previous game. Bethesda themselves prefer stages for their own bounty quests though, so that's the way I learned.


18). OBJECT window > Actors .
Right-click > New. I made an NPC enemy, and put him somewhere in the center of Embershard Mine. I prefer to put the guy near where those jail cells are, this way he gets encountered roughly half-way through the cave. When you make your enemy, you can follow any steps you've found in other tutorials. You can use Template Data for instance, to make things more convenient. Just make sure the enemy winds up in the BanditFaction.

19). Toggle "Respawn" and "Unique" on for this enemy. Click OK. SAVE.

20a). Open MS13Fin again > Quest Data tab. Toggle "Allow repeated stages" on.

20b). Also, where the "Type" scroll-bar is, change this to Miscellaneous.

20c
). Object Window Filter: type Misc\Riverwood\


21). Quest Stages tab.
Go ahead and make seven stages here. Bethesda only uses three, and you don't have to use seven, but seven is what I wound up with. My stages are 0, 10, 15, 20, 30, 50, and 100. For convenience, I recommend you use these numbers too.

21a). The first stage, of course, is 0. It is more like a pre-stage, actually. Toggle "Start Up Stage" on. Now, right-click > New into the Log Entry area, but don't add any text. It should say EMPTY in this box. In the Papyrus Fragment tab's box, you can just put a comment saying ;Pre-quest.

21b). Do the same things for Stage 10, so EMPTY shows up in the Log Entry box, and you can add another comment into the Papyrus Fragment box if you'd like to. Stage 10 shall deal with Lucan greeting the PC, pitching his idea.

21c). Repeat all of this for the next stage. I'm up to 15, by now. 15 shall be an intermediate stage, during which Lucan has spoken about his concern, and we've got a choice to say "yes" or "no", to the idea of invading Embershard. Stage 15 is optional actually. If your own character always takes on quests, never turns them down, don't worry about making a "no" choice here.

21d).
Stage 20 now. If "yes" is chosen, the quest will bump to 20. If not, it'll just stay at 15 if you wrote it that way. The neat thing is, this quest won't even appear in the journal if "no" gets chosen. Do all the same things for this stage (EMPTY, and a comment).

21e). Stage 30 is the first stage which adds some scripts, but for now, just do the same as what's been done for those four other stages, so that there's EMPTY and comment.

22a). RENDER window.
Go find the Embershard Enemy, and give him or her a Reference ID.

22b).
Click Edit Base from the NPC's reference panel. In the Papyrus Scripts box, right-click > Add Script. Now double-click on [New Script]. Give your script a unique name (I named mine aaaEmbershardEnemyScript), and leave Extends: ObjectReference alone. Click OK. A blue + symbol should show up in the Script Name box.

22b). Right-click on the script, and then left-click Edit Source. You should be seeing this....

Scriptname aaaEmbershardEnemyScript extends ObjectReference

22c). Close your script. Now highlight it, and press Properties. Press Add Property. Use the Type scroll bar to find Quest. For "Name", just put the name of your quest. You don't have to call it MS13Fin; matter of fact from this point on I began calling it aaaEmbershardBountyQuest, for conveniece, since anything with "aaa" in front of it will usually show up at or near the top of any list.

Click OK. Wait a moment until a symbol shows up. You have just made yourself a Property. It should have your quest's name, and under Type it shoud say Quest.

22d). Highlight your property and press.the Edit Value button. Since this property is a quest, you will see all of the quests listed in the game. We're going to link this new Property with MS13Fin, so go ahead and find MS13Fin in the Pick Object scroll-bar. Click OK.

Note: It really helps to read the Skyrim Properties, Aliases, and Fragments module, if you haven't done so already. If you've already done some modding in the CS or GECK (which don't use properties, alliases, and fragments) using them in the CK may seem like extra, unnecessary steps. But these things are really here to make our lives easier in the long run, especially when it comes to writing some really complicated scripts.

22e). Now right-click on your Property > Edit Source. Now you should be seeing this...

-----------------
Scriptname aaaEmbershardEnemyScript extends ObjectReference

Quest Property aaaEmbershardBountyQuest Auto

---------------

22f). We'll write the rest of this script manually, so in total it'll look like this....

----------------
Scriptname aaaEmbershardEnemyScript extends ObjectReference

Quest Property aaaEmbershardBountyQuest Auto

Event OnDeath (Actor Killer)
aaaEmbershardBountyQuest.SetStage (30)
EndEvent

------------------------------------

22g). From the script's tool-bar, click on File > Save (or just ctrl + s) to see if you've typed everything okay. Close the script window, and click OK on your enemy NPC's window, closing him or her out as well.


23). Find MS13Fin again > Misc tab. Find the Hello you added earlier.

23a). There should already be a GetIsID == Lucan there. Now add the following conditions....

GetStage Quest: MS13Fin < 10.00

GetIsDead aaaEmbershardEnemy == 0

That second condition is obviously a check to make sure the enemy we added to Embershard is alive. If he is not (if he has not respawned along with Embershard itself), Lucan won't be able to give us the Hello we've added at all. To find your enemy, you'll need look at the scroll-down next to where it says "Run on" and find him or her in this list. Click the Select button, find the Cell and the enemy's Reference ID, and click OK.

23b). In the "End: Papyrus Fragments" box (located bottom-middle). Here, we're going to type in GetOwningQuest().SetStage (10) without quotes. This way, Lucan will keep giving us random Hellos until he greets us with the one we wrote. Once he greets us with our own material, the quest bumps forward to 10, and he won't say this anymore, not until the entire quest resets itself.


24). Dialogue Views tab. Go ahead and write up all the rest of our dialog into this very visual tab (unless you're more comfortable with the old-fashioned Player Dialogue tab). We're going to need to make five different branches, which shall include topics and infos as follows....

> Lucan informs us about the menace at Embershard Mine (Stage 10. Type GetOwningQuest().SetStage (15) into the End : Papyrus Fragment box). )

>> We answer Yes or No to Lucan's proposal (Stage 15, type GetOwningQuest().SetStage (20) into the End : Papyrus Fragment box for a "Yes" response. If we say "No" we can simply leave the quest at 15, and toggle Goodbye on if we want).

>>> Lucan gives us follow-up info: where we can find Embershard, how we'll get paid, and so on. (Stage 20, we don't need to set a stage here, since killing the enemy will do this).

>>>> We return to Lucan, after Embershard has been cleared, (its top enemy is dead. Stage 30.)

>>>>> Lucan gives us a note, which we can take to Proventus, Whiterun Jarl's steward, to get paid. (Stage 30. Don't worry about adding scripts yet, we'll do this in a few).

>>>>>> We get our money! (Stage 50. Type GetOwningQuest().SetStage (100) into the End: Papyrus Fragment box).

I won't go into detail here, but write up your own dialog for each of those five branches.


25). Quest Objectives tab. By now, we've got all our dialog written, and we've got all the quest stages we'll need. Time to add some quest objectives, if you want them. Just like in Fallout 3, Objectives are what cause onscreen messages to be displayed when we pass important milestones during the quest.

I'm not going into full detail here, since this info is already in the Skyrim Fetch Tutorial, but I wound up with three Objectives: one which tells us to "Kill the leader of Fort Embershard", one for "Return to Lucan" and one for "Head to Dragonreach for your reward." These Objectives get displayed and completed as follows....

"Kill..." (Stage 20, Stage 30)
"Return.." (Stage 30, Stage 50)
"Head to.." (Stg 50, Stage 100)

26). OBJECT window > Items > Books. Find a note, and Duplicate it. I am calling this note aaaRewardNote. We're going to erase and change this duplicate's text. Lucan is pleased that we've killed the leader of Embershard, but he can't afford to pay us. He's got a business after all, and cannot (in roleplay terms) afford the downfall paying our character hundreds of gold would cause. See? So what he does is gives us a note, explaining that we've taken care of Embershard Mine. We are going to take this note to Dragonreach, just like we'd do during any of Bethesda's bounty quests. Difference is, we're going to NEED our note if we want to get paid!

Write this note up, and save it.

And now, we're going to use the Quest Aliases tab to add four different aliases: one for the Player, one for the quest-giver (Lucan), and one for the note.


27a). Alias tab. Let's start with the Player. Right-click > New Reference Alias into the giant Alias window. This opens up the Reference Alias tab. Alias Name shall simply be Player. Now click on the Unique Actor toggle, and find Player in the scroll-bar. Click OK. Again, if the page is too big and you can't see OK, just click into the Alias Name slot, and press Enter.

27b). Next we'll tackle Lucan, who is the one who gives us the note. ALWAYS add the giver of any item first into the Quest Alias window, before you add the item itself. For Alias Name we can type QuestStarter. Now, click the Unique Actor toggle on, and find LucanValerius in the scroll-bar.

27c). Click OK, or do the Alias Name slot thing, and press Enter.

27d). Now do the same with the note. You can just type Note into the Alias Name slot.

27e). Now for this one, toggle "Create Reference to Object" on. Find aaaRewardNote (or whatever you called it) in the scroll-bar. Leave "Level" as Easy (always leave it on Easy). Now, for Create, leave the toggle on "At". And find QuestStarter in the scroll-bar. Altogether, this should read "Create Reference to Object: aaaRewardNote, Level: Easy At QuestStarter.

* You can also toggle Quest Object on, if you want to make absolutley sure this note will never get misplaced. Quest Object is on the top-right of this panel. Just remember though, if you don't have the note, you won't get paid!

27f). Click OK.... or Enter.


28a). Player Dialogue tab. Go back to the whatever dialog you wrote for Lucan, when we're done killing the bandits of Embershard.

28b). In the Begin: Papyrus Fragment box, type SetObjectiveCompleted (30).

28c). In the End: Papyrus Fragment box, type GetOwningQuest().SetStage(50)

28d). Now find whatever dialog you wrote for Stage 50, when Proventus Avenicci is supposed to pay us, but we'll need that note to make this happen. Here are the Conditions for Stage 50...

GetItemCount 'aaaNote' == 1 And
GetStage Quest: 'MS13Fin' == 50 And
GetIsID Actor: 'ProventusAvenicci' == 1

Make sure that "Target" is selected for GetItemCount, rather than Subject.

28e). In the End: Papyrus Fragment box, type GetOwningQuest().SetStage (100), unless you've already typed this in.


29a). Quest Stages tab > Stage 50 > Papyrus Fragment box. Click on the Properties button.

29b). After the panel pops up, click the Add Property button.

29c). In the Type scroll-bar, look for Book.

29d). In the Name slot, type the name of the note you'll need to carry, in order to get paid. Click OK.

29e). Click on the Property for the book. In the Pick Object scroll-down, look for aaaNote, or whatever you called your note.

29f). Click OK, closing the Properties for script panel.

29g). In the Papyrus Fragment box, type "Get.GetPlayer().AddItem (aaaNote, 1)" without quotes. Note that aaaNote is the name of the note you'll need to get paid.


30a). Now for the final stage, which I called 100 up above. In the Papyrus Fragment box, type Game.GetPlayer().RemoveItem (Note, 1).

Now to get paid.

30b). Click the Properities button agian. Click the Add Property button. For the Type scroll-bar, look for MiscObject. In the Name slot, type Gold001. Click OK, and click OK.

30c). In the Papyrus Fragment box, type Game.GetPlayer().AddItem (Gold001, X) , with "X" being whatever you think is fair. Also type...

stop()

..........That is it! "Stop()" is what shuts down the quest, after we get paid. And also, do NOT toggle Complete Quest on. We want this quest to never get completed, right?

So we are done with the basic railroad part. Now, we just need to make sure the entire thing respawns.


31). Quest Data tab. Find the Event scroll-bar, and choose Change Location Event. Make sure "Allow Repeated Stages" is on, in case it's not already toggled.

Notice how "Start Game Enabled" is now grayed-out, and we don't have an option to toggle this on or off. This is fine. Click OK, closing the Quest window.

32). OBJECT window > Character > SM Event Node. Right-click on "Change Location Event" in the the right window, and select Edit. SM stands for Story Manager.

33). You might see several nodes made for other quests, or you might just see a lage panel which is mostly empty. Right-click on the very top choice, which is Stacked Event Node: Change Location Event. Now select New Quest Node. A new choice called "Stacked Quest Node" should be at the very bottom of this window. Scroll down (if you have to) and find it.

34). Right-click on Stacked Quest Node and choose Add Quests. Find MS13Fin. Click OK.

Now comes the tricky part. The SM Event Node panel is similar to the Quest Aliases one, in the sense that it's too big for some screens. Bethesda actually put OK in the top-right corner this time, yet you might not be able to see the bottom of the panel. And we'll need to be working down there. If you can't see the bottom, you'll possibly need to minimize the entire Creation Kit from its tool bar. Now right-click on your desktop, and change your Screen Resolution setting to something smaller, or rotate the entire screen to Portrait instead of Landscape. You will now need to adapt to working sideways!

35). Highlight the Node you just made (not the quest below it). Now look down the page (or to the right, if you had to rotate). In the ID slot, type in aaaMS13FinQuestNode. Toggle "Do all before repeating" on. And toggle "Shares Event" on.

Once all this is done, you can rotate your screen back to Landscape.

36a). Right-click > New in the Node Conditions box, and add the two conditions...
[b]
GetInCurrentLoc Location: "RiverwoodLucanDryGoodsLocation" == 1.00 And
GetDead NONE == 0.00[b]

36b). For the first condition, change Subject to Player, meaning that the Player/character needs to be in Riverwood Trader for the quest to begin.

36 c). For the second condition it says NONE, but there is some hidden information within this one that cannot be seen. You'll need to double-click on this condition, and in its scroll-bar (where it says Subject) change this to Reference. Now push the Select button, and use the Cell scroll-bar to find EmbershardMine01. Find your enemy's Reference ID, and click OK.

37) Click OK, closing the SM Event Node panel.

38). Close Creation Kit, saving all work. Don't forget to create or update the SEQ file (see SEQ File Creation tutorail).


And that should be all. Again, if you have Wrye Bash (or some mod which modifies cell resets) use a minimal number of days when playtesting this quest, to make sure it begins, runs through all its stages, shuts down, and starts all over again. When the quest shuts down, we can test to make sure it's shut down by spam-greeting Lucan several times. Whatever Hello we wrote, should not be showing up for X number of days.

This post has been edited by Renee: Jan 19 2019, 09:37 PM
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

3 Pages V < 1 2 3
Reply to this topicStart new topic
3 User(s) are reading this topic (3 Guests and 0 Anonymous Users)
0 Members:

 

- Lo-Fi Version Time is now: 24th January 2019 - 07:05 AM