Welcome Guest ( Log In | Register )

> Renee's Modding Thread
Renee
post Feb 25 2018, 01:30 PM
Post #1


Councilor
Group Icon
Joined: 19-March 13
From: Ellicott City, Maryland



Mod-making thread basically, which focuses heavily on quest-making. The first two tutorials (How to make a fetch quest and how to make a kill quest) are very hand-holdy. They are designed for those who are just starting to learn the art of quest-making. Other tutorials get more advanced, as my wacky ideas have pushed their boundaries.

Just click on any of the links in the post below this one. smile.gif


Bethesda Units. (How distance compares in-game to real-life).

Xpadder Walkthrough page. Xpadder is a site which allows gaming controllers to mimic the key & mouse functions. Xpadder, or similar programs such as Joy to Keys, are absolutely crucial to get the most out of older games such as Arena, Daggerfall, Morrowind, and Oblivion, for those who prefer controllers. They can also be used for newer games (Fallout 3/NV or Skyrim) to provide alternate controlling scenarios during times when a game's native D-pad arrangement needs to be shut off.




This post has been edited by Renee: Apr 16 2024, 06:27 PM


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Replies
Renee
post Jan 5 2020, 05:47 AM
Post #2


Councilor
Group Icon
Joined: 19-March 13
From: Ellicott City, Maryland



Repeatable Bounty Quests Game: TESV: Skyrim

This module shall teach how to make an agent give out quests for multiple locations. Again, these will be bounty-type quests which are repeatable. And I have found they are also bullet proof (as in, stuff only goes wrong if I make a mistake somewhere, otherwise they are solid). As time goes on, I will add more and more to this idea, hopefully.

1). Open Creation Kit, find the mod you've been working with lately, bla bla.

Firstly, let's make the NPC quest-giver.


2a). OBJECT window > Actors
Give the quest-giver an ID, Name, and Short Name. I am naming him aaaQuestSteward for the rest of this tutorial. I am also suggesting "Steward" for his or her Short Name.

The most important thing about the NPC quest-giver is to make sure he or she is Unique. Toggle this on, and click OK.

2b). Follow the tutorial found here if you are unfamiliar with setting up an NPC. with these features being most important.

Traits tab: Voice Type. Make sure the NPC's Voice Type is one which is supported by the game.

Stats tab: The Class scroll-bar can be set to Citizen in most cases, especially if he or she is going to be put into proper society (not enemy territory).


Everything else about the Quest Steward (Factions, AI Packages, etc.) can be customized to your liking.

2c). Place the NPC into a Cell somewhere. WhiterunDragonsreach01 for instance. Make sure to remember which cell you put the NPC into, this is going to become important later.


3). OBJECT window > Character > Quest
Right-click > New into the main window.

3a). Give the quest an ID and Quest Name. For this tutorial I am naming the ID aaaBountyQuests (though in my game, its ID is more specific) Priority can stay at 50. Toggle Run Once off.

3b). Click OK, save from the main toolbar, and reopen the quest.

3c). Put the Type scroll-bar to Miscellaneous.

3d). In the Object Window Filter slot, type Bounty Quests\ and make sure that backwards slash gets typed in. Now, your quest will appear in the Character > Quests > Bounty Quests section of the Creation Kit, making it even easier to find.

4). Quest Stages tab
Six stages in total will be used. I am numbering them 0, 10, 15, 20, 30, and 50.


Stage 0: Left-click on 0. Now right-click > New into the top Log Entry window, and leave it alone, so it says EMPTY. Stage 0 is a pre-quest stage, so type ;Pre-quest into the Papyrus Fragment box.

Toggle Start Up Stage on.

Stage 10: During this stage the Quest Agent tells the player all the places there are to delve. These places will get added later, of course. Do all the same with the Log Entry window, so it says EMPTY. In the Papyrus Fragment box, some notes to self (aka documentation string....) can be added with a semicolon, such as ;Quest Agent greets player, offers locations.


Stage 15: Do all the same with the Log Entry window. During this stage there's going to be a crucial moment when the player-character inquires about the first location to go to. Or not. Documentation can be added into the Papyrus Fragment box.

Stage 20: This stage gets triggered after the PC chooses the first place to go. In my game, this is Morvunskar. Do all the same with the top Log Entry window and Papyrus Fragment box.


Stage 30 This stage gets triggered after the enemy gets pwned.


Stage 50 And here is the final stage, which gets bumped to after the PC returns to the quest agent, and gets a reward for pwning whichever enemy boss. Though this is technically the final stage, do NOT toggle Shut Down Stage on.


The Creation Kit often has two ways of doing the same things, and this is true with dialog. Modders can use the Dialogue Views window (example) or Player Dialogue (example). I prefer Dialogue Views, so that's what's described below. Those who prefer Player Dialogue can still figure out what's below, as this latter method is similar to what's found in the editors of earlier games.


5a). Dialogue Views tab
Right-click > New into the tall Dialog Views window. Type whatever unique ID you'd like. For this module I am typing aaaDialogIntro.

5b). Click OK. Click OK again (closing the Quest window) and save from the main toolbar.


Now. Repeat after me: Branch > Topic > Info > Response. This is the typical way conversations between PC and NPCs are structured in the Creation Kit.

A new dialog Branch gets started whenever a new instance of dialog is begun. And each Branch can have one or more Topics (which are what we click on after an NPC has greeted). Each Topic leads to an Info, and each Info can hold one or more Responses (which are spoken by NPCs during conversations).

Again: Branch > Topic > Info > Response.


5c). Reopen the quest. Its Dialogue Views page should open by default.

5d). Left-click on the initial ID (in the tall, vertical window). Now right-click > Create Branch into the larger window. The name for this branch can be aaaBountyQuestStartBranch, though it can be named whatever is desired. Click OK. The CK will automatically put the word "Topic" at the end of the ID's name.


