WoW-Pro Guides

WoW-Pro Guides

3M Downloads

Dailies

CodingDino opened this issue ยท 13 comments

commented

Working on this now.

So far, differences from WoW-Pro Leveling:

  • DOES pull completed quest database from server, but does not attempt to update it on the run. This is pulled purely to help check whether a quest chain is done so the user actually has access to the dailies.
  • Does not track completed QIDs (but still tracks what's in your log)
  • Does not handle prerequisite quests.
  • QID tag for Accept steps can have multiple entries, unlike in the Leveling module. This means a step completes once ANY of those entries has been accepted. Mainly for random dailies.
  • |O| tag is assumed for all non-A steps. Basically, if they don't have the quest in their log, the step won't show.
  • Level tags/steps removed
  • boat step removed
  • In the guide registration function, a guide name field is allowed in addition to zone name.
  • There is no "next GID"
  • There is no start/end level
  • I may add categories for these guides, such as Cataclysm Rep Dailies, Cataclysm Gold Dailies, Wrath Rep Dailies, BC Rep Dailies, etc.
  • If possible, will reset itself if it detects that you have 0/25 dailies done for the day.

I'll add to this list as I go. Please leave any feedback as comments here!

As I work on this, I should be able to smooth out some of the module/core interface issues and eventually write some sort of guide to help module writers as well. It's been hard doing this when I wasn't working on a module of my own.

commented

Agreed about the need to maintain the dailies in both places, but I think it will be worth it in the long run. As I fine tune the dailes for the rep guide, I will make sure I send the updates to you, as well as watch the dailies for any changes there.

I am really split on not resetting skipped quests or resetting them. Your logic sounds reasonable, but usuallly there are only 3-6 dailies. Having to recheck for a skip is probably not that big of deal. What comes to mind in my head over and over is the group quest in Argent Tournament where I would find a group 50% of the time to complete. The other half of the time I would skip it because I couldn't find a group. If I still had it, or got it again if abandon, I would have a chance to complete it the same day, the next time around, or the option to skip it again.

I'm not sure I would monitor the reset constantly to that it resets right when the server resets. Most rep goes across several zones. I would hate to be in one zone, then all of a sudden it tells me to start over. That could be a little confusing. What I am leaning towards is a tag, like "A", "C", or "T" that when reached resets the guide of completed quests. This would be the last statement and work like a note saying "end of Dailies". When it reached that point it would then check, and if the reset happened, reset the guide automatically and put you back to whatever quests could be done again. This would also help when you reached the end and come back the next day. It would load the guide, reach that point based on previous completed, and then do a reset and allow you start over. But I have been only paritally successful with this, and really could use your help since you know the code more than I do if this sounds like a reasonably soloution.

The closes I have come to doing a reset is running the statement GetQuestsCompleted(WowPro_Reputation_db.CompletedQIDs). But when I logged in this morning, it still had all my quests checked off (no reset). But when I went to another toon and came back, the guide had been reset and I had my dailies again. But this could be the placement of the statement. I have it before the statement WoWPro_ReputationDB.completedQIDs = WoWPro_ReputationDB.completedQIDs or {} for testing. Am I on track or am I really off the mark?

The good news is that I did manage to get the reputation guide working based on your code for the dailies and the new code you have for the core. Thank you for that. I don't think it will run with 2.1.1 though. I just have to fine tune the code a bit, but it should be ready soon as well.

commented

In terms of reseting skipped quests - I see what you are saying, will think on that.

In terms of reseting automatically - Agree with you for the rep guides. Dailies guides will almost certainly be centered on zone rather than faction and will be okay to reset automatically I think.

In terms of how to force a reset - you have half of it. The addon keeps track of quests completed (the QID table you reset in the code you mentioned), but it also keeps track of individual steps completed. You just need to clear those tables and then reload the guide using the LoadGuide() function. It should then automatically check your newly updated completed QID table and check off only the ones that need to be completed.

There will be lots of fine tuning needed, we'll make sure it gets done when I finally get this code pushed. I've encountered a very strange issue with it and am currently troubleshooting, hopefully will get done soon!

commented

Okay. I think I have this auto-reset thingy working now, but it needs testing. Obviously it's a little hard to test it seeing as you have to be online when dailies reset, so feedback would be helpful!

When the addon detects that dailies have been reset, it calls a quest QID query and once it receives the information, it clears the guide, re-populating it based on your completed quests from the post-reset query.

Currently it does not automatically reset skipped quests, but that can be changed later.

commented

I'll not be handling "skip step" logic in this either. Just manual completion if they want to do that. Most dailies aren't in chains, so this shouldn't be an issue.

commented

Yay! Feel free to bug me for anything about this.

commented

Part of the problem I' ve been having with the reputation, professions, and achievment module is that alot of the functionality of the leveling guide is hard coded into the core module. This prevents any other module from functioning correctly. So working that out will greatly help. If you like, I can send you what I've done for the reputation module and you can see where conflicts exist.

Guides may take you across several zones. I'm still partial to providing a zone tag to reach that point, and from that point on, that is your zone. Zone is then updated with the Z tag, and maintained from that point forward. That definately would of helped in the Highland guide.

The way I've handled random dailies in the past was making all the possible quests optional and placing them first. The last line would then be a note telling you to pick up the daily quest. The guide would automatically reset itself and open up just that quest line. I've haven't tested it yet, but with the way the leveling module works when you abandon a quest and backs up to that point, suggests to me that it would work the same way. Now you know my secret to that one :)

PRE tag is still necessary since you would need to check to make sure that the last quest was completed that opened up the dailies.

I'm not sure a reset is necessary since its automatically reset at midnight. To restate what I said in my email about this, I still feel that skip quests should be maintained as permanent values for that guide. The completed quest table should only be temporary values and only be pulled when you first log into that character and when you switch guides. The way the quests are set up now,is that all zones begin with one quest and all other quests are self contained within that zone. There is no reason why you can't have that one quest at the end on one guide and the same quest at the beginning of the next. That way if you have it in your quest log, it skips it. If you don't, your required to pick it up. That also helps if say someone is already a level 25 character and wants to start in Duskwood. Yes, I know this should be part of the leveling module discussion but I feel it holds true here as well. The guide would then reset each day, but still keep track of what you've completed based on what is being pulled from the server.

commented

I'm not at all sure what you mean but "it's automatically reset at midnight". Our guide doesn't ever reset currently unless you manually tell it to...

Apparently I've misplaced the email you referred to as well :( I fail! What you say about skipped quests is a very good point though. I like it! I will explain how I mean to implement that in a moment.

The PRE tag is still completely unnecessary. Just have a N step with a QID for the last quest that must be completed to unlock the dailies - you can then provide a bit more detail on what the user needs to do to unlock them (for example, for the Deepholm ones, simply refer them to the Deepholm leveling guide). There doesn't seem to be a reason to implement advanced quest chain logic here at all.

For the quest skipping - the user can set a quest as skipped. This step and it's related quests will remain skipped until the user manually resets the guide - they will not be reset when the guide resets itself based on a new day. That way a user can decide to skip a daily quest he or she hates.

For your zone logic - sorry, but I won't be changing this in the leveling module. It's easy to include |Z| tags and it's just not worth A) the effort and B) retraining all the guide authors who are used to the current functionality and C) reprogramming the recorder. If you'd like to change this functionality for any modules you are working on, you are welcome to do so.

I also think maybe you misunderstand what I mean by module? I know some things are still hard-coded into the core, but MOST things that are clearly module-specific have in fact been moved to the Leveling module. Perhaps you can be more specific about what you mean here? Sending me what you've done so far would be helpful.

Also, I wanted to let you know that another user, dunedon, was interested in working on a professions module. I let him know you were interested in originally and asked him to check here regarding it, but I'm not sure if he ever did that. Since you seem to be focusing on the reputation module, perhaps he could take over the profession one?

Finally, I'm curious how the reputation and dailies module will interact. I'm thinking perhaps the rep module should automatically load dailies module guides when appropriate? In terms of guide organization, I think having some "daily" guides in the rep module and others (non-rep dailies) in the "daily" module would be very confusing for readers. So I'm thinking maybe having the rep module cover everything a user can do to gain rep (including non-daily things) and then automatically loading the daily module guide when appropriate seems the best method for dealing with it. Any other ideas about this would be welcome, and if you've written any "daily" guides already it would be awesome if I could use them to test the module I'm working on.

Sorry for the HUG wall of text, just getting ideas down!

commented

Was referring to the WOW server. The quest database from WOW resets at midnight. All the daily quests are marked as incomplete again and will register available when you do a query.

I'm ok with doing the zone that way. It might be something I can work on in the rep module. But I think its pretty much contained in the core, so it might be hard to change that. If anything, can we get rid of that annoying little message saying "zone not found, using current" :).... if anyting, I don't think end users really care and its mainly for the guide designers to make sure they are correct. I maybe wrong about that, but that our my thoughts on why it is there.

I think once any module is written, it will probably be generic enough to port into anything else. I will send you my code showing what I have done so far on rep. I can display the module, display the guides, but it won't allow me to pick any. It may be just a flaw in my code.

I haven't really looked at the rep since 4.0.3 came out so I am not sure what changes where made. Prior, I had every quest in the file that gave you rep including the dailies. When you load it each day, only the dailies would show up to be completed if everything else was done. They usually resided at the end of the file since the dailies have a different QID from the regular ones with the same name. Regular quests had to be completed first before you even got to the dailies.

commented

Ah, I see what you mean now by resetting :) The only weird case is when the user is online when the dailies reset, so some way to detect that and re-pull the database would be nice.

