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
From: Ellicott City, Maryland




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


This post shall deal with Respawning Bounty Quests, but it's different from the process I detailed earlier in this thread. Again, 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.

The main difference between this process and the previous bounty quest is: the request to take care of some baddie shows up occasionally when speaking to particular NPCs. We go to speak to this person (to rent a room, usually) and sometimes he or she will want the PC to do something about the boss of some local lair. 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. Like the previous method, this one can potentially happen every 3 days. Again, this adds to the roleplaying side of things just like the previous method, but the involved process is more random.

Since the NPC's request shows up randomly, the player never knows 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 is the most difficult to work with, 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 more complicated to work with than some others. The idea: Malene already knows my character (Renee Gade III), since Renee has helped Malene in the past during the Gravefinder's Repose quest. So the idea was: those pesky necromancers have returned, and Malene needs RG3's help again! emot-ninja1.gif But Malene will ONLY ask for this help AFTER The Gravefinder's Repose is done.

Since Malene has a pre-written Bethesda quest associated with her, she required some extra steps be taken to make my idea work. Other NPC innkeepers (Foroch, owner of Gottshaw Inn, for instance) did not require as much help to get similar quests running. In this post I will be trying to provide details for the different methods followed for several different innkeepers.


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.


OBJECT window > Actors > NPC
First thing to do is perform some research on the innkeeper / quest-giver. Double left-click on one of the names listed (Corgine, 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.

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? If there are any quests, will they be ignored by the character? Or will they eventually get tackled?

Some innkeepers are involved in quests, and some are not. Either way, look at all the GREETINGs the NPC has. If our character is in the middle of some quest (or eventually will be) an innkeeper deals with, you need to then look at these individually, and find their Priorities. In some cases, there might not be 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, I am going to tackle Candice Corgine first. 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, aka the Clavicus Vile quest, which has a Priority of 60. She will give her innocuous Clavicus Vile greeting when spoken to ("Welcome to Pells Gate, friend."), but only if this quest has not been started yet, or we're in the middle of it. 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.

Rule out which quests you've done, and ones which you're in the middle of. If your character is not a vampire for instance, you don't have to worry about Vampire greetings. If your character has done the Main Quest, look at the Priority for MQEndgame's GREETINGs (Priority is 12). Once all these are ruled out, this leaves DAClavicusVile. If the character meets Candice before DAClavicusVile is done (Priority is 60), there are three choices, assuming you want your greetings to show up in-game.

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 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. These greetings will still be competing with Generic though, so moving Priority higher than 5 won't automatically make any added greeting trump those of the Generic quest 100% of the time.

>>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.


So, as can be seen from the list above, Foroch is the least demanding, Candice has some issues which need to be addressed, and Malene and Diram are the ones who will require the most tweaking, since both of them are the most-directly involved.

QUEST window, Quest Data tab
2a). Start a new quest. For this lesson I am calling its ID aaaBountyQuest, though in-game I've got names which are more elaborate, such as aaaMossRockCavernQuest. Whatever you name it, this quest won't require a Name in its Name slot, but you can add one for reference. And add the appropriate Priority. GetIsPlayableRace == 1 goes into the Quest Conditions window, as usual.

2b). Start a script which looks like this...

----------------------
scriptname aaaBountyQuestScript

short DoOnce

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

Save using the Save icon, close script. Click OK (closing the quest window) and reopen the quest. Find the script in the scroll-bar, and click OK again.

Substitute the name 'aaaBountyQuestScript' with something more specific, if desired. In my game I've got several of these bounty quests going, each with a name pertaining to its location.


If you're working with Malene, keep reading. If working with any of the others, skip to step 5a.

2c). For Malene, 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 some official Beth quests have been done. ..... So, once Gravefinder's Repose is done, that's when Malene will begin to use Topics and dialog found in SQFN.

2d) Topics Tab
Look at Malene's GREETING, and she only has one GREETING in this window, 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 Repose) 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.

2e). So Step #2e might seem rather controversial. I'm going to give this GREETING to somebody else, preferably somebody who will never be spoken to in-game, and/or is preferably not involved with any other quests. 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. Although Malintus is involved with some Thieves Guild stuff, my current character is not into TG, so this works for her.

3). Click OK, closing the quest window, and save.

4).

5a). Open up the bounty quest started earlier, starting with the Topics tab. Now to add your own GREETING. I made one which says "You're back, and I've got a problem."

5b). In the Conditions window, add a GetIsId for whomever this pertains to (Malene, Diram, or whomever).

6). Click OK, exiting 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 into some lair full of bandits, you can edit an actual bandit, and so on. Edit generic enemies though, not named ones. And do not edit anybody associated with Shivering Isles. SI NPCs will have SE at the front of their ID names.