5e). In the larger window, there should now be a yellow box (representing the quest's opening Branch) and a smaller box within the Branch box. This smaller box has a horizontal yellow area (representing the branch's opening Topic, which has not been written yet) and a white area, (representing the Topic's Info + Response, which have not been written yet).

Note: If that yellow box doesn't show up, go to another tab (such as Quest Data) and come back to Dialog Views.

5f). Double left-click into the white area inside the yellow box. The Topic panel opens. Type an opening topic into the Topic Text slot. For now I'll type Adventures into this slot. Click OK. Click OK again.

Note: During the first OK click, the CK does a quick spellcheck, making sure the opening Topic is spelled correctly. If it is, nothing happens, so OK gets clicked again.

From here on, it's possible to continue using the Dialogue Views tab. If not, switch to the older-fashioned Player Dialogue tab. Since I am trying to learn Dialogue Views, that's what most of this shall discuss.

5g). Double left-click into the white Topic Info area.

5h). Right-click > New into the gigantic Info window. The New Response panel pops up.

5i). Type some Response Text. "Yes we have a few problem areas which need addressing. Bandits, necromancers, witches, they must be STOPPED!" Click OK.

The larger, more detailed Topic Info panel pops up. Fill in the Prompt slot "I have heard the Jarl wishes to see some areas eradicated?" This is the first dialog topic which gets seen in-game. If the Prompt slot is left empty, I'll see Adventures (the actual Topic name) instead.

5j). Right-click > New into the Conditions window. Conditions go like this...

GetIsID aaaQuestSteward == 1.00 AND
GetStageDone QuestName, 10 == 0


That second condition obviously tells the quest agent to say this opening bit of dialog if Stage 10 has not been done yet. This is a nifty new feature not found in Oblivion's Construction Set, and it works better with these repeatable quests of Skyrim.

Make sure to right-click > Copy All Conditions, so both of these conditions can get added into later portions of the quest.

5k). Type GetOwningQuest().SetStage (10) into the End: Papyrus Fragment box. A blue cross should show up in the Script Name window. Copy this command, so it can be conveniently pasted later on.

5l). Click OK. Click OK again, and save.

6). Quest Data tab
Make sure Start Game Enabled is toggled on. Later on, it's going to automatically get toggled off, but for now leave it on so the dialog written so far can be tested.

Tip: It's a good idea now to open up TES5Edit and make an SEQ file (or update it) for the mod, as detailed in this post. Next, go into the game itself, and speak to the Quest Steward. Make sure that opening Topic (and its Response) both show up. Obviously if that Topic and its resulting Response are not in the game, this needs to get addressed.


Close the game, and return to the CK. It's a good idea to keep following this process when making Skyrim quests, just to confirm everything is showing up in the game.

7a). QUEST window > Dialogue Views tab
Left-click on the initial ID in the tall left window, so the yellow box shows up again in the right window.

7b). Toggle Show All Text on (this is at the bottom of the panel) to see all the text typed so far. Sometimes the Branch's Topic won't show for some reason, but the first Response should be seen in the Info's white area.

7c). Right-click into the Branch area, which is the outer yellow part of the box. Choose Add Topic.

7d). Make a unique ID. In my game, since my first location is going to be Morvunskar, I typed aaaMorvunskarTopic for this ID.

This quest is eventually going to assume several locations are going to get added, just like the repeatable Oblivion Bounty Quests in this thread. So...

7e). Type the name of the first location into the Topic Text slot. For my game, I just typed Morvunskar. Click OK.

So let's recap. So far within this Branch (which I called aaaBoutyQuestStartBranch in my own game) are two Topics: the opening topic, and what shall become the first locational topic. In my Creation Kit, I seldom see the opening topic, but the locational topic often shows up, in the Topic (upper white) area of the yellow box.

7f). Double left-click into the lower white area.. Now right-click > New into the large, lower window.

7g). Type the Quest Steward's first locational response. "Aye, Morvunskar, retched place...." The steward then explains whatever details seem pertinent. "Was once a glorious fort filled with Nords, and now, it's nothing inside but nefarious necromancers! Have ye any interest?"

7h). Click OK. The Topic Info panel pops up.

7i). Add some text into the Prompt slot, if desired. As mentioned before, whatever goes into this slot is the topic we click in the game. If nothing gets added into the Prompt slot, we'll merely see the Topic Text typed earlier.

7j). Paste the two previous conditions into the Conditions area, but make sure to change the GetStageDone gets changed to ...

GetStage aaaBountyQuest == 10.

Right-click > Copy All Conditions these two conditions.

7k). In the Papyrus Fragment box, paste the command copied during step 5k, but change 10 to 15. Overall it'll say GetOwningQuest().SetStage (15)

7l). Click OK, and Click OK again.


So now we've got two topics located in one branch. But they are not "linked" together yet. If you were to go into the game now, the NPC steward is going to start by presenting his/her initial Topic ("Yes we have a few problem areas") but the following, locational topic may or may not show up properly.

First I am going to teach how to link them together using the Dialogue Views window, then I'm going to teach Player Dialogue. For those who wish to learn the Player Dialogue way, skip to Step 8a.

7p). Single left-click on the opening topic's upper (white or yellow) area. Now move the cursor down into the Info/Response (lower white) area. The cursor should change into a hand.

7q). Click and drag the hand from the opening Info/Topic are to the locational Info/Topic. It is now very obvious these two topics are connected. Easy as pie.

For those who prefer to use Player Dialogue, here's how to link those topics. (I'm going to pretend I didn't just link them).

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

8a). Player Dialogue tab
The opening Topic should be at the top of the middle section. Left-click on this, and double left-click on the Topic Info.

8b). At the far right side of the panel is the Link To section. Right-click > Add Link into this window. The locational topic should show up in the Select Topic panel.

8c). Select this topic (duh), and press OK.

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

By the way, don't forget to make recordings (or mock recordings) of all the dialog typed so far. Follow step 11p of this post if reminders are needed. Or just Google "Creation Kit recording voices," and hope to find something on YouTube.

Now it's time to make the NPC enemy, heh heh! viking.gif

9a). OBJECT window > Actors > Actor
Right-click > New into the Editor ID window.

9b). Give the enemy an ID, Name, and Short Name. Toggle Respawn on. Toggle Unique on. Click OK.