You are 100% correct about the zone not found thing. I was basically copying that message from Tour Guide since it had a similar one, but we do have a debugmode and I can make that message only display when the addon is in debugmode.

I like your thoughts on how to do the rep stuff, sounds good! We may end up with duplicates in both modules, then, but I think that's okay.

I'm working on some code to simplify the guide list for modules, we'll see how it goes. It won't be quite as full-featured as the leveling guide list, but I also don't think it needs to be.

commented

"I'm ok with doing the zone that way. It might be something I can work on in the rep module. But I think its pretty much contained in the core, so it might be hard to change that."
Unless I'm missed something, I don't think it's contained in the core: the mapping functions in WoWPro first tries to use the zone string associated with WoWPro.zone[step] or equivalent. While that resides on the core's table, it's given by the module (like WoWPro.Leveling) functions (Parser, etc). So, it shouldnt be difficult to change that. Let me know if I'm making sense to you.

About the 'zone not found, using current', I agree that we can move that to the debugmode. But guide writers should be aware that this is an actual error with the guide: it means mapping was not able to find the correct zone either from the |Z| tag or from the zone guide name. So if a player opens the faulty guide in a zone different than what he's currently, it's going to be confusing.

commented

Perhaps the answer is to have an error that turns on when the user has the recorder loaded? Or a toggle-able error message? Dunno.

