Feature - Implemented improvements to quest tracking

roippi

Developer
Right, I'd kind of forgotten about that. r10595 updates quests whenever we look at questlog.php.

I'll look into adding a quests predicate to refresh.
 

Veracity

Developer
Staff member
We should probably add the various Clancy level up & equipment adventuring as quests.
As Bale pointed out, the Quest log does not have these.

We can reliably deduce the completion of the lute quest: either Clancy has it equipped or it is in inventory.
We can also deduce some things about the minstrel level quests:

L3 & Tavern open -> Clancy L2 quest available
L5 & Knob open -> Clancy L3 quest available
L8 & Tr4pz0r quest finished -> Clancy L4 quest available
L11 & Pyramid open -> Clancy L5 quest available.

IF you do each quests soon after you get them, you can deduce completion from Minstrel Level. But you are not required to do the quests. You are certainly advised to do so. I don't know if you can get the later quests if you don't finish an earlier one. That would be relatively easy to test: hold off on the Tavern, open Cobb's Knob, and see if he wants to talk to you again.

Since Bale says Clancy's quest is in the Quest Tracker, I would bet that you have to do them in order, much as you have to finish the Spooky Forest before you get the Tavern before you get the Friars.

We don't (yet) track base Minstrel Level and Minstrel Instrument; the former is available only by parsing the charpane and subtracting Minstrel Level modifiers. The latter is available either by parsing the charpane or by seeing what you have in inventory: if !sackbut then sackbut else if !crumhorn then crumhorn else lute.

Your best bet is to lobby for Clancy's current request to go in the Quest Log. I checked there on my first Boris run and was surprised to not see it there. It's probably an oversight - especially since it is in the Quest Tracker.

But, as soon as we track Minstrel Instrument and Minstrel Base Instrument, you'll be able to make some deductions.
 

Bale

Minion
L3 & Tavern open -> Clancy L2 quest available
L5 & Knob open -> Clancy L3 quest available
L8 & Tr4pz0r quest finished -> Clancy L4 quest available
L11 & Pyramid open -> Clancy L5 quest available.

IF you do each quests soon after you get them, you can deduce completion from Minstrel Level. But you are not required to do the quests. You are certainly advised to do so. I don't know if you can get the later quests if you don't finish an earlier one.

You cannot. It has already been spaded by others and I have verified it myself. If you do not complete a quest you will not get assigned a successive quest. It is impossible to get the Lute quest until Clancy has already leveled up in the Tavern and the Knob. (And you don't get the Knob quest unless you've already leveled up at the Tavern.)
 

Veracity

Developer
Staff member
More from yesterday.
Clancy would like you to take him to the Typical Tavern, so he can learn some new songs from the various angry, drunk patrons there.
Clancy would like you to take him to the Knob Shaft, so that he can learn how to play miner chords.
 

Bale

Minion
Unfortunately The Minstrel Cycle is a little bit different to implement than other quests. Those items show up in the quest log, but when you complete them nothing appears in the quest log under either current or completed quests. This means only the most recent item is detectable and only when it is uncompleted.

I'd recommend that questF05Clancy be "unstarted" whenever there is nothing in the quest log about it, since there's no indication (other than level) that it must have been started. Unless you want to stick in some logic to indicate where you MUST be, based on other indicators and I don't really recommend that. Another script can work that out as long as you pass on the current quest status.

questF05Clancy will then indicate step1, step2, etc if there is a quest log entry. Unfortunately questF05Clancy will never be finished because there's nothing in the quest log to indicate that it has been finished.

This is probably the easiest way to implement the Minstrel Cycle quest as well as the best.
 

Bale

Minion
Can't it easily be detected based on Clancy's level and whether or not you have the lute?

It can be deduced, not detected, based on what other quests you have accepted, your own level and whether there are any outstanding Clancy quests. My point is that mafia shouldn't deduce anything about quest status, only report to us what can be seen in the quest log. Any script that has reason to care should then do the deduction for itself.
 

Fluxxdog

Active member
Miscellaneous Quests:
The Minstrel Cycle
You have taken Clancy on a whirlwind tour of the Kingdom, and he is now equipped with enough songs that his musical style will never be cramped again.
 

Theraze

Active member
Deduced, detected... bottom line is that if we know that Clancy is level 2, he's finished the Tavern. If he's level 3, he's done the knob shaft. Level 4, not only have you done both of those quests, but you've also got the lute, and you've finished off the peak.

It's a linear quest progression. Why would we want to insert bad data into mafia's records when we can know we've got it right, whether we're doing it through reading the quest log or by reading Clancy's level and our inventory, which we do anyways?
 

Veracity

Developer
Staff member
Clancy would like you to find the grave of The Luter, so that he can retrieve the lute the Luter looted long ago. Your keen adventuring instincts tell you that the grave is probably near a graveyard.
We'd also have to take note of the +3 Minstrel Level passive skill and song, in order to deduce what's been done, but yes, we can easily enough detect exactly what stages have been completed, regardless of whether the quest log says anything.

For example, My Clancy is level 9, with Song of Accompaniment and More to Love. He has the Lute, and so next stage of the quest is the Icy Peak. As it turns out, I have spoken to the Tr4pz0r, but have not opened the Peak and Clancy has not asked to go there yet.