Note that there are two ways to make an enemy:

a ). we can make him or her Unique (toggling Unique on) and then clicking OK. Using this section will create an enemy who is pretty much the same every time.

b ). ... Or we can go into the Template Data area, which is in the lower-left corner. Change ActorBase to whichever selection is appropriate. Using this section will create an enemy which is different every time (similar to using enemies created from Leveled Lists).


Only Method A (static enemy) reliably works, though. Using Templates will not work, the script which gets added later can be attached to what is essentially a random enemy, but the script itself won'd be able to trigger the quest to Stage 30. So ignore Method B.

It will be necessary to go into every pertinent tab (Traits, Stats, Factions, etc.) and fill in all those blanks. This allows the modder to create a very specific enemy, who will be more similar every time. The enemy's level can be varied a bit, if PC Mult is toggled on, and his/her Inventory can also be varied if Leveled List items are thrown in there. Otherwise, this enemy's always going to be the same, look the same and so on.

Make sure to go into the enemy's AI Data tab. Make this guy Very Aggressive if we want him or her to attack on sight!

Another method is to use Bethesda's method, which is to make it so that Stage 30 gets set once an entire lair gets cleared. I don't know how to do this yet, but even if I did, I prefer the specific enemy OnDeath method (described below) anyway. It's just more predictable. The game won't try to consider any enemies which get stuck in walls, or fall through the cell's floor.

9c). CELL + Render windows
Place the enemy into its appropriate lair and give him or her a Reference ID.

Tip:It's a good idea to put this enemy deep into the lair, so it'll feel like he or she is the actual leader, who must be clawed and searched before he/she gets found! On the other hand, for those who are just testing this quest (to make sure all its stages get updated without traveling all that way) the enemy can temporarily get dumped into one of the Creation Kit's testing cells. A full list of these cells can be found in this link.


9d). Time to write the enemy's death script. Open the enemy's info from the Object or Render windows. Right-click > Add script into the Papyrus Scripts box.

9e). Double left-click on [New Script]. Give the script a unique name, like aaaEnemyDeathScript. Although I'm going for something more specific, so aaaMorvunskarDeathScript for my enemy orc. Click OK. A blue + with the script's name shows up in the Papyrus Scripts window.

9f). Left-click on the script, and press the Properties button. Press Add Properties. Time to give this script a Property. Change the Type scroll-bar to Quest.

9g). Change the Name to something unique. Since I am adding the first enemy into Morvunskar, I typed aaaMorvunskarDeathProperty.

9h). Click Ok, and wait for the Property to show up in the left window.

9i). Left-click on the Property, and press the Edit Value button. Now the Property should have a blue and yellow symbol next to its name.

9k).
Find the parent quest in the Pck Object scroll-bar. Click OK.

9l). Right-click on the script and select Edit Source. The script has a heading and its property has been named and created, so right now in my game looks like this...

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

Scriptname aaaMorvunskarDeathScript extends ObjectReference

Quest Property aaaMorvunskarDeathProperty Auto


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

The rest of the script will need to get typed in by hand. Altogether it's going to look like this....

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

Scriptname aaaMorvunskarDeathScript extends ObjectReference

Quest Property aaaMorvunskarDeathProperty Auto

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


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

Phew. Notice the fourth line of the script: "aaaMorvunskarDeathProperty" is what is setting the stage to 30, when the NPC enemy gets pwned. This is important to notice! ... Oblivion's Construction Set and Fallout 3's GECK both would use the actual quest name in scripts, when setting stages. Skyrim uses the Properties instead, because the Creation Kit does lots of things ass-backwards. It does them ass-backwards though, so that the game's resources run with more efficiency!

9m). Close the script editor, or select File > Save if merely checking to see if the script will save.

9n). Click OK, closing the NPC's panel(s).


10a). OBJECT window > Character > Quest
Select the Dialogue Views or Player Dialogue tab. Add a new Topic.

I won't go into as much detail now, but this topic continues the dialog choices which started during Stage 10. So now, there's an option to say "Yes, we shalt plunder X lair..." Follow steps 5f through 5i to create dialog, add voice, and so on.

10b). Conditions are as follows...

GetIsID aaaQuestSteward == 1.00 AND
GetStage aaaQuestName == 15


10c). Type GetOwningQuest().SetStage (20) into the End: Papyrus Fragment box. Click OK.

10d). Link the first locational topic to the follow-up topic just made (in which we agree to plunder that lair).

Tip: Eventually as more and more topics get added, the Dialogue Views window gets messier and messier. Toggle Show All Topics off. Now, it's easier to move these topics around to your liking. Single left-click on one of the Topics (the upper-yellow area, or sometimes it'll appear white) and literally drag the topic to wherever is desired. Its location in the window will not matter.


10e). Click OK, closing the Quest window. Save.

Again, it's a good idea to go into the game, speak to the steward NPC, and just make sure all those Topics and Responses are showing up.

So, all the dialog for starting the quest has been written, the NPC enemy has been created, now it's time to make the reward phase.


11a). OBJECT window > Character > Quest
We're going to use Player Dialogue or Dialogue Views to make a final branch (NOT topic, not yet anyway), this one dealing with getting paid. We return to the steward, he or she is able to confirm somehow that the lair's leader has been pwned, and now it's time for that reward.

Right-click > New into the leftmost (vertical) window, and for this lesson I'm naming this ID aaaBountyQuestsReward. Follow steps 5E through 5I to make the Reward topic, dialog, and so on.

11b). Conditions go like....

GetIsID aaaQuestSteward == 1.00 AND
GetStage aaaQuestName == 30


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

11d). Click OK. And Click OK again. Save.

Time to put some messages into this quest, which will show onscreen as certain stages get fulfilled. This is done with the Objectives page, and there'll be a total of two objectives for this quest.


12a). QUEST window > Quest Objectives tab
Right-click > New into the topmost window.

12b). Type 20 into the Index slot, and type "Kill X leader of X location."