7b). For the purposes of this lesson, I'm going to call the edited enemy boss aaaNPCBoss as a Base ID. In my actual game, they've got names which are more specific, such as aaaMossRockWitch or aaaHomesteadWarlord, etc.

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). Necromancers for instance are usually going to be part of two: the NecromancerDungeon and NecromancerFaction factions. If you edited an actual necromancer, these factions will probably, already be chosen. Same goes for bandits, marauders, conjurers, and so on.

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

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

9c). The Inventory tab can be important too. Usually for generics, this tab will be packed with armor, clothing, weapons, and other items drawn from Leveled Lists. It's a good idea to keep these lists intact. Doing so will ensure the boss will be wearing / carrying different gear every time he/she is encountered.


10). CELL / RENDER windows
Go into the cell where this enemy shall be placed. So for Malene / Moss Rock, the NPC enemy is placed 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, or in a boss room). This will ensure that most, if not all, of the location's enemies will have been dealt with, by the time the hand-placed boss gets encountered.

11a).
Give the NPC a Reference ID. I am using aaaNPCBossRef for this lesson, but the actual names in-game can vary according to location. For instance, the necromancer of Moss Rock is called aaaMossRockBossRef. Whichever Ref ID gets chosen, copy this name so it can be conveniently pasted into scripts later.

11b). Click OK, closing all the NPC's panels, and save all work.


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

scriptname aaaNPCBossScript

short Dead


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

Substitute aaaNPCBossScript with whatever name is more desirable. Again, I tend to choose names which match the location of where the boss was placed.

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

11d). 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 aaaNPCBossScript

short Dead

Begin OnDeath

If (aaaNPCBossRef.Dead == 1)
Set aaaNPCBossRef.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, and of course, substitute the script's name and/or NPC's reference ID name with whatever was used
.

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

Note: There are no quest stages being used for this process, which means no pop-up messages will pause the game. So, that on-screen message in the NPC's script is important. It lets the player know the proper NPC has been defeated, and now we have the option to collect a reward. You can opt for a MessageBox instead of a message (just substitute MessageBox instead of Message in the script), but this will pause the game, killing 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.

11f). Click OK, closing the NPC's panel. Save.


12a). QUEST window > Topics tab
Open up the bounty quest again. Find the GREETING made earlier, the one which says "You're back and we've got a problem" or whatever.

Here are the needed Conditions IF working with Malene.

GetIsId NPC: Malene == 1
GetStage SQ05 >= 100
GetQuestVariable Quest: aaaBountyQuest DoOnce == 0.00
GetScriptVariable Reference: aaaNPCBossRef Dead == 0.00


Note that the conditions above specify: (1) Malene is the one who will say "You're back ...", (2) the bounty quest won't begin until SQ05 (Gravefinder's Repose) is basically done. And there are also a couple of variables being thrown into the mix, which will make more sense later.

Here are the needed Conditions if working with Diram Serethi.

GetIsId NPC: DiramSerethi == 1
GetStage MS47 >= 100
GetQuestVariable Quest: aaaBountyQuest DoOnce == 0.00
GetScriptVariable Reference: aaaNPCBossRef Dead == 0.00


MS47 is, of course, the Aleswell Invisibility quest.

If NOT working with either of them (in effect, you're writing your own quest without worrying if some other Bethesda-written quest is involved) here are the conditions which typically go...

GetIsId NPC: X == 1
GetQuestVariable Quest: X DoOnce == 0.00
GetScriptVariable Reference: X, Dead == 0.00


As always, substitute X for the NPC innkeeper's name, the name of the quest, and the Reference ID of the enemy
.

In any case, the innkeeper will only say "You're back, and we've got a problem" if everything is ready to go, and the enemy boss is theoretically alive. I am not including conditions which specify IF that enemy is actually alive, but it's certainly possible to do so. I fear that this can lead to occasional CTDs though, as the game's engine tries to figure whether some enemy who is in some faraway cell is alive or dead. So I did not write my quests this way.

For those who want to experiment, add a GetDead condition into that GREETING, specifying whether the enemy boss is alive or dead.

12b). In the Result Script box type Set aaaNPCBossRef.Dead to 1, substituting the actual Reference ID of the added enemy. This changes the ScriptVariable for that enemy from 0 to 1. Why is this important? It's important because this change ensures that Malene, Diram, Foroch, Candice, or anybody else 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. After 3 days, the variable will reset back to 0, meaning the NPC can potentially say "You're back...." once again.

In a minute, more dialog is going to get added which will allow the quest to move 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 this issue is going to be addressed.

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 dispense 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 this mission. Just make sure to add all the respective Conditions, Result Scripts, and check "Random" for any additional greetings.

> Conversely, if you do not want there to be any randomness with this quest showing up, only one GREETING is required. Random can stay toggled off, in this case. In my opinion this is not as fun though. wink.gif It also feels a bit forced.

>> For testing purposes, once you're back in-game, it is possible to enter and exit dialog with the quest-giving NPCs over and over, 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. I am calling it aaaBountyTopic. 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.


