Classic quests in DFU

For all talk about quest development - creation, testing, and quest system.
Post Reply
User avatar
Jay_H
Posts: 4061
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: Classic quests in DFU

Post by Jay_H »

I've sent them to Hazelnut, as well as a comment file regarding the work yet to do.

As for credit... well, I'll include it when I get the chance. I'm just happy that we're cementing a big part of core DF gameplay here :D

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

Re: Classic quests in DFU

Post by Jay_H »

To answer Nystul's question in github:
Nystul wrote:why was _thief_ renamed into _enemy_ ? - this obfuscates things a bit since in the first place you are asked by the quest giver to track down a book thief
N0C00Y10 is still unfinished, so it won't be active yet. The problem with it, according to the player log, is "Exception during quest compile: An element with the same key already exists in the dictionary." I didn't know what that meant, so I just tried changing the thief variable to something that isn't already defined in Daggerfall (that is, the thief enemy). It didn't work, and then I moved on to other quests.

In reality, quest variables can mean anything or nothing at all. Frequently within each classic quest you'll find variable names that have nothing to do with what they represent, such as the sea of S.## variables in most, or sometimes a "pcgetsgold" task that just means you click on a normal NPC. There are dozens of variables with no relation to their function in classic, so since there's really no convention, "enemy" was basic enough to the idea that I consider it sufficient to leave it that way.

Since it likely isn't part of the solution, though, I might as well change it back.

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

Re: Classic quests in DFU

Post by Hazelnut »

I'll revert that one back to the way it was if it's still in progress then.
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods

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

Re: Classic quests in DFU

Post by Jay_H »

To be honest, a few of them will likely be that way, and I haven't kept perfect track of them. But they're commented out on the quest sheet, so they shouldn't come into play. If it's a problem for git to add unnecessary changes I'll exclude them myself and send you an updated list, rather than making you revert things one by one.

User avatar
Interkarma
Posts: 7236
Joined: Sun Mar 22, 2015 1:51 am

Re: Classic quests in DFU

Post by Interkarma »

Jay_H wrote: Sat Mar 10, 2018 8:30 pm To answer Nystul's question in github:
Nystul wrote:why was _thief_ renamed into _enemy_ ? - this obfuscates things a bit since in the first place you are asked by the quest giver to track down a book thief
N0C00Y10 is still unfinished, so it won't be active yet. The problem with it, according to the player log, is "Exception during quest compile: An element with the same key already exists in the dictionary." I didn't know what that meant, so I just tried changing the thief variable to something that isn't already defined in Daggerfall (that is, the thief enemy). It didn't work, and then I moved on to other quests.
Just to help out with this one, the dictionary exception means there is a duplicate symbol (message, resource, task, etc.) somewhere in the quest. The symbol dicts are maintained per-quest so this error is something in that specific quest itself.

Looking at N0C00Y10 in detail, it defines RumorsPostfailure: [1006]" message twice within QRC block. Removing duplicate block should fix problem in this quest. Looking at the actual text of this block, it seems that it was intended to be used elsewhere and is incorrectly tagged 1006. It might just be leftover text from development and can simply be removed - nothing actually references it.

Any time you see that dictionary error, go looking for duplicate names. No need to change things at random as it's not conflicting with other quests - the duplicate symbol will be within that specific quest. :)

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

Re: Classic quests in DFU

Post by Jay_H »

Good, I assumed there was something wrong that was interfacing between DFU and the quest file, like some symbol definition within the engine itself. Thanks for letting me know. Once I get a chance, I'll get back to this one and a couple others with the same error.

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

Re: Classic quests in DFU

Post by Jay_H »

Referring back to the discussion earlier about house4, quest locations in houses appear to be very limited compared to classic. House1 is the most reliable quest sink AFAIK, which means I've been using it in a lot of my quests. If it had a normal rotation that might not be a problem, but it always sends me to the same house model:

Image

This makes for easy testing, but once people start trying quests earnestly, they're going to notice this repetition pretty quickly. At some point I recommend finding out what's going on with house1 generation (and the other houses, since I've never been able to get house5+ to work) so there can be a selection that feels more natural.

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

Re: Classic quests in DFU

Post by Hazelnut »

Hi Jay,
Been looking at the DB joining quest L0A01L00 and the changes you made. This quest doesn't work because the quest system isn't fully complete rather than bugs in the quest script itself, but you made changes to try to work around these unimplemented features. Did you do this for many classic quests? If so, is there some way (short of looking at each quest's diff in git) to identify which quests you have done this for?
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods

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

Re: Classic quests in DFU

Post by Jay_H »

I don't believe there is. However, the only change I remember making in that regard is altering house types. If we ran a quick search query for house2 to house4, that should show us all the relevant changes.

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

Re: Classic quests in DFU

Post by Jay_H »

I'm a bit stuck with A0C00Y00. I'm trying to fix an immediate reward glitch.

Here's my problem: I went to the tavern and grabbed the true letter but forgot to grab the false one. I teleported back and clicked on the questgiver, but then realized I forgot to drop the false letter. I travelled again to the tavern and dropped the false letter, and immediately got rewarded.

Code: Select all

_S.02_ task:
	toting letter6 and _qgiver_ clicked 
	toting letter4a and _qgiver_ clicked 
	toting letter3a and _qgiver_ clicked 
	toting letter5 and _qgiver_ clicked 

Code: Select all

_S.03_ task:
	dropped _falseletter3_ at _inn_ saying 1015 
	dropped _falseletter1_ at _inn_ saying 1015 
	dropped _falseletter4_ at _inn_ saying 1015 
	dropped _falseletter2_ at _inn_ saying 1015 

Code: Select all

_questdone_ task:
	when _S.02_ and _S.03_ and not _traveltime_ and not _S.04_ 
	give pc _gold_ 
	end quest 
So the difficulty here is that there's no easy way to simply prevent _S.02_ from persisting. I tried clearing _S.02_ when _S.02_ and not _S.03_ but that didn't work, _S.02_ didn't clear at all. This is usually simple because it wouldn't involve a "toting" condition, but that makes it more complex. I can't simply toggle the action based on external conditions.

Anyone have any suggestions on how to prevent this immediate reward glitch? I didn't want to call this a bug since it really isn't, it's just difficult logic that I can't really see beyond right now. The alternate path is to just rewrite the quest to remove the "toting" part but I'm trying to avoid that.

Post Reply