12c). Perform steps 12a and 12b again, this time adding 30 into the Index slot. Type "Return to Quest Steward" in the Display Text slot.


13a). Quest Stages tab
Left-click on Stage 20. In the Papyrus Fragment box, type SetObjectiveDisplayed (20)

13b). Click on Stage 30. In the Papyrus Fragment box, type SetObjectiveCompleted (20). Also type SetObjectiveDisplayed (30) in the same box.

13c). Click on Stage 50. In the Papyrus Fragment box, type SetObjectiveCompleted (30).

Click OK. Save.


14a). OBJECT Window > Items > Book
Edit a note which has the certain "look" that is desired (such as one of Bethesda's own bounty quest notes), and give this item fresh ID. Click OK, and click Yes, saving the Note as a New Form. Highlight this ID, and select Copy.

14b). Reopen the edited note, and type up a writ stating where to go, how much the party will get paid, and so on. Click OK.

Making this note a Quest Object is optional. Unlike the Construction Set, for which I made notes into Quest Items (necessary, since the actual Quest Journal was not used) the Creation Kit does not need to have this stipulation. The Objectives typed for Stages 20 and 30 will show up in the PC's Quest Journal, in its Miscellaneous section.



16a). QUEST window > Quest Stages tab
Click on Stage 20.

16b). Click on the Properties button. After the panel pops up, click Add Property.

16c). Look for Book in the Type scroll-bar.

16d). Add the book's ID into the Name slot. If this ID was copied earlier, a simple paste will suffice. Click OK.

16e). Left-click on the Property for the book. In the Pick Object scroll-bar, find the book's ID (a lot of times, this ID will already be selected). Click OK.

16f). In the Papyrus Fragment box, type Game.GetPlayer().AddItem (aaaBookName, 1)

Click OK, closing the Quest window. And save, and reopen the quest.

Tip: During step 16f other items can get added. For instance, in my game, I'll use the Properties button to make properties for potions. Select Potion in the Type scroll-bar, and add the potion's actual name from the Object window, such as HealingPotion01 or whatever. This way, the NPC quest giver gives us that note, but also gives us a bunch of helpful potions (and whatever other items) as well.

Troubleshooting: Sometimes the Papyrus Fragment box will scream error messages for all sorts of reasons, as Properties are trying to get made. A common error has to do with "Reference already created" or something such, like this...

C:\Program Files\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\ Startingquest.psc (19,13): script property NewProperty already defined

Arrgh!!! If this happens, click on the Scripts tab of the Quest window, select the ID (it'll be the only item which is selectable on this page) right-click then select Edit Source. This will open up a page full of script fragments. Scroll down until you find any script which has to do with the error(s) seen earlier, and erase these. For instance, if too many properties have been made for a particular potion, erase any script fragments which have been made for that potion's name, and then select File > Save to make sure the Script editor saves everything successfully.

More info can be found here..
http://tesalliance.org/forums/index.php?/t...ompile-scripts/



17a). Quest Stages tab
Click on Stage 50 again. Click the Properties button, and click on Add Property.

17b). Look for MiscObject in the Type scroll-down. Type Gold001 into Name. Click OK, and click OK.

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

stop()

Stop() is what causes the quest to stop running, but do NOT toggle Shut Down Stage on. This quest is now good as a one-time affair. Here's how to make sure the entire thing respawns.


18a). QUEST window > Quest Data tab
Toggle Start Game Enabled off, then toggle Allow Repeated Stages on.

18b). Change the Event scroll-bar to Change Location Event. Click OK.


19a). OBJECT window > Character > SM Event Node
Right-click > Edit on Change Location Event.

19b). You might see several nodes made for other quests, or you might just see a large window which is mostly empty. Right-click on the very top choice, which is "Stacked Event Node: Change Location Event".

19d). Select New Quest Node. A new choice called "Stacked Quest Node" should be at the very bottom of this window. Scroll down (if needed) and find it.

19e). Right-click on Stacked Quest Node and choose Add Quest. Find the quest being worked on, and lcick OK.

This page is similar to the Quest Aliases page, which is too big to fit entirely on most computer screens. So in most cases, it's time to work sideways. What I'm about to describe is from my Windows 8.1 computer, so maybe other operating systems do this differently.

19f). Minimize the Creation kit. Right-click onto the desktop and choose Screen Resolution.

19g). Change the Orientation scroll-bar to Portrait. Click Apply, and click Keep Changes. Everything is pointed to the left now! Also, note that everything I'm describing is for a Windows 8.1 system, so i have no idea how Window 7 or 10 does this.

19h). Return the CK to its full size. Highlight the Node which just got created (not its quest, which is to its right).

19i). Type aaaQuestNameQuestNode into the ID slot, changing "Quest Name" to whatever the name of the quest is.

19j). Toggle "Do all before repeating" and "Shares Event" on.

Minimize the CK (if needed), and change Screen Orientation back to Landscape.

19k). Right-click > New into the Node Conditions window and make these conditions.

GetInCurrentLoc Location: X == 1.00 AND
GetDead None == 0.00


For the first condition, change the Run on scroll-bar from Subject to Player. Click on the INVALID button, and find the location where the quest agent works. Click OK.

For the GetDead condition, change the Run on scroll-bar from Subject to Reference. Press the Select button, and find the enemy's cell. If the enemy is still in the Reference window, it's easy to simply click Select Reference In Render Window and double left-click on the referenced enemy. Click OK.

19l). Click OK at the top of the SM Event Node panel.


Finally, there needs to be some "no" dialog, so the character will have a choice to pick a location to plunder, or not. Saying "No" is actually important, because it can reset the entire quest back to its pre-stage 10 again.

20). Go into Quest Stages and add Stage 29. Add some ;notes to self in the Papyrus Fragment box, and type Stop() into this box. Click OK.


21a). QUEST window > Dialogue Views or Player Dialogue tab
Make sure the enemy is still in the Render Window. Open the locational topic (this is the one which goes from Stage 10 to Stage 15). In my game, this is Morvunskar.