14a). QUEST window > Topics tab > Topic Text slot
Go back to the topic just added (aaaBountyTopic) and add some dialog in which the innkeeper further explains his or her plight. "Yes, they have returned, those rascals, and we need to rid them once again, lest this local business suffers!"

14b). The Topic Text slot can be changed from aaaBountyTopic to "Enemies" or "Have they returned?" or whatever.

14c). Copy all the Conditions from the GREETING added earlier, and paste them into this new topic. So for Malene's quest it'll have the GetStage SQ05 >= 100, the GetIsID, GetQuestVariable SQFN DoOnce == 0, and the GetScriptVariable aaaNPCBossRef == 0.

Diram will have GetStage MS47 >= 100, the GetIsID, and so on.

For any of the others, there'll just be a GetIsID, GetQuestVariable X, DoOnce == 0, and the GetScriptVariable. Paste these into the conditions for the new topic

14d). Change GetScriptVariable aaaNPCBossRef.Dead == 0 to GetScriptVariable aaaNPCBossRef.Dead == 1.

From this moment, the quest can be written so that the innkeeper will simply give the quest to the PC without choice (the player is basically railroaded) or the quest can be written so there is a choice involved. Yes or no.

16). To railroad the player (maybe your character is somebody who always goes for quests) use the Add Topics box to add the next topic. To provide a choice, use the Choices box.

Continue to step 17a if choice is involved.
Continue to step 17b if no choice is involved.


17a). Add a Yes and a No choice into the Choices box, and also into the Editor ID window. If you've already got Yes and No choice topics from other quests, these can be reused. Add dialog and Topic Texts for each choice. Now, if the player chooses Yes, this will obviously lead to the innkeeper giving the quest. "Ah, I knew I could count on you." If No gets chosen, the innkeeper will say something appropriate, maybe even be angry or fearful.

For the Yes choice here are the needed Conditions...

GetIsId NPC: NPC Name == 1.00
GetScriptVariable Reference: aaaNPCBossRef Dead == 1.00


For the No choice, all that's needed is a GetIsId. Also add a Result Script which says Set aaaNPCBossRef.Dead to 0 for the No choice, so the entire quest can potentially get started again.

17b). (Skip this step if you opted for choices instead of railroading). Use the Add Topic box to start a second topic, and also add this into the tall, vertical Editor ID window. Add dialog to this second topic ("They're located deep within X location, and there's a reward of X if you rid them....") and add something into the Topic Text slot. "Enemies" or whatever.

Conditions are similar to what's above....

GetIsId NPC: NPC Name == 1.00
GetScriptVariable Reference: aaaNPCBossRef Dead == 1.00


From this moment, the player has either accepted, turned down, or been forced to take on the quest. Off he or she goes, to rid the enemy boss (or not).


18a). QUEST DATA tab
Time to continue the main script now, and it's going to be yet another timer script. How it'll work: when the timer runs out after 3 days, the entire quest resets itself silently, along with the chosen dungeon itself. The NPC boss also respawns, since his or her Respawns toggle is turned on. Here is what the timer script looks like in total.

------------------------------------
scriptname aaaBountyQuestScript

short DoOnce
short Timer
short StartDay

Begin GameMode

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

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

If (aaaNPCBossRef.Dead == 3)
aaaNPCBossRef.MoveTo aaaMarkerRef (edit)


EndIf
EndIf

End

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

Substitute aaaNPCBossRef with whatever name was chosen for the boss, yadda yadda.

18b). Click the save icon, and if everything saves okay, close the script. Click OK, closing the Quest window.

.... Again, when the NPC boss gets pwned, this causes the timer to begin. Once 3 days have passed, the dungeon respawns all its enemies (including the boss), and the quest will reset. We'll be able to go back to our quest-giver, and potentially receive this entire quest over again! From this moment on, the player has three days to collect the reward (which has not been added yet). If the player does not do so within 3 days, oh well that's tough, because by then the entire quest will have reset itself, including any Reward dialog. blink.gif There are probably ways to avoid this problem (for instance, the timer can get started only after collecting the reward, via dialog). But in most cases, the above process will be sufficient.


19). Open the Quest window. Go back into the Topics tab > GREETING. Give the innkeeper a GREETING which deals with her or him being happy we have killed the enemy boss. "Oh glory, you have done it, and we are saved!"

Do NOT make this GREETING random. We want the innkeeper to just dispense a reward, not beat around the bush with "Hello" or "Good to see you!", when we return from our endeavor.

And here are the needed conditions.

GetScriptVariable Reference: aaaNPCBossRef.Dead == 2.00
GetIsID NPCname == 1.00


20a). Use the Add Topic box to give the innkeeper a topic which will lead to a reward (I usually just call this topic "Reward" in the Topic Text slot). If you already have a Reward topic from other quests, this can be reused.