I'm posting the Quest Log entries as I find them so that we can use them to determine whether a particular stage is available.

Hmm. Tavern Open, Knob Open, Cyrpt (at least) available, Tr4z0r Quest complete, Pyramid open are the events that determine whether a Clancy quest is available. Do we track all of those?
 

roippi

Developer
Unfortunately The Minstrel Cycle is a little bit different to implement than other quests. Those items show up in the quest log, but when you complete them nothing appears in the quest log under either current or completed quests. This means only the most recent item is detectable and only when it is uncompleted.

I'd recommend that questF05Clancy be "unstarted" whenever there is nothing in the quest log about it, since there's no indication (other than level) that it must have been started. Unless you want to stick in some logic to indicate where you MUST be, based on other indicators and I don't really recommend that. Another script can work that out as long as you pass on the current quest status.

questF05Clancy will then indicate step1, step2, etc if there is a quest log entry. Unfortunately questF05Clancy will never be finished because there's nothing in the quest log to indicate that it has been finished.

This is probably the easiest way to implement the Minstrel Cycle quest as well as the best.

We currently set quest status only if we see a quest, we never un-set anything. I think this is generally a good idea, and it seems to work here as well.

If there's no finished step, that's fine, just put a dummy entry in questslog.txt that can never be matched. I wonder if that's intentional on TPTB's part, or an oversight?

Hmm. Tavern Open, Knob Open, Cyrpt (at least) available, Tr4z0r Quest complete, Pyramid open are the events that determine whether a Clancy quest is available. Do we track all of those?

I think so. Or the logic to figure them out exists.

Tavern Open: questL03Rat == completed || started
Knob Open: questL05Goblin == ( completed || started ) && InventoryManager.getCount( ItemPool.COBBS_KNOB_MAP ) == 0
Cyrpt Open: questL07Cyrptic == completed || started
Trapz0r complete: questL08Trapper == completed
Pyramid Open: questL11Pyramid == completed || step12
 

Theraze

Active member
The message that Fluxxdog posted is actually the completed message... when the quest is completely done, that does show up in the Completed section of your questlog... It's just between stages that there's no message letting you know that the quest "cycle" is still in progress.
 

nworbetan

Member
This is everything that I thought was straight-forward or obvious in the Minstrel Cycle in case doing some of the grunt work might help, but unsurprisingly there's still a bunch of loose ends I don't know how to handle. The AdventureRequest.java and ResultProcessor.java steps mostly happen at the same time that the quest log text disappears, so setting the progress to either the step that just got finished or the step that hasn't started yet feels wrong. From a scripter's point of view, inserting an extra step# in between the quest log steps would work great, but I still haven't found the code that checks questlog.php for the text from questslog.txt, so I don't know how feasible that is.


Another thing worth considering is maybe letting Clancy's unbuffed level set one of these hypothetical in-between-the-questlog-steps steps, because sometimes Clancy's level will be the only evidence that progress has been made in the Minstrel Cycle.

And now that I've pasted my notes into this thread, it feels like I'm mostly saying "me too" and "this please", and I'm totally okay with that. :)
 

Attachments

  • tracking_clancy.diff
    5.1 KB · Views: 30

roippi

Developer
The AdventureRequest.java and ResultProcessor.java steps mostly happen at the same time that the quest log text disappears

The quest log stuff disappears? This is the only quest that does that, then. That is seriously disappointing.

From a scripter's point of view, inserting an extra step# in between the quest log steps would work great, but I still haven't found the code that checks questlog.php for the text from questslog.txt, so I don't know how feasible that is.

QuestDatabase.java. I see you added something to it in your patch, just scroll down a bit.

There is a 1:1 relationship between our steps and questlog steps, so I'd resist injecting our own special steps here. I've yet to do an AoB run so I can't comment on the necessity of having whatever that data provides available to scripters. They can get access to clancy's level, so is special handling even necessary there?
 

Bale

Minion
The quest log stuff disappears? This is the only quest that does that, then. That is seriously disappointing.

It disappears in direct contradiction of how KoL handles every other quest log. :( It is quite disappointing.

They can get access to clancy's level, so is special handling even necessary there?

I find it pretty easily deducible without ever referencing the quest log. If I know Clancy's level, my level, item_amount($item[Clancy's Lute]) and certain other quest flags it is pretty easy.
 

nworbetan

Member
I guess I could have forgotten to look for the Minstrel quest sub-steps in the completed quest log, but I vaguely remember looking there at least once and thinking that it was funny how that quest kind of disappears and comes back.

I'll take a closer look at the QuestDatabase functions, but I'm not eager to change anything there.

The point about the "extra" steps would probably be clearer if I had said that the questlog doesn't actually show all of the steps of the Cycle, and if it is possible convey all of the stages of progression in the one questF05Clancy variable, that would be ideal. The questlog steps (also triggered by the choice adventures in ChoiceManager) are pretty much a "started" state for a sub-quest, and the non-combats in AdventureRequest are kind of like a "finished" state for the sub-quests.
 

roippi

Developer
If someone could confirm that the quest disappears/reappears, I'll bug report/feature request that to TPTB.

If it just temporarily goes over to completed quests, that's weird but not a big deal. Nemesis quest does that too, briefly.
 
Top