21b). Add a GetDead condition to this topic. Run On: Reference, and double-click on the referenced enemy in the Render window. Change the value to 0.00. Altogether this condition will read GetDead NONE == 0.00. There should be three conditions for this topic now: GetIsId, GetStage, and GetDead. All three are needed just so the agent's information stays efficient. He or she won't blab about a location if its top leader has already been taken care of.

21c). Click OK.



22a). Reopen the Quest window (I swear this will be the last time!) Go into Dialogue Views or Player Dialogue. Right-click > Add Topic into the branch.

22b). Make a topic dealing with the PC saying "no!" Add dialog, bla bla bla.

22c). For this topic to work, all that's needed is the same GetIsID condition.

GetOwningQuest().SetStage (29) goes into the Papyrus: End box.

22d). Now it's possible to link the No topic from the quest's initial dialog ("So, you have come to assist us...") or at any point between Stages 10 and 20. This will ultimately cancel the quest's progress, sending it back to Stage 0. The only catch is, you'll need to exit and re-enter the same cell where the quest agent works. This way, the quest's GetInCurrentLoc node triggers.

23). Save everything, and test in the game. Make sure the update that SEQ file.

Note that this quest will start only if that NPC enemy is alive. Once the enemy has been killed, the quest will remain dormant until the enemy respawns (along with the entire cell he or she is in).

Note 2: After a quest is done, the character rewarded, it can sometimes take awhile for the quest to reset back to the beginning. Usually after several hours / going into different cells, the quest will then reset back to the beginning.

This post has been edited by Renee: Mar 8 2024, 06:12 PM


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Renee
post Jan 29 2020, 01:46 AM
Post #3


Councilor
Group Icon
Joined: 19-March 13
From: Ellicott City, Maryland



Repeatable Bounty Quests, How to add new locations. Game: TESV: Skyrim

Here's how to add extra locations for plundering, and it assumes the previous lesson has already been completed and tested. Ultimately a total of FIVE locations can get added per quest, and that's as far as I prefer to go. Perhaps more than five can be added in the long run, but I prefer five for my own sanity.

1). Open up the mod and quest which have been built. The steward or agent who dispenses quests has already been made, and I am assuming the same person is going to be used.


2a). OBJECT window > Character > Quests > Bounty Quests\
Click on the Quest Stages tab. There should already be six stages here: stages 0, 10, 15, 20, 30, and 50. Add four more stages: 16, 21, 31, and 51.

Stage 16: Stage 16 is similar to Stage 15. Since a second location is getting added, stage 16 gets selected if the Player chooses to inquire about this second location. In my game, this is going to be Uttering Hills Cave. Right-click > New into the top Log Entry window. It'll say EMPTY in this window, and this is how we're going to leave it. In the Papyrus Fragment box, type ; X Location inquired, with X equaling whichever second lair you'd like to plunder.

Stage 21: This stage gets chosen if the player chooses to go to a second location. Again, right-click New, and type ; X Location chosen.

Stage 31: This gets triggered if the leader of the second location gets pwned. Right-click > New again, and type ; Leader of X location has been killed.

Stage 51: This is the reward stage. It is possible to simply use Stage 50 as an all-purpose reward to simplify things, but I like having different final stages, because each job should pay a little differently in my opinion. Final dialog can also vary. The steward might say a different set of congratulations after we take down Uttering Hills Cave, compared to the less remote Morvunskar, right?


For each new location which gets added, simply add four extra stages. My next location will include Stage 17, 22, 32, and 52, for instance.

2b). Click OK and save. Reopen the quest.


3a). Dialogue Views or Player Dialogue tab
There should be two branches of dialog already. The first branch deals with starting the quest and choosing a location (or not). The second branch deals with our reward phase. Click on the first branch.

I am going to describe what to do using the Dialogue Views tab. I am starting to get the hang of using this tab's windows, after all.

3b)
. Right-click into the large yellow box and select Add Topic.

3c). Change ID to something locational. So for instance, I am changing the ID of this topic to aaaUtteringHillsTopic. Topic Text can simply be the name of the location, so Uttering Hills Cave goes here in my game. Click OK.

3d). Find the first locational topic. This topic already corresponds to Stage 10 going into Stage 15. Open this topic up, and Copy All three of its conditions (GetIsID, GetStage, and GetDead).

3e). Now, back to the new topic just made. Double left-click into the blank white space (under the new topic's name). The Topic panel pops up again. Right-click > New into the giant lower window, and type the steward's response text. "Uttering Hills Cave, located somewhat on the edges of the Jarl's region..." and so on.

When the larger Topic Info panel pops up, Paste the three conditions into the Conditions window. Get rid of the GetDead condition, so only GetIsId and GetStage remain.

Don't forget to Record some voice, or simply record silence if no voice or microphone is available. Toggle 'Force Dialogue' (actual name?) on, and keep 'Has LIP File toggled' on.

3f). In the Papyrus Fragment: End box, type GetOwningQuest().SetStage (16). Copy this line of script so it can be pasted into other Papyrus Fragment boxes. Click OK. Click OK again, and save.

3g). Reopen the quest, and open its initial branch.

3h). Left-click on the very first Topic made for this entire quest. This should basically be its initial dialog.

3i). Move the cursor downwards into this topic's white area, so that it changes from a pointer to a hand. Now click and drag this hand from this initial topic to the topic which was just made. Voila, now the initial topic is linked to both locational topics.

Click OK, and save.


4a). Reopen the quest. Right-click > Add Topic into the initial branch's yellow area. This topic gets chosen if the player chooses to plunder the second location. So, ID can be aaaLocationYes, with "Location" being whichever location has been chosen for plundering.

4b). Click OK twice. By now, the Dialogue Views page might be quite a mess. Go ahead and rearrange all these topics to your liking, toggling Show All Text off if desired.

4c). Double left-click into the new topic's white area, then right-click > New into its main (lower) window. Type some dialog: "Oh blessed, we have been waiting for somebody to rid the scum of Uttering Hills Cave for months now..." Additional dialog can be typed: how to get to this location, how much it'll pay, and so on.

4d). Paste the two conditions (GetIsID and GetStage) into the Conditions window. The GetStage should be changed from 10 to 16.