20b). As always, add this reward topic in the Editor ID box. Once some dialog has been typed for this reward, use its Result Script box to make the innkeeper reward whatever is desired. For this lesson, I've chosen three bottles of beer, 100 gold, and some mutton. laugh.gif I'm also going to add another script which involves the main script's DoOnce (which causes dialog to change during future encounters with that same innkeeper), and bumps the ScriptVariable forward as well, so that there's no chance the NPC will keep giving this lame reward over and over.

Player.AddItem DrinkBeer 3
Player.AddItem Gold001 100
Player.AddItem Mutton 1
Set aaaBountyQuest.DoOnce to 1
Set aaaNPCBossRef.Dead to 3


Make sure to copy the Conditions from the reward GREETING just added....

GetScriptVariable Reference: aaaNPCBossRef Dead == 2
GetIsId NPC: NPCname == 1



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


22). QUEST WINDOW > Topics tab
Make another GREETING, and this one can be sort of generic. "So glad you have saved us from those bastards!" or whatever. Conditions for this GREETING will be

GetIsID NPCname == 1.00
GetScriptVariable aaaNPCBossRef.Dead == 3.00


It is also possible to put a GetInFaction condition up there, replacing the GetIsId, and then add the faction of an entire town (such as LeyawiinFaction == 1.00) so that this entire location gets excited when they recognize our toon. Make sure Random is toggled on, so that people will only say this GREETING (mixed along with others Bethesda added) once the quest is done, its reward is given out, but 3 days have not passed yet.

Again, you 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 the "So glad you have saved us..." greeting shows up. Since the GetScritptVariable is now 3 instead of 2, the innkeeper won't keep rewarding the PC over and over, as dialog gets entered and exited.


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

GetIsID NPC: NPCname == 1.00
GetQuestVariable Quesname DoOnce == 1.00
GetScriptVariable aaaNPCBossRef.Dead == 0.00


Again, Set aaaNPCBossRef.Dead to 1 goes n the Result Script box, and make sure Random gets toggled.


24). The same secondary topic which was used just after that very first GREETING (aaaBountyTopic aka "Enemies") can be added into the Add Topic box, but the quest-giver (whether it's Malene or somebody else) won't need to explain in as much detail what comes next.

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

GetIsID NPC: NPCname == 1.00
GetQuestVariable Quest: Questname DoOnce == 1.00
GetScriptVariable aaaNPCBossRef.Dead == 1.00


25). Add the same Topic or Choices which got added before, starting from step 16. No additional dialog needs to get added, and Conditions can be exactly the same for all this dialog, and also for the Reward part too.

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

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

Once this respawning bounty quest is set up, we can potentially add other NPCs who give out quests, not just Foroch or Candice or Malene or Diram. If you're trying to use the same quest for multiple people, it's also possible to add to the main script. Follow the same steps found on Page 2, post 30 of this thread. Not every step in that post will get repeated of course, so you'll need to use some judgement to get this all working properly, and also do lots of playtesting.

This post has been edited by Renee: Mar 31 2019, 02:18 AM
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
From: Ellicott City, Maryland



Awesome, thanks so much. smile.gif

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

Respawning Bounty Quests, Game: TES V: Skyrim

Note: Currently the first 11 steps deal with my learning process. 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 12.



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 his shop gets entered, and dialog is initiated.


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 though everything can't be seen here, the Use Report panel 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. Look at every quest Lucan's got listed in this window. 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 each of these, 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.

b}. 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 for taking care of those thieves...."


4).
Close the Use Report panel. It seems like a bunch of time just got wasted, but not really. It's important to find everything an NPC says, if he/she is to be included in the bounty quest. If you don't find the things you'd normally expect, this just means it's important to 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 "Hey, you're that guy..." text 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.

15d). Toggle Has LIP File off, but Force Subtitle on.

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

15e). Double left-click the dialog 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).

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

15g). 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.

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


16). Click OK, OK, and OK, closing all the quest windows. SAVE by pushing the main toolbar's save button. Reopen the Quest now.

The new 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 just got written. Thing is, he will only greet 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 the new Hello showing up (so that he may only give this quest much more rarely, maybe once or twice a year), go to 17.


17a). To decrease the chance of Lucan saying the new Hello, simply lower MS13Fin's Priority to 30. This will cause Lucan to have five extra Hellos in his arsenal 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), simply add another greeting into MS13Fin's Misc tab.

17b). Optional: 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 Oblivion does. 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. Template Data can get used 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 type a comment saying ;Pre-quest, just for reference. Make sure that semi-colon goes before any comment added into this box, this'll prevent the CK from trying to read these comments, then screaming errors at us!

