Initial version submitted for feedback.
Added the Lunar Festival quests and NPCs.
Made it so Lunar Festival quests can be marked as completed when they complete, even though they never appear in the quest log.
Updated some quests, NPCs, and some basic localizations.
Added the Love is in the Air quests and NPCs.
Marked the Darkmoon Faire NPCs as such.
Marked the Lunar Festival quests as yearly quests.
Updated some quests, NPCs and zones.
Introduced the concept of alias NPCs which are used to specify locations of an NPC when in a different phase, etc.
Made the Darkmoon Faire NPC locations returned be based on the current location of the Darkmoon Faire.
Removed the QUEST_AUTOCOMPLETE event handling since it seems to be unneeded.
Added a notification system that allows someone using the library to register to receive notifications upon quest acceptance and completion.
Set up a system to track whether resettable quests (daily, weekly, yearly) have ever been completed because Blizzard's list of quests completed doe not include these after a quest reset (which happens daily, weekly, etc.).
Corrected a problem where resettable quests were not being recorded properly (which was causing LUA errors).
Augmented the routine for checking level to include the ability to check for a maximum level as well as minimum.
Added a targetLevel parameter to filtering quests.
Added more failure information for various types of failures so better decisions can be made.
Routines that provide location information now can take more parameters to refine the returned locations.
Marked quests for Day of the Dead, Noblegarden and Pilgrim's Bounty.
Cleaned up various quest and NPC information.
Quest titles that differ from the internal database are recorded.
Repeatable quests are also recorded in the special list of "resettable" quests.
Did a little optimization and added some options to force garbage collection at a cost in response time.
Added a routine that provides the Riding skill level.
Corrected some problems with ProfessionExceeds().
Added routines that support determining whether NPCs that are only available in heroic instances are "available".
Corrected a problem where the questResetTime variable was misspelled.
Made it so the SpecialQuests are cleaned out of the GrailDatabase properly.
Switched City of Ironforge to Ironforge to match GetRealZoneText() return value.
Added a table that contains the quests per zone to allow QuestsInZone() to return the cached information immediately.
Made it so a callback can be registered for quest abandoning.
Cleaned up various quest and NPC information.
Corrected a problem where a mismatch in title would cause a LUA error when attempting to record bad quest data.
Made it so the GrailDatabase gets its NewQuests and NewNPCs cleaned out properly.
Added a QuestName function so the name can be gotten without need for internal data structure knowledge.
Added Quest and NPC localizations for French, German, Russian and Spanish.
Changed hooking quest completing to actually get the current script associated instead of the global name for the script.
Corrected some problems where LUA errors would occur if the internal database did not know about a quest.
Added support for a quest to have a prerequisite quest in the quest log and not complete.
Added support for automatic quests to indicate the NPC that needs to be killed to initiate quest acceptance.
Added support for automatic quests that are obtained from entering a zone.
Added a zoneMapping table that maps zone IDs returned by GetCurrentMapAreaID() to those used internally.
Made it so Status can ignore prerequisite requirements of a quest.
Made LocationQuest also return the NPC ID as well as the other information it returns.
Restructured the posting of the abandon notification to be about 0.75 seconds after the button click because it seems the quest log does not actually remove it immediately.
Added capability to handle indirect items where another NPC drops the one that starts the quest. The NPC name returned is an NPC that drops the item followed by the item name in parentheses.
Added more mappings from GetCurrentMapAreaID().
Corrected a problem where some parameter names in Status() were not the same as in the implementation, thereby ignoring their values.
Added a QuestLevel() function.
MeetsRequirementLevel() now returns the levels used to determine success.
Added some quest interrogation routines IsEscort(), IsDungeon(), IsRaid(), IsPVP(), IsGroup() and IsHeroic().
Added a QuestsInMap() function that uses a map ID.
Added a convenience function SingleMapLocationQuest().
Updated some NPC locations.
Updated some Quest prerequisites and start adding raw level information to some quests.
Added an NPCName() function.
Added an IsTooltipNPC() which indicates what type of NPC we are dealing with for those that modify tooltips.
Added an AvailableBreadcrumbs() which returns breadcrumb quests available to be gotten for the specified quest.
Corrected an issue where ensuring all prerequisite quests were confirmed could have been inaccurate.
Added AncestorStatus() and made Status() call it so prerequisite quests are checked to ensure they can be completed otherwise the Status will be false. For example, this makes an entire quest chain unavailable if the race does not permit the first quest to be accepted.
Debugging has now been turned off by default.
A new feature called tracking has been provided to keep a little history of basic quest activity, but is off by default.
Changed the posting of abandon notifications to be about 1.0 seconds after the button click since there were times when 0.75 seconds was not enough, and made it a variable.
Added some clearing out of BadQuestData that has been added to the database.
Made clearing out of NewQuest data more robust.
Changed to have NPC locations use map area IDs.
Removed the zoneMapping and zones tables as part of the move to using map area IDs for all locations.
Made the quest index per map area computed at runtime for the latest most accurate data.
Made it so marking a quest complete only does so if the quest is not already complete. This is just a precaution to handle an edge case.
Added the "/grail backup" and "/grail compare" commands to help find quest IDs for quests that do not enter the quest log.
Made it so special quests that never appear in the quest log can be recorded as complete when there is more than one quest with the same name as long as the NPC ID is different.
Made it so NPC locations return the dungeon level and the alias map ID.
Added a lot of quest/NPC information for the Midsummer Fire Festival.
Updated quests and NPCs for Firelands.
Did a bunch of localization.