4e). Paste GetOwningQuest().SetStage (10) from the quest's initial topic, changing 10 to 21.So it's going to say GetOwningQuest().SetStage (21).

4f). Click OK. Now link the previous inquiry topic to this new locational "Yes" topic. Click OK. Save.


5a). OBJECT window > Actors > Actor
Time to make the enemy leader. viking.gif Right-click > New into the window. Give the enemy an ID, Name and Short Name. I always use Boss for Short Name, which makes these enemies easier to find in the Object window.

5b). Toggle Unique and Respawns on. Click OK.

5c). Reopen the enemy, going through all the different tabs. Make sure, for instance, that this enemy winds up in the same faction as all the others he or she will be living with. Make sure the enemy's AI Data is Very Aggressive and either Brave or Foolhardy, otherwise they'll just stand there looking at us as we rush into their lair. Click OK.


6a). CELL + RENDER windows
Put the enemy into the proper cell, and give this enemy a Reference ID.

6b). Open up the enemy's Actor panel. Right-click > Add Script into the Papyrus Scripts window.

6c). Double left-click on [New Script]. Type something pertinent into the Name slot, such as aaaUtteringHillsChieftainScript. Click OK.

6d). Click the Properties button. Click Add Property. Change the Type scroll-bar to Quest.

6e). Name can be something unique, dealing with the enemy's ID name + property. aaaUtteringHillsChieftainProperty, for instance. Click OK, and wait for the Property to show up in the left window.

6f). Highlight (left-click) on the property. Press the Edit Value button. Find the quest's name in the Pick Object scroll-bar. Click OK.

6g). Right-click > Edit Source on the script. The first two lines of script have automatically been generated. The rest will need to be typed in mostly by hand. It is possible to simply Ctrl + C the property's name (located in the second line of text) and Ctrl + V (paste) it into the fourth line of text.

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

Scriptname aaaUtteringHillsChieftainScript extends ObjectReference

Quest Property aaaUtteringHillsChieftainProperty Auto

Event OnDeath (Actor Killer)
aaaUtteringHillsChieftainProperty.SetStage (31)
EndEvent


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

6h). Click OK. If the script saves successfully, great. Go ahead and save.


7a). OBJECT window > Character > Quests
Open the Dialogue Views or Player Dialogue tab, and select the Reward branch.

7b). I am not going into full detail here, but follow steps above in the previous Skyrim lesson (if needed) to make a new topic, and add Reward dialog. "You've done us a great service, here is your reward...yadda yadda."

7c). Paste the same GetOwningQuest line of script (copied earlier during step 3f) and change its stage bump, so overall it says GetOwningQuest().SetStage (51). Click OK.


8). Quest Objectives tab.
Make two objectives: one for Stage 21, and one for Stage 31. Stage 21's text will say something like "Pwn the leader of X location." Stage 31's text will say something like "Return to X for your reward."


9a). Quest Stages tab
Open Stage 21, and type SetObjectiveDisplayed (21) into its Papyrus Fragment box. Copy this line of script.

9b): Open Stage 31. Paste the line of text just copied, and change 21 to 31, so now it says SetObjectiveDisplayed (31).

9c). Paste the same line of text, changing "Displayed" to Completed, so overall it'll say SetObjectiveCompleted (21). Copy this line of script.

9d). Open Stage 51. Paste the line of text from step 9c, changing 21 to 31, so overall it'll say SetObjectiveCompleted (31). Voila. All the quest's messages are in the game. Click OK.


10). OBJECT window > Items > Book
Edit the previously-made note or scroll, changing its ID (duh) and Book Text. Copy the ID of this note or scroll so it can be easily pasted in a few moments.


11a). QUEST window > Quest Stages tab
Select Stage 21. Click on the Properties button. After the panel pops up, click Add Property.

11b). Look for Book in the Type scroll-bar.

11c). Add the book's ID into the Name slot. If this ID was copied earlier, a simple paste will suffice. Click OK.

11d). Left-click on the Property for the book. In the Pick Object scroll-bar, find the book's ID (a lot of times, this ID will already be selected). Click OK.

11e). In the Papyrus Fragment box, type Game.GetPlayer().AddItem (aaaBookName, 1)

11f). Optional: add any other items which seem pertinent into Stage 21's Papyrus Fragment box. I like to add potions, mostly. Adding items via this Properties method can get dicey. One little mistake, and the game will scream error messages. Follow the Tip and Troubleshooting portions of the previous Skyrim Bounty Quests Lesson / Step 16f, if things go wrong.

After screwing up a few items in the past, then having to erase script fragments several times, it really makes one realize how much easier the Construction Set and Fallout 3's GECK are. Player.AddItem X X and it's done! I can literally add items via script in my sleep. sleep.gif mad.gif Grrr....

Click OK


Quest Stages tab
Time for our reward money. A script property has already been made for this stage.

12a). Click on Stage 50. Copy the line of text from the Papyrus Fragment box (Game.GetPlayer).AddItem Gold001, X).

12b). Click on Stage 51. Paste that line of text into its box, changing the amount of reward money, if desired.

Also type stop() into Stage 51's box. Click OK.

Stop() is what causes the quest to stop running, but do NOT toggle Shut Down Stage on.

For the next phase, make sure the new enemy is onscreen in the Render window.


13a). OBJECT window > Character > SM Event Node
Right-click > Edit on Change Location Event.

13b). Sometimes this page is a huge expanse of white, other times it's got a bunch of nodes in its main window. If nothing is showing, double left-click onto Stacked Event Node. At the very bottom (or near it) should be the quest node which already deals with the first location.

13c). Left-click onto the Stacked Quest Node which deals with the quest.

13d). Right-click onto the GetDead condition, and select Copy Condition.

13e). Paste this condition right back into the Conditions window. And open it.

13f). Press the Select button. Click on Select Reference from Reference Window. And double left-click on this fearsome predator. Click OK.

13g). Toggle the OR selection on, and click OK. Here is what the final result in the Node Conditions area should look like.

