Linking and ending multiple quests

For all talk about quest development - creation, testing, and quest system.
Post Reply
Sappho20
Posts: 7
Joined: Wed Jun 29, 2022 8:54 am

Linking and ending multiple quests

Post by Sappho20 »

Hi everyone,
I am new to modding Daggerfall.
I have a question about ending quests and linking them. Basically, I want to make a series of interlinked quests that tell a continuing narrative. I want you to have a companion that follows you with multiple possible endings and different fates of that companion. However, it appears that quests are standalone and can trigger quests, but are limited in terms of influence beyond that. Am I right?
Is it possible for one quest to end other quests or would all the ending quests have to be in a single quest?
To complicate it I wanted to have a face on screen during the quests to show your companion and the face cannot be cleared by another quest.
I worry that a single enormous quest file would become buggy, whereas a group of smaller ones are easier to work with. I have five quests so far that work and trigger each other, but if the companion dies in one of the quests the others continue because I don’t know a mechanism to stop them.
Thanks for your help.

User avatar
Jay_H
Posts: 3876
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: Linking and ending multiple quests

Post by Jay_H »

Hello!

Quests have a minimal ability to influence each other; what the main quest uses is a series of "global variables," which are permanent flags stored inside the save game. However, global variables are limited in number so far, which means they aren't very feasible for modded quests. Whether that'll change in the future, I don't know.

One thing you can still do without the use of global variables is a fairly recent quest action added by TheLacus; see it in action here: https://github.com/JayH2971/dfunity-que ... 04.txt#L68

Code: Select all

_startquest_ task:
    reveal _diren_
    reveal _shedun_
    run quest ANMQ04A then _winnulfaga_ or _winnulfaga_
    run quest ANMQ04B then _winmedora_ or _winmedora_
What I'm doing here is starting two quests simultaneously, ANMQ04A and ANMQ04B. I can then run a different action based on whether the quest was completed successfully or unsuccessfully; the first _winnulfaga_ is run for success, and the second _winnulfaga_ is run for failure (it's not a great example since it's the same task I run both times, but it's the only example I have so far). This allows you to run smaller quests as events that'll influence your questline.

Persistent people are easy to create but a little tricky to maintain. You can choose a permanent portrait for that person and keep it on screen as much as you like, but there are certain gaps, such as when one quest ends and another begins, where you have to be mindful as to its temporary disappearance.

Feel free to ask more questions, I'm happy to see someone making the attempt :)

User avatar
Hazelnut
Posts: 2969
Joined: Sat Aug 26, 2017 2:46 pm
Contact:

Re: Linking and ending multiple quests

Post by Hazelnut »

I was not aware of that new action Jay, interesting and I will have a closer look sometime.

Anyway I just wanted to mention that the Mountain Rumors master rank fighters guild quest in my Roleplay & Realism mod is implemented as three separate quest scripts. It's fairly simple with an intro quest that is given out, then the main script which starts when the player arrives at the right place, and a third which deals with DB consequences if you mess up. They all end themselves and don't interact beyond starting the next one, but I figured it might be a helpful example of simple quest chaining. the main reason I split the quest into three separate scripts is that it was getting far to large and complex. The 2nd script (main one) is still pretty horrendous but I was at least able to split parts out that were logically separate.

You can find them on my github repo.
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods

Sappho20
Posts: 7
Joined: Wed Jun 29, 2022 8:54 am

Re: Linking and ending multiple quests

Post by Sappho20 »

Hi, thanks for your replies, I appreciate the help.
My only experience of making quests before this was Morrowind.

The code you provided is great!
_startquest_ task:
reveal _diren_
reveal _shedun_
run quest ANMQ04A then _winnulfaga_ or _winnulfaga_
run quest ANMQ04B then _winmedora_ or _winmedora_

I could use it to run the ‘side quests’ without having to end the main quest or have huge quest files. As for the main quest I could do as you suggest make it more like a daisy chain with the companion’s face moving from quest to quest. Perhaps with long timers so the quest is silent
for a while but keeps the face.
Instead of being able to do the main quests in any order, I also wondered if something like this would work to add some random quests in between the main quests and make the mod less predictable.

_nextquest_ task:
when _qgclicked_ and _slain_
pick one of _quest1_ _quest2_ _quest3_

_quest1_
start quest DW00001
end quest

_quest2_
start quest DW00002
end quest

_quest3_
start quest DW00003
end quest

I’ve had a look at the mountain rumours quest and I see what you mean about it been long. That’s what I feared would happen with my quest if I had to add them up, but I’m glad I can see how long they can be and still work ok!

I will probably have lots of questions trying to get this done.

One question is how you keep the face portrait the same between quests as that will make the story odd if your companion changes appearance every few weeks?

Thanks for your help

p.s the quest writing tutorial is amazing…

User avatar
Jay_H
Posts: 3876
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: Linking and ending multiple quests

Post by Jay_H »

Sappho20 wrote: Wed Jun 29, 2022 7:57 pm One question is how you keep the face portrait the same between quests as that will make the story odd if your companion changes appearance every few weeks?
That's one of the tricky parts. You might use the "face" attribute when defining the person; I've never used it so I don't know how reliable it is, but that's something to experiment with. See this line for an example: https://github.com/Interkarma/daggerfal ... R.txt#L338

Code: Select all

Person _father_ face 5 group Noble male remote anyInfo 1013 rumors 1014
I don't think it works for what you're expecting, but might as well give it a try, right?

The other alternative is to use a unique NPC sprite, which will never change. You can use it in each quest without concern it'll change: https://github.com/Interkarma/daggerfal ... 1.txt#L109

Code: Select all

Person _lichface_ face 169 named Lord_Darkworth
By making _lichface_ assume the identity of Lord Darkworth, this quest ensures that he'll have the same face portrait each time. I don't have a list of the available unique persons you can use for portraits, but UESP or the Visual Studio Code's autocomplete functions should give you good ideas on finding them.

Sappho20
Posts: 7
Joined: Wed Jun 29, 2022 8:54 am

Re: Linking and ending multiple quests

Post by Sappho20 »

Thanks this is all very helpful, I will try to use the
Person _father_ face 5 group Noble male remote anyInfo 1013 rumors 1014
and see if it keeps the same face.
Being able to keep the same NPC sprite will also help. I was thinking of using some of the NPC’s Cliffworms added in the famous faces of the Iliac bay mod, as a good way to get the player to travel across the bay and see these lesser characters.
I am also learning on the job and discovering new actions I can add to quests so I expect a lot of revision as I go (I’ve been looking through as many other quests as I can to see how they are written and what they do).

Post Reply