21b). Do the same things for Stage 10, so EMPTY shows up in the Log Entry box. Stage 10 shall deal with Lucan greeting the PC, pitching his idea. Another comment can be added into the Papyrus Fragment box, such as ;Lucan greets player.

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, though. 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 want 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 semi-colon 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 the script a unique name (I named it 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 the 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 the quest. It doesn't have to be called MS13Fin. Matter of fact from this point on I began calling it aaaEmbershardBountyQuest, for convenience, since anything starting with "aaa" will usually show up at or near the top of any list.

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

22e). Highlight the Property and press.the Edit Value button. Since this property is a quest, all of the quests listed in the game show up. To link this new Property with MS13Fin, go ahead and find MS13Fin in the Pick Object scroll-bar. Click OK.

Note: It really helps to read about Skyrim's use of Properties, Aliases, and Fragments, if you haven't done so already. Here is a good place to start. If you've already done some modding in the CS or GECK (which don't use properties, aliases, or 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.

22f). Now right-click on the Property and select Edit Source. This opens up the Script panel (just like the script panel for earlier programs), and here is what should show up...

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

Quest Property aaaEmbershardBountyQuest Auto


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

22g). 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

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

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


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

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

GetStage Quest: MS13Fin < 10.00
GetIsDead aaaEmbershardEnemy == 0.00


That second condition is obviously a check to make sure the enemy added to Embershard is alive. If he/she is not (if he/she has not respawned along with Embershard itself), Lucan won't be able to say the Hello we've added at all. To find the enemy, click on the scroll-bar 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) type GetOwningQuest().SetStage (10). This way, Lucan will keep saying random Hellos until he says the one we wrote. Once he says our own material, the quest bumps forward to 10, and he won't say this Hello anymore, not until the entire quest resets itself.


24). Dialogue Views or Player Dialogue tab.
Go ahead and write up all the rest of the dialog . Five different branches are needed, which shall include topics and infos as follows....

> Lucan informs the player about the menaces inside 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 "No" gets chosen, simply leave the quest at 15, and toggle Goodbye on, if desired).

>>> Lucan says some follow-up info: where Embershard can be found, how we'll get paid, and so on. (Stage 20, a SetStage does not occur 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 a note, which can taken to Proventus Avenicci, Whiterun Jarl's steward, to get paid. (Stage 30. Don't worry about adding scripts yet, these get added in a few). Another option is to add your own steward, in fact this might be the better option for those who are doing the Civil War on the Stormcloaks' side, since I'm pretty sure Proventius disappears after the sack of Whiterun.

>>>>>> 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, all dialog has been written, and quest stages should all be set up. Time to add some quest objectives. Just like in Fallout 3, Objectives are what cause onscreen messages to be displayed when important moments get passed during the quest.

I'm not going into full detail here, since this info is already in the Skyrim Quest Tutorial found on Page 2 of this thread, but I wound up with three Objectives: one which tells the player to "Kill the leader of Fort Embershard", one for "Return to Lucan" and one for "Head to Dragonsreach for a 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)


26a). OBJECT window > Items > Books.
Find a note, and Duplicate it. I am calling this note aaaRewardNote. Erase this duplicate's text, and type something pertinent. "Ye, bearer of this note, who has't defeated the abominable enemies of Embershard Mine, shalt become dispenseda 100 gold...." etc.

My idea here: 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 a note, explaining that we've taken care of Embershard Mine. This note gets taken to Dragonsreach, just like we'd do during any of Bethesda's bounty quests. Difference is, we're going to NEED this note if we want to get paid!

26b). Click OK, closing the note.

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


27a). Aliases tab.
Always start with the Player. Right-click into the giant Alias window, and select New Reference Alias . This opens up the Reference Alias tab. Alias Name shall simply be Player (type Player in this slot). Now click on the Unique Actor toggle, and find Player in the scroll-bar. Click OK.

Note: Chances are the page is too big, and the OK button cannot be seen! If this is the case, just click into the Alias Name slot (where Player was typed earlier), and press Enter or Return on your keyboard.

27b). Next, to tackle Lucan, who is the one who gives the note. ALWAYS add the giver of any item first into the Quest Alias window, before the item itself gets added. Type QuestStarter into the Alias Name slot. 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). Do the same for the note. Type Note into the Alias Name slot.

27e). 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.

Tip: Toggle Quest Object on to make absolutely sure this note will never get misplaced. Quest Object is on the top-right of this panel. Because remember: if we don't have the note, we won't get paid!

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


28a). Dialogue Views or Player Dialogue tab.
Go back to whatever dialog got written for Lucan after the boss of Embershard was dealt with.

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 got written for Stage 50, when Proventus Avenicci or whomever is supposed to dispense payment. Here are the Conditions for Stage 50...

GetItemCount 'aaaRewardNote' == 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) if this hasn't been added yet.


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. Click OK.

29e). Click on the Property for the book. In the Pick Object scroll-down, look for aaaRewardNote.

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

