Classic quests in DFU
- Jay_H
- Posts: 4071
- Joined: Tue Aug 25, 2015 1:54 am
- Contact:
Re: Classic quests in DFU
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
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
- Jay_H
- Posts: 4071
- Joined: Tue Aug 25, 2015 1:54 am
- Contact:
Re: Classic quests in DFU
To answer Nystul's question in github:
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.
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.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
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.
- Hazelnut
- Posts: 3016
- Joined: Sat Aug 26, 2017 2:46 pm
- Contact:
Re: Classic quests in DFU
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
- Jay_H
- Posts: 4071
- Joined: Tue Aug 25, 2015 1:54 am
- Contact:
Re: Classic quests in DFU
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.
- Interkarma
- Posts: 7247
- Joined: Sun Mar 22, 2015 1:51 am
Re: Classic quests in DFU
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.Jay_H wrote: ↑Sat Mar 10, 2018 8:30 pm To answer Nystul's question in github: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.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
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.
- Jay_H
- Posts: 4071
- Joined: Tue Aug 25, 2015 1:54 am
- Contact:
Re: Classic quests in DFU
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.
- Jay_H
- Posts: 4071
- Joined: Tue Aug 25, 2015 1:54 am
- Contact:
Re: Classic quests in DFU
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:
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.
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.
- Hazelnut
- Posts: 3016
- Joined: Sat Aug 26, 2017 2:46 pm
- Contact:
Re: Classic quests in DFU
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?
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
- Jay_H
- Posts: 4071
- Joined: Tue Aug 25, 2015 1:54 am
- Contact:
Re: Classic quests in DFU
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.
- Jay_H
- Posts: 4071
- Joined: Tue Aug 25, 2015 1:54 am
- Contact:
Re: Classic quests in DFU
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.
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.
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
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.