R GetDead NONE == 0.00 OR
R GetDead NONE == 0.00 AND
PL GetInCurrentLoc LOCATION == 1.00


Note: If those are out of order (AND, OR, for instance) it is possible to reorder them. Hopefully this won't need to be done, because it'll involve making you work in Portrait mode instead of Landscape. rolleyes.gif


Basically, the quest will only start from the beginning, with the agent's opening greeting, if the Player is in location, and if either enemy is alive.

-- If both enemies are dead, the quest will not start, and the agent will stand there saying "Yaah?" "Hmm?" It is possible to give the agent some dialog for this scenario, but first make sure the quest dialog actually works as-is.


13h). Click OK. Save


14a). QUEST window > Dialogue Views or Player Dialogue tab
Open the second locational topic (this is the one which goes from Stage 10 to Stage 16).

14b). Add a GetDead condition to this topic. Run On: Reference, and double-click on the referenced enemy in the Render window. Change the value to 0.00. Altogether this condition will read GetDead NONE == 0.00. Click OK.


15). Make sure to update the mod's SEQ file.

Have a glass of wine if you're of legal age. Or partake in some other form of celebration of your choosing.

This post has been edited by Renee: Mar 12 2020, 02:14 AM


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Posts in this topic
Renee   Renee's Modding Thread   Feb 25 2018, 01:30 PM
Lady Saga   [color=green]Tip: For Oblivion, Always use [url=ht...   Feb 25 2018, 01:35 PM
Renee   The Fetch Quest, Game: TES IV: Oblivion. So this...   Feb 25 2018, 01:51 PM
ghastley   The problem with the YouTube tutorials is that the...   Feb 25 2018, 04:25 PM
Renee   Awesome, ghastley. The problem with the YouTube...   Feb 25 2018, 05:18 PM
SubRosa   Excellent fetch tutorial Renee! I will probabl...   Feb 25 2018, 05:41 PM
Renee   Thank you. I tend to write up everything I do step...   Feb 25 2018, 11:40 PM
Renee   [color=green]The Kill Quest, Map Markers, and X ma...   Mar 2 2018, 11:16 PM
Turija   Great thread. I will have to think about what I c...   Mar 7 2018, 11:58 PM
Renee   Sweet Turija! See, I just learned a few new th...   Mar 8 2018, 02:53 AM
Renee   [b]How to repair Hair, Game: TES IV: Oblivion Thi...   Mar 13 2018, 02:27 AM
Renee   [color=#FF6600]How to make an NPC Vendor & Mec...   Mar 18 2018, 06:29 PM
Renee   [color=white]How to fix "Missing flowchartx32...   Mar 25 2018, 05:20 PM
ghastley   FWIW, you CAN paste into the command prompt window...   Mar 26 2018, 03:06 PM
Renee   Okay thanks, ghastley. I'll see if this works ...   Mar 29 2018, 05:18 PM
Renee   How to make a Fetch Quest (with multiple items). G...   Mar 31 2018, 11:36 PM
Renee   Each exterior cell is 4096 units by 4096 units or ...   Apr 3 2018, 02:56 PM
ghastley   At some time in the past I did a tutorial on how t...   Apr 10 2018, 07:33 PM
Renee   That'd be great. :)   Apr 10 2018, 08:15 PM
Renee   [color=#009900]Making a weather-changing item. Gam...   Apr 24 2018, 12:19 AM
Renee   [color=#996633]Faction-changing Armor and Clothing...   May 13 2018, 07:53 PM
Renee   Making an NPC Follower Game: Fallout 3 Note: this...   May 29 2018, 01:25 AM
Renee   Timer Scripts. Game: TES IV: Oblivion or Fallout 3...   Jun 10 2018, 11:53 PM
Renee   [b]Making a house for sale or rent. Game: TES IV: ...   Jun 24 2018, 03:37 AM
Renee   Cripes, it's been since JUNE since I've ad...   Aug 12 2018, 04:13 PM
Renee   [color=#CC9933]Gun Tutorial Game: Fallout 3 This ...   Aug 26 2018, 08:52 PM
SubRosa   Ignores Normal Weapon Resistance is a holdover fro...   Aug 26 2018, 08:59 PM
Renee   Thanks. I changed the info in my previous post. ...   Sep 2 2018, 12:55 PM
Renee   Another tip for making these bounty quests: I like...   Sep 29 2018, 06:50 PM
Renee   This post goes with the one above, and is going to...   Oct 12 2018, 02:41 AM
Renee   [color=green]Lizard Men! -- Game: TES IV: Obli...   Oct 25 2018, 10:59 PM
Lopov   Nice! :goodjob: I'll be using this mod whe...   Oct 25 2018, 11:25 PM
Renee   So it's possible to encounter them in Lake Ru...   Oct 26 2018, 12:04 AM
Renee   Making an NPC Vendor / Repairist. Game: TES IV: Ob...   Oct 28 2018, 02:08 AM
Renee   [b]SEQ Files, Game: TES V: Skyrim Requires the TE...   Oct 29 2018, 12:17 AM
Renee   [color=#996633]Making FOMODs through Fallout Mod M...   Nov 11 2018, 04:32 PM
Renee   ` Making an NPC follower Game: TES V: Skyrim ...   Dec 1 2018, 06:40 PM
Renee   [b]Making an NPC Vendor Game: TES V: Skyrim [b]1...   Dec 5 2018, 02:59 AM
Renee   Making a Book bump a quest stage Game: TESV: Skyri...   Dec 15 2018, 02:39 AM
Renee   [b]Skyrim Quest Tutorial (WORK IN PROGRESS, do no...   Dec 17 2018, 12:02 AM
Renee   Repeatable Bounty Quests II (innkeeper involvemen...   Dec 29 2018, 04:04 PM
mALX   This is an Awesome thread, Renee!!!   Jan 14 2019, 07:56 PM
Renee   Awesome, thanks so much. :) --------------------...   Jan 19 2019, 08:25 PM
Renee   Setting up a gamepad controller Game: Elder Scroll...   May 15 2019, 12:53 AM
mALX   Awesome! You got it working! By the wa...   May 15 2019, 01:55 AM
Renee   Awesome, thanks. I have noticed there's TONS o...   May 15 2019, 01:05 PM
Renee   Game: Fallout 3, How to use Zone Triggers to set q...   Jun 19 2019, 02:28 AM
Renee   How to transfer saves from Xbox to PC, Games: Obli...   Jun 26 2019, 12:10 PM
Renee   Making a generic NPC Enemy, [color=white] Game: TE...   Oct 29 2019, 10:53 PM
mALX   These are awesome tips! Thanks Renee!   Jan 5 2020, 06:26 PM
SubRosa   Wow. That is amazing.   Jan 5 2020, 07:54 PM
Renee   aw, well thanks. I appreciate your encouragement,...   Jan 5 2020, 10:48 PM
Renee   SetActorOwner https://www.creationkit.com/index.p...   Apr 1 2020, 11:43 PM
SubRosa   You can use this at the console. It is a great way...   Apr 2 2020, 12:28 AM
Renee   You can use this at the console. It is a great wa...   Apr 2 2020, 12:33 AM
Renee   USE THIS idea for Fallout3_Jail.esp. We're goi...   May 31 2020, 05:11 PM
Renee   Adding a Jail and enhancing Fallout's Crime Sy...   Jun 4 2020, 08:25 PM
Renee   Making a Patrol package. [color=#993300]Game: Fall...   Jun 20 2020, 04:55 PM
Renee   Horse Rentals. Game: [color=#006600]TES IV: Oblivi...   Jul 26 2020, 06:07 PM
Renee   Getting an Xbox controller to work on PC. Game: [c...   Jun 11 2021, 12:47 AM
Renee   [color=#996633]Trigger Zones, Game: Fallout 3 Fal...   Sep 27 2020, 12:47 AM
Renee   https://www.youtube.com/watch?v=wj6qGCT4isg...nnel...   Sep 28 2020, 02:55 PM
Renee   https://web.archive.org/web/20130429160307/...Obje...   Oct 29 2020, 11:17 PM
Renee   I have found a really good Daggerfall tutorial whi...   Nov 28 2020, 03:00 AM
Renee   More Dynamic NPCs! Game: [color=#663366]TES II...   Jun 24 2021, 02:36 AM
Renee   Getting the Take All button to work, Game: [color=...   Aug 20 2021, 06:40 PM
Renee   Setting fallback cell (instead of Tiber Septim) h...   Sep 1 2021, 01:12 PM
Pseron Wyrd   https://web.archive.org/web/20200218144220/...a-s...   Sep 1 2021, 04:32 PM
Renee   I agree, Wyrd. Now that I know why random stuff sh...   Sep 2 2021, 01:58 AM
Renee   Random Console Commands, Game: TES V: Skyrim This...   Jan 23 2022, 03:36 PM
Renee   How to make a ForceGreet. Game: [color=white]TES V...   Jan 23 2022, 07:24 PM
Lena Wolf   I thought this thread was for Oblivion? ;) Never m...   Jan 25 2022, 03:57 PM
Acadian   I thought this thread was for Oblivion? ;) ... P...   Jan 25 2022, 05:30 PM
Lena Wolf   Well, there are of course a lot of similarities be...   Jan 25 2022, 05:41 PM
Renee   Lena has a point. Maybe this thread can be moved t...   Jan 25 2022, 06:12 PM
Acadian   Okay, the mod projects forum is simply a collectio...   Jan 25 2022, 07:22 PM
Renee   Thanks, paladin!   Jan 25 2022, 08:44 PM
Renee   How to use the PC's face for an NPC. [color=wh...   Mar 13 2022, 10:11 PM
Renee   How to add a bounty to the Player via script. Gam...   Apr 1 2022, 01:21 AM
Renee   How to add the Player or NPC into a Faction via sc...   Apr 3 2022, 02:39 AM
Renee   How to fix "failed to load snowflake: Meshes...   Nov 27 2022, 04:20 PM
Renee   Installing Morrowind from Scratch Recently I had ...   Dec 3 2022, 02:53 AM
macole   Those Intervention scrolls sure come in handy. I ...   Dec 3 2022, 07:59 AM
Renee   Oops, I screwed up. :whistle: Was cleaning the nex...   Dec 3 2022, 02:26 PM
Renee   Get a Job! Game: [color=white]TES V: Skyrim I...   Dec 11 2022, 11:41 PM
Renee   Traveling with an NPC. Game: TES V: Skyrim Here...   Jan 21 2023, 07:32 PM
Renee   Traveling with an NPC, Additional Locations. Game:...   Feb 10 2023, 03:07 PM
Renee   Traveling with an NPC, Additional NPCs. Game: [col...   Feb 13 2023, 01:58 AM
Renee   Dialog Speech Checks Game: [color=#FFFFFF]TES V: S...   Mar 3 2023, 03:58 AM
Renee   Map Marker Tutorial, Game: Fallout 3 Firstly, wit...   Mar 19 2023, 05:52 PM
Renee   Repeatable Enemy Raids, Game: Fallout 3 I love ge...   Mar 26 2023, 07:31 PM
Renee   Repeatable Enemy Raids, Additional Locations. Game...   Apr 2 2023, 06:36 PM
Renee   Gray Face bug. Game: [color=#FFFFFF]TES V: Skyrim ...   Apr 23 2023, 01:50 AM
Renee   Script Fragments. Game: [color=white]TES V: Skyrim...   May 19 2023, 06:54 PM
Renee   Fixing the Sideways Glasses Bug, Game: [color=#663...   May 26 2023, 10:29 PM
Renee   Nexus Mod Manager - installing and uninstalling Y...   Jun 8 2023, 08:02 PM
Renee   Breton Magic Resistance Tweak, Game: [color=#66333...   Jun 21 2023, 12:03 PM
Renee   Manipulating Leveled Lists Here is how to change ...   Jun 24 2023, 07:29 PM
2 Pages V  1 2 >


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: 19th April 2024 - 06:08 AM