29g). In the Papyrus Fragment box, type Game.GetPlayer().AddItem (aaaRewardNote, 1) .

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 Properties button. 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 payment is received. Do NOT toggle Complete Quest on though. We want this quest to never get completed, right? We want it to possibly return; that's the whole idea here.

So now the quest is good as a one-time affair. Here's how 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, if it's not already toggled.

Notice how "Start Game Enabled" is now grayed-out, and there is no longer 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, by the way.

33). You might see several nodes made for other quests, or you might just see a large panel which is mostly empty. Right-click on the very top choice, which is "Stacked Event Node: Change Location Event". 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.

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

Now comes the tricky part. The SM Event Node page is similar to the Quest Aliases page, 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. rolleyes.gif 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 need to adapt to working sideways for a few minutes!

35). Highlight the Node which just got created (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, the screen can be rotated back to Landscape.

36a). Right-click > New in the Node Conditions box, and add the two conditions...

GetInCurrentLoc Location: "RiverwoodLucanDryGoodsLocation" == 1.00 And
GetDead NONE == 0.00


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. Double left-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 the 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 on Page 2 of this thread).


And that should be all. 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. The opening Hello which begins the entire quest should not be showing up for X number of days.

This post has been edited by Renee: Feb 6 2019, 04:05 PM
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Renee
post May 15 2019, 12:53 AM
Post #44


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



Setting up a gamepad controller Game: Elder Scrolls Online

This is for those gamers who prefer gamepad controllers, like myself. I am going to teach how to do some rather basic things, such as change what each button does, how to invert X and Y axises, and so on. Figuring this stuff out is a cinch in many other games. ESO OTOH requires some background knowledge.

In some games (like Skyrim or Fallout 3) getting a controller to work is as easy as going into the menu, then toggling a button on. Elder Scrolls Online is trickier, and more difficult to figure out. But overall, the experience is more rewarding because there are SO MANY options we can configure for ESO.

So this assumes that you've got a mouse and keyboard, but also a controller which is specifically made for PC gaming. This controller can apparently be Xbox or Playstation styled, or it can be something which is more customized. I myself only use Xbox-style controllers, and Microsoft models at that, but I also use mouse & keys for some tasks.

If you've got any third-party programs on your computer, such as Keys to Joy or Xpadder, it's a good idea to turn close these now. These programs can be used in the game to add extra options, but for now, just close these. I think they interfere with some other options in the base game.


1). Get into the game, so that you are not in its opening menu, you are in the actual game. This way, everything can get tested in real-time.

2). Controller should be on. Now, press the Esc key on the keyboard. Press Settings. And press Gameplay. About three-quarters down the menu page is the GAMEPAD section. Turn this on.

Once the gamepad is on, notice the menu changes to one which is more 'consolized.' wink.gif

Another feature: there are now TWO main menus which can be pulled up -- one can be gotten from the keyboard, the other from the controller itself. These are the sort of menus that allow us to change options, look for Help, and so on. Though these two menu sets might seem like they're the same at first, they actually have quite a lot of difference between them.

Now. If you are like me, you'll want the option to switch the X/Y Axis, which affects the "look around" feature normally assigned to the right mushroom stick. Normally, if the right stick is pushed forward (away from the player), the character looks upward. If the stick is pushed back (toward the player), the character looks down. For those who want to invert this, go to step 3. If not, go to step 4.

3). Press the Start button on the controller. Use the left mushroom stick to scroll down to OPTIONS. Select Camera, and INVERT Y is the very top option.


4). Zenimax gives us a total of three templates, each featuring a different set button assignments. But if you'd like to make your OWN button assignments, here is how to do that.

Press the ESC key. Again, this key works in a similar way as the START key on a controller, except ESC opens up different options.

5). Select CONTROLS. This opens up a menu with four columns, which Zenimax calls Binds.

The First Bind deals with the keyboard itself. All the selections in this column deal with keyboard assignments. Note the typical WASD movement assignments are right at the top, for instance. Oddly, it's the Third Bind that handles controller button assignments. But the cool thing about ESO is, we aren't just limited to using keyboard keys or controller buttons, either device can be used to handle different tasks!

So since the keyboard stuff should already be set up, I am going to show how to assign stuff to the controller.

Tip: Use the mouse-wheel to scroll the Binds menu up and down, it just works more efficiently than the controller does.


6). Start with the very top, which deals with Movement. By default, Move Forward is already set as "Left Stick Up," which is how most gamers prefer it to be set. Suppose you want to change this though? Doing so is easy as using the mouse to left-click on this selection, and then moving the left stick (or right stick, for southpaws) in the direction you'd prefer. In the BINDINGS window, it then shows whatever key, or button, or bumper, or trigger, has been selected.

7). Use the mouse to left-click on Bind.

From here, literally you can just scroll down the entire page, selecting whatever feature (such as Jump) with whatever button, trigger, stick (etc.) is preferred.