Your first paragraph is spot on from what I understand, so it really should be alterable in the module - BUT - I don't think we should do that differently on a module-by-module basis because guide authors moving from one module to another may not understand the differences. Still, it's worth discussing.

commented

I'm not sure yet how the rep and the daily guide will function together, but I don't see any issues. The rep guide is basically a specific slim down leveling guide. The daily guide is just a slim down version of the rep guide. In some instances, it might be strange to list it in the dailies. Wyrmrest Accord for instance only has 3 dailies. I have always included the dailies as part of my rep guide. I do this because Blizzard, in their infinite wisdom in some cases, made the QID's the same for both leveling and daily's. It just stays with the flow of the guide. Other instances, like the ones in Deepholm, have different QID's for the dailies and only opens up at the end of all the quests. These easily will just flow at the end of the either the rep guide or the leveling guide.

I thought about linking to the dailies from the rep, but I see several problems with this. First, it requires that they have the daily module. That's fine if you are offereing all the modules as part of the core download and not as needed. The next problem is switching the guideID from Rep to Daily so that it can pick up the daily guide. Finally, the columns may be different from the daily guide and the rep guide, so it would probably need to call the module itself to open up the daily.

But the way I envision the 3 workings (leveling, reputation, and daily), I don't see any issues. You level until you reach a certain level and move on to the next. You may complete the guide or not. But now you want to work on reputation. So you load that guide and pick up any quests that might of been skipped in the leveling guide or you can just work on rep alone and not worry about leveling (the flow will be the same). When you complete the rep guide, you can load the guide again to pick up the dailies or you can just say just show me what the dailies are and just load the daily guide.

Does this make sense or did you envision something else?

commented

I think it will be fine as you've described it. I would say the daily guides almost aren't needed because they will, generally, be part of the rep module. But in the past there have been some dailies that aren't involved with rep (Icecrown dailies come to mind), so having a separate module will not hurt anything I think.

There are some steps we may need to take to make sure both versions of a guide are maintained, some features we can make sure are added to both modules.

For example, I still think that adding an automatic reset when dailies are reset would be helpful for people who happen to play around the time that dailies reset. The guide would automatically catch up based on their new completed quest table that it will re-draw from Blizzard, and it will automatically check the quests in their log, and reset everything else. Any manually skipped quests will NOT be reset during this auto-reset, only when the user manually resets the guide, so if they want to skip a quest every day, they don't have to tell it every day to do that. Let me know if there are issues with this feature or if you have other things you'd like to add to it, and we can work it into both modules.

I should have a playable version of the dailies module up later this week if all goes as planned.