Feature - Rejected Quest Manager

lackita

New member
I've written a quest manager that lists all of the active quests and their current step. I plan on adding features to this over time, but I wanted to get feedback on this initial version.
 

Attachments

  • quest-manager.patch
    20.9 KB · Views: 28

lostcalpolydude

Developer
Staff member
It looks like questscategory.txt is redundant with the Quest enum in QuestDatabase, or at least could be incorporated into that instead.

I'm curious what this is supposed to show that the Quest Tracker doesn't already show in the charpane (I haven't actually tried out the patch, there are a lot of whitespace changes that would not make it into mafia).
 

Darzil

Developer
I also haven't tried it, but looked to me like it was designed to show quest progress in graphical client without having to have a relay browser open. That wouldn't fulfil a need for me, but might for others.

I'd have added the categories to questslog.txt rather than adding a new file, and I'm not sure what QuestDatabaseTest is for.

Edit - The real issue I can see is that currently the information in questslog.txt doesn't contain all the quest text from the quest log, just that which can be reasonably matched. Therefore we'd need to rebuild that data manually, probably involving another lookup file, and some other coding. That's quite a lot of extra steps for something which is already available in the relay browser.
 
Last edited:

lackita

New member
It looks like questscategory.txt is redundant with the Quest enum in QuestDatabase, or at least could be incorporated into that instead.

I can see how the information could be incorporated. Two concerns about this idea, though:
  • Not every quest in the data file is in the enum. I can add additional entries there, if you guys are ok with that.
  • It seemed to me like content specific data is kept in data files, not java code.

I'm curious what this is supposed to show that the Quest Tracker doesn't already show in the charpane.

This iteration doesn't do anything besides duplicate the quest tracker in the charpane. I wanted to get feedback on the design before I started adding additional features.

My goal is to have something that completes steps of quests. The quests dropdown implements a few of these already, but I wanted something that changed dynamically with what quests were actually active.

There are a lot of whitespace changes that would not make it into mafia.

Those changes got made when I applied the formatter in the utils directory to those files. Don't particularly care if they get included or not.

I'd have added the categories to questslog.txt rather than adding a new file.

I put it in a separate file because I wanted to minimize the risk to other parts of the codebase. The index position is hard-coded in many places and I was concerned about missing one of those instances.

I'm not sure what QuestDatabaseTest is for.

I should have mentioned this in my original post, these are some JUnit tests I wrote to give me confidence my changes worked correctly without having to relaunch the gui every few minutes. It doesn't have to be included for the functionality to work correctly, but I thought the unit tests would be useful for others as well.

The real issue I can see is that currently the information in questslog.txt doesn't contain all the quest text from the quest log, just that which can be reasonably matched. Therefore we'd need to rebuild that data manually, probably involving another lookup file, and some other coding. That's quite a lot of extra steps for something which is already available in the relay browser.

This is a first draft, I think it would make more sense to get the step text from the quest log page instead of the data files in the final version. You're probably right that it would be too much work if these were the only features, but I have more ambitious features in mind and needed a place to put them.
 
Last edited:

lostcalpolydude

Developer
Staff member
My goal is to have something that completes steps of quests. The quests dropdown implements a few of these already, but I wanted something that changed dynamically with what quests were actually active.

I don't think I agree with that being a good goal. The leaflet makes sense since it's identical every run, and if you have everything then the tower is incredibly straightforward, but I probably wouldn't have even included the tavern quest. Most other quests are more complicated than that, stuff can change with each challenge path, and overall I don't think it's worth adding that complexity to constantly support.

Scripts are a better place for quest completion, in my mind.
 

lackita

New member
I don't think I agree with that being a good goal. The leaflet makes sense since it's identical every run, and if you have everything then the tower is incredibly straightforward, but I probably wouldn't have even included the tavern quest. Most other quests are more complicated than that, stuff can change with each challenge path, and overall I don't think it's worth adding that complexity to constantly support.

Scripts are a better place for quest completion, in my mind.

You're probably right the scripts would be better for the actual completion portion, but I find it cumbersome to have lots of scripts to sift through whenever I want to complete a quest. I wanted some way to filter the list of scripts down to only those relevant to the current situation.

Maybe a logical next step would be a way for scripts to register with a specific quest, making those scripts available in the manager. The step text probably isn't that valuable since it's available elsewhere, so I'd also remove that.
 

lostcalpolydude

Developer
Staff member
If the primary purpose of this is to have a way to figure out which script to call to automate a quest, then that sounds like a good task for a relay override script. The discussion can keep going, but for now I'm rejecting this feature.
 

Darzil

Developer
This is a first draft, I think it would make more sense to get the step text from the quest log page instead of the data files in the final version. You're probably right that it would be too much work if these were the only features, but I have more ambitious features in mind and needed a place to put them.
This would also be at odds with the design of Mafia. One of the main guiding principles of Mafia is to avoid KoL server hits wherever possible. Putting listeners on all the quest tracking preferences (and sub preferences) and hitting the quest log each time they change would be a lot of extra hits (and quite a number of them change mid-combat, so would fail, or need to be handled individually). You could get the quest log data (for updated quests) from the character pane in relay browser without extra KoL hits, but this would not be exposed in the api, so wouldn't update when automating. As the great relay script Guide shows, there are many things you want to consider that aren't quests, also.

This is also a HUGE piece of work to do well. The quests change frequently, challenge paths hit quarterly, the best tactics tend to change every few weeks, and tactics are massively dependant on what has happened (which drops, which timers due, which things you want to do together, etc). As such I cannot see it being something we'd want in core Mafia.

To see the sort of things that scripts can do, which would be a good direction to take this, I'd recommend looking at http://kolmafia.us/showthread.php?14784-Guide (which suggests at all times things you might want to think about), and http://kolmafia.us/showthread.php?4963-bumcheekcend-ash-A-zero-setup-semi-automated-ascension-script! (which automates much of ascension). Personally I use the former a lot, have never tried the latter.
 
Top