We can even sometimes select a combination of buttons. For instance, I just clicked on Autorun, pressed & held the B button, and then pressed the right bumper. Binded this selection. So now my character will run automatically (and keep running) if I press B + RB back in game mode.

8). When you are done making assignments, always press ESC on the keyboard. This will lock these assignments in.

This post has been edited by Renee: May 15 2019, 01:22 PM
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mALX
post May 15 2019, 01:55 AM
Post #45


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



Awesome! You got it working!

By the way; you can set a key on your keyboard to toggle your character to always run; or always walk when toggled. I use the "7" key on my NumPad on the right side of my keyboard as a "walk or run" toggle. That frees up those two keys on your controller for something else.

That run is a kind of "Jogging" run; not a high speed run you might do if you are running for your life. If your character needs to get out of danger; you will want to sprint as fast as you can to get away:

To sprint (no matter which way that toggle is set, run or walk) = just hold down the LEFT shift key while walking or jogging; and your character will sprint as long as your stamina lasts.

Sprinting can't be toggled on or off; you have to actually hold it down = so if you want sprinting set to your controller; find it in the "Controls" list for the controller and set it where you want it.








This post has been edited by mALX: May 15 2019, 02:06 AM


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Renee
post May 15 2019, 01:05 PM
Post #46


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



Awesome, thanks. I have noticed there's TONS of stuff which can be set up. Options, options, options. I like the way there are separate HUDs for PC and consolized versions. Everyone is happy, in theory. smile.gif

I think I'll let the controller handle most "immediate" functions (such as action / combat / hotkeys) but the keyboard will handle all the background functions, such as the quest window, Crown Store and so on.

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Renee
post Jun 19 2019, 02:28 AM
Post #47


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



Game: Fallout 3, How to use Zone Triggers to set quest stages.

Video example: https://www.youtube.com/watch?v=QaMtpvrEG9E

TES IV: Oblivion uses X-markers to bump stages, set variables, and so on. Fallout 3 does use X-markers for some functions, but it also uses what are called zone triggers, or simply "triggers," to setstage quests and perform other functions, as we pass through them. "Pass THROUGH them" is the actual idea here. For an X-marker to work, the character (or NPC) must walk near the X-marker for it to do its job. With Fallout's triggers, we are going to walk through these areas instead.

A quick example from Oblivion's day was during the Unfriendly Competition quest, when the player is supposed to be sneaking a listen to a conversation between Agamir and Thoronir. If we weren't close enough to the X-marker which activates during this quest, the conversation would simply not happen, leading to dozens of "Broken" accusations from various gamers. If a giant trigger zone were used instead, chances are there wouldn't be as many problems.

Zone triggers appear red in the GECK but invisible in the game, and are also used in Skyrim.

CELL window

1). Go into the cell or wilderness area where the trigger is to be added. An example is right outside of Megaton.

2). On the main toolbar, find the T button. It looks like a child's block with a T in it, and is located to the right of the NavMesh button (the button with red scribbles in it). Click the T button. Sometimes it takes a couple of clicks before the button gets pushed inward.

3). In the Render window, left-click somewhere on the ground, and drag upon it. It helps if the area being clicked does not have a bunch of stuff on it (items, Markers, etc.). Try not to click on anything else but the ground, or (if inside a cell) the floor itself.

4). At first, nothing might happen. Maybe a red 2-dimensional rectangle will show up, but maybe not.

Let go of the mouse button. Now move the mouse upwards (away from you) without touching or holding any buttons. If done correctly, there should be a transparent red cube which morphs from two dimensions to three. The mouse can be moved away or toward you, to make the cube shorter or taller. It should be tall enough for a person to walk through though, for best results. If the cube is placed in front of a door for instance, it should be made so that it's taller than a person. It should also be placed across the entire door, which ensures the character will definitely walk through it.

This red cube will be what activates the next stage of the quest. Or it can be used to toggle an objective, set a variable, and so on. Again, the character is going to need to walk THROUGH this cube, so if it's not big enough, or if it's not in the right area, chances are it might need to be redrawn or dragged. These red cubes can be tricky to draw, so it can take some messing around.

5). Anyway, double left-click on the red cube. If done right, the Activator panel will pop up. Note that the game calls the cube "Gas Valve" for some reason. Note that the ID is part of a scroll-bar too. Every trigger zone in the game will be include in this ID slot.

Tips: Sometimes it's difficult not to select some other object (or a wall) which is right behind the cube. Simply click OK when this happens, and try again to position the Render window so that the cube gets selected. It might help to hold the left Shift key while moving the mouse around (don't press or hold any mouse buttons down while doing this). And if things really get aggravating, Hold Z while pulling the entire cube down! Once the cube is below the ground (or floor) it's now in the void, where it's easier to select the cube itself.

6). Click on the New toggle (next to the ID panel). This closes the scroll-bar, so a new ID can be typed in. "Name" is not important, and can be deleted, even.

