Daily Grind
What the heck does this addon do?
Daily Grind auto-accepts/completes dailies after you've encountered them at least once by keeping a history. This history is kept across all characters, so even your alts will gain the benefit of your main's questing.
Daily Grind includes features like:
- Pre-selecting reward items for quests that offer a choice
- Ignoring specific quests (wildcards * are supported)
- Ignoring all quests on an NPC
- Easily suspending the addon by holding down a key (CTRL by default)
- Even automating dailies you haven't seen before, if you so choose (handy for alts)
Type /dailygrind or /dg to bring up configuration and help.
Aren't there lots of quest addons? Why write another one?
For months, I'd been looking for an addon that would:
- Automatically accept and turn in only daily quests
- Allow me to read daily quests the first time I encountered them
- Be as low-maintenance as possible
- Stay out of my way
As I hadn't found an addon that met all of these criteria, I decided to write my own. Enter: Daily Grind
Cool. So how does it work?
Daily Grind starts out dumb. Every time you complete a daily, it records the name of that daily in a quest history. The next time you encounter that daily, Daily Grind auto-accepts and auto-completes it for you. I took this approach for two reasons:
- User experience. The first time you encounter a new quest, you (generally) want to read the text of that quest at least once so you know what you're doing. After that, you already know what to do and just want to grab the quest and get right to it.
- Drastically reduced maintenance. When Blizzard adds new dailies to the game, you don't have to wait for updates for Daily Grind to continue to work the way it always has; it will just go on adding new dailies to your list as you encounter them.
By clicking just once on an NPC, Daily Grind will attempt to accept and complete all daily quests on that NPC at once. The addon will even auto-accept daily quests shared by other players. If your log is full, it will stop trying to accept quests until your log has room.
Note that, by "dailies," I also mean weekly, holiday, and other repeatable quests; basically anything where the quest icon is a blue exclamation point.
Neat! What else can it do?
Modifier-Key Suspension
Holding the CTRL (default) key while speaking to an NPC will suspend Daily Grind's automation features until you release the key. You may also change this key to ALT or SHIFT in the options panel.
Auto-Accept ALL Dailies
This option was added in case you wish to skip even the first reading of a daily quest and just get right to it. Quests will still be added to your history, so if you disable this option later, you won't have to click your way through quests you've already done.
Reward List
The Reward List is for dailies that offer a choice of multiple rewards. You may add the names of your preferred items to this list in the configuration screen, and when you encounter a quest with multiple reward choices (such as the Argent Tournament favorite, "Threat From Above"), Daily Grind will look through your Reward List for an item that matches one of the available rewards and select it. If more than one match is found, it will inform you which items match and let you choose manually. Item names must have exact punctuation but are not case-sensitive. You may also use * as a wildcard.
Blacklisting Quests
If you want to ignore certain quests for whatever reason, you may add them to the Blacklist. You may add quest names either through the configuration screen or by command line. Quest titles must have exact punctuation but are not case-sensitive. You may also use * as a wildcard.
Blacklisting NPCs
You can also ignore all daily quests an NPC might give out. This is helpful if the set of quests on a given NPC varies from day to day. You may add NPC names either through the configuration screen or by command line. NPC names must have exact punctuation but are not case-sensitive. You may also use * as a wildcard.
Keybinding
Keys can be bound in the normal keybinding interface for toggling the enabled/disabled state of DailyGrind. This is handy for quickly turning the automation features on or off, and any quests completed while automation is disabled will still be added to your history.
Wow. Daily Grind rules. Deld, you're the best.
I know.
GetQuestLogIndexByID was moved to be a part of the QuestLog namespace and renamed to GetLogIndexForQuestID.
So, to fix the error mentioned by @Takkero, open DailyGrind/DailyGrind.lua and replace the one instance of GetQuestLogIndexByID with C_QuestLog.GetLogIndexForQuestID. There's another related error in this same file. A similar issue with the deprecated function GetQuestLogTitle. This was also moved to the QuestLog namespace and was renamed GetInfo.
So, go to line 130 and replace this:
With this:
And go to line 141 and replace these two lines:
With these two lines:
In reply to KOVIKO:
Uploaded the fixed file to Github.
Fix for WoW Addon "Daily Grind" v3.0.7 (github.com)
Your saved variable table names "QuestHistory" and "Settings" are too basic. The Settings table specifically is interfering with another addon, which I have also chastised. Looking at your code, you even changed from your previous tables that had "DailyGrind" in the name. WHY?! If you want an easier name to deal with inside your code, just use local desiredName = uniqueGlobalNameThatDoesntScrewUpOtherCode at the top of your code. Table variables like this point to the same table object. Changing anything in desiredName also changes in the unique name.
17x DailyGrind\DailyGrind-3.0.7.lua:130: attempt to call global 'GetQuestLogIndexByID' (a nil value)
[string "@DailyGrind\DailyGrind-3.0.7.lua"]:130: in function `?'
[string "@Ace3\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:119: in function <...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@Ace3\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:29: in function <...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@Ace3\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:64: in function `Fire'
[string "@Ace3\AceEvent-3.0\AceEvent-3.0-4.lua"]:120: in function <Ace3\AceEvent-3.0\AceEvent-3.0.lua:119>
Hey, it's Deldinor checking in. Just wanted to say thanks for keeping this thing going, Rubio!
Will this be getting an updating for SL or the Pre Patch? Still love this addon for running old content
In reply to MasonDerulo:
Testing fixes now, should be releasing an update RealSoonNow™.Release 3.0.7 for Shadowlands is now posted.
If any issues come up with the update, please let me know!
In reply to RubioTwitch:
Excellent thanks, working perfectly for me so far :)
One thing i would like from this mod is a map marker, perhaps just a blue dot were the daily is located. I hate trying to remember where the NPCs are. Even better would be a locator that shows up on the map but after quest is done for the day it vanishes, but resets when quest is available again. It just occurred to me that this is my first day using your mod, which means I am adding these quests for the first time and completing them which means if what I want already happens, I will not see them until tomorrow. So if it is already a thing then awesome, if not :D it should be, and they should show up on the world map as well as the mini map.
13x DailyGrind\Common.lua:14: attempt to index local 'questTitle' (a number value)
DailyGrind\Common.lua:14: in function `SanitizeQuestTitle'
DailyGrind\DailyGrind-3.0.5.lua:209: in function `?'
...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0-7.lua:119: in function <...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[C]: ?
...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0-7.lua:29: in function <...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0-7.lua:64: in function `Fire'
Ace3\AceEvent-3.0\AceEvent-3.0-4.lua:120: in function <Ace3\AceEvent-3.0\AceEvent-3.0.lua:119>
Apologies, everyone, for this addon being neglected these past few months.
I had fixed the issues with it when 8.x hit, but forgot Deldinor granted me Maintainer access to the project, so they never went further than that.
Zenzoroaster sent me a message directly which prompted me to look back here and see that there'd never been an update for BfA (thanks for the wakeup call!).
I've created a new release with the xml bindings fixes, and updated the TOC for 8.1. If there are any other issues, please let me know.
25x Binding header DAILYGRIND is defined more than once in DailyGrind\Bindings.xml
In reply to sgkdnay:
In reply to Deldinor:
In reply to sgkdnay:
Rubio, we need you again (and no insult intended toward Deldinor; hope you are doing well) ;-)
In reply to Zenzoroaster:
In reply to Deldinor:
I think blacklists should be account-wide instead of per character. Just spent a ton of much needed order resources on an alt buying seals I don't need.