7). If there is any Script on this Activator, get rid of it by moving the scroll-bar to NONE. Click OK. And Save.

Note: After closing the Activator panel, notice there are a bunch of colored lines & arrows in the cube. Now it can be moved, and also manipulated larger or smaller, with greater ease. If the cube was moved out into the void, time to move it back in place, back to where a character will definitely walk through it.

An easier way to change the cube's dimensions than trying to drag upon it is to double left-click on it, select the Primitive tab. From here, its X, Y, and Z Bounds can be changed. Click OK when done.

8). Double left-click on the red cube > Edit Base. Now it's time to add a script, which can be left as an Object. It should look like this..

scriptname aaaTriggerScript

Begin OnTriggerEnter Player

If (GetStage == X)
SetStage X
EndIf

End


Save the script, click OK on the Activator panel, and reopen it. Find the script in the scroll-bar area and select it. Click OK again.

9). When the Reference panel is reopened, click Persistent Reference ON. An actual Reference ID is not needed, unless there are plans for some quest or script to "know" that the cube/trigger zone is there. Usually this is not needed though.

10). Click OK and as always, save.

11). Open up the Quest window. Open the Target Ref tab, and add a target (vamp).

12).
In the Quest Objectives tab's Cell scroll-down bar, locate the area where the red cube has been added, and select its Ref.

Note: If this cube has been placed outside (especially somewhere in Wilderness) it may not show up in the scroll-bar. If this is so, click on the "Select Reference in Render Window" button. Make sure that the Render window is still displaying the area where the red cube has been created. Double-click on the cube, and it should automatically get selected as the Ref.

This post has been edited by Renee: Jun 23 2019, 02:50 PM
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Renee
post Jun 26 2019, 12:10 PM
Post #48


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



How to transfer saves from Xbox to PC, Games: Oblivion, Fallout 3, Skyrim

Although all the info here can be found online, there is a helpful step-by-step version on this page. But here is the YouTube video I found, anyway.

http://www.bing.com/videos/search?q=obvlio...amp;FORM=VRDGAR

To make save transfers happen, Modio 5.3 must be downloaded. It can be found from several sites, but here's one I found.

https://modio.en.lo4d.com/windows

Download that from the big green Free Download button (and then choose either the US or UK versions) and save the program somewhere on the computer's hard drive. Make a desktop icon to make using this program even more convenient.


1). Insert a USB stick into the the Xbox 360. Some sticks go in the rear of this box, some might go in the front. Since the USB area is poorly-designed on my model, you may need an extension cord to plug into the box, if you have the same model I have.

2). Go into the Xbox's storage area like; Settings > Storage > Hard Drive > Games & Apps and then find the game, and the save you want to transfer. Copy this save from the hard drive to the USB stick.

3). On the PC, the USB stick will have a new folder in there, and each game will get its own folder.

> For Oblivion, this folder is called "Content." And inside of Content should be two more folders. One of these is called 00000000000000000, and this one will not be used at all, but keep it around anyway. The other folder will have its own, more complicated name. Go into this one, and keep diving into it until you find the Xbox save.

> For Fallout 3, there will be only one folder, and buried within this folder will be the save which just got transferred.

> For Skyrim, (vamp)

4). Copy/paste this save from the USB to the PC, in whichever area you like to keep saves.

5). Now, open Modio from wherever it got downloaded to.

6). On the bottom of the program, left-click on Open a Save.

7). Select the "Browse" button.

8). Now find the save just placed on the PC which got derived from step 3. Double-click on it.

9). On the left side of the program, select "Advanced."

10). Press the Edit Package Contents button (on the bottom of the window).

Now it's time to modify the file that's buried within the Xbox save. If this save was made in Oblivion, the file will be called gamedata.dat. If it was made in Fallout 3 or Skyrim, it will be called savegame.dat

11). Right-click on this file, and right-click "Save as...." and save it to the same area where the Xbox save was transferred to. Do NOT rename it.

12). Close Modio.

13). Now find the file just converted (which will be called gamedata.dat or savegame.dat). The game will not be able to read either of these as .dat files, so right-click on the file > Rename, and change the .dat extension to .ess for an Elder Scrolls game, or .fos for a Fallout game. So in other words, the file will now be called gamedata.ess, savegame.fos, or savegame.ess, depending if it's going to be used for Oblivion, FO3, or Skyrim.

.. It is possible change the file's name further if desired, but this is not 100% necessary.

...If the name gets changed, there will be a warning (after renaming the file) which can be ignored. Just click Yes.

14). Now, move the .ess or .fos file into Documents > My Games > *GAME* > Saves. There you go.

(*GAME* == Oblivion, Fallout 3, or Skyrim).

This post has been edited by Renee: Jun 26 2019, 02:53 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
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 

- Lo-Fi Version Time is now: 22nd August 2019 - 06:16 AM