Download
(6MB)
Download
Updated: 06-30-21 04:20 PM
Compatibility:
Chains of Domination (9.1.0)
The Burning Crusade Classic (2.5.1)
Shadowlands patch (9.0.5)
Classic Patch (1.13.7)
Updated:06-30-21 04:20 PM
Created:01-31-12 07:27 PM
Downloads:104,869
Favorites:151
MD5:

Grail  Popular! (More than 5000 hits)

Version: 116
by: Nimhfree [More]

Grail is a library of quest information designed to provide that quest information to other addons to make their decision processing easier. For example, an addon like EveryQuest or TourGuide would be able to make use of Grail's knowledge to determine if a quest has been completed, whether the character can obtain a quest, what reasons the character cannot obtain a quest (lack of level, wrong race, wrong class, not enough reputation, has not completed a prerequisite quest, etc.), the location to obtain or turn in a quest, the amount of reputation awarded from completing a quest, whether a quest counts towards an achievement, etc.

Starting with version 029, Grail's achievement and reputation gained information are separated into two loadable on demand addons included in the package. Starting with version 049, Grail includes a loadable on demand addon that records when a quest is complete, and how many times if it is repeatable.

Please create a ticket if you find problems.


Making Grail better

As a user of Grail plays WoW, Grail's internal database is checked as a player accepts and turns in quests. If Grail has incorrect data, it will record the actual data the player has found in the Grail saved variables file. This file can be used to update Grail for future releases if you choose to provide this information (in a ticket for example). As the Grail database becomes more accurate, the Grail saved variables file will have any previously found discrepencies removed. The Grail saved variables file can be found in your WoW directory/WTF/Account/account name/SavedVariables directory with the name Grail.lua.

If you are using WoW in a locale other than enUS, you can help provide up-to-date localized NPC names by issuing the slash command /grail verifynpcs at some point while playing. This will record into the Grail saved variables file the localized names of NPCs you have encountered for which Grail does not have the proper name.

Using the slash command /grail help lists all the options Grail has.

Version 116
Switches to a unified addon for all of Blizzard's releases.
Augments _CovenantRenownMeetsOrExceeds to accept covenant 0 to represent the currrently active covenant, used to indicate that the renown level is at a specific level independent of covenant.
Changed retail interface to 90100.

Version 109
Updates some Classic NPC information.
Works around a problem in Retail where world quests can appear in Blizzard's API in different zones.
Corrects the determination of Darkmoon Faire in Classic.
Changes quest level storage and processing.
Optimizes NPC location processing to cache values.

Version 108
* *Updates Classic Wetlands and Duskwood NPC information.
* *Updates Retail horror quest information.
* *Works around a problem learning world quests where the mapId is not defined.
* *Corrects the Classic holiday code for Midsummer Fire Festival.
* *Adds support for detecting Darkmoon Faire in Classic.
* *Works around a problem where a holiday is not known.
* *Corrects issue where CurrentDateTime() did not return weekday in Classic.
* *Adds support for phase code 0000 in Classic for Darkmoon Faire location.* See _PhaseMatches() comments for specifics.
* *Updates some Retail quest information.
* *Corrects a Lua issue with localized French Classic quest names.
* *Adds protection to ensure processing of NPCs does not occur if NPCs are not loaded.
* *Adds protection to ensure loremaster quests can be handled if addons load out of order.
* *Adds protection to ensure C_Reputation is not accessed on Classic.
* *Corrects an improper prerequisite associated with the Classic quest "Filling the Soul Gem".
* *Adds more Classic holiday quests and NPCs.

Version 107
Updates some quest/NPC information.
Works around a problem where learned quest information could cause Lua strsplit errors.
Changes interface to 80300.
Adds support for threat quests.
Adds support for Heart of Azeroth level requirements.

Version 106
Updates some quest/NPC information.
Corrects a problem where lack of quests in a zone causes a Lua issue when quests in the log turnin in that zone.

Version 105
Fixes problem where AQ quests cause Lua error in non-English locales.
Updates some quest/NPC information.

Version 104
Updates some quest/NPC information.
Fixes the implementation of CurrentDateTime() because the month and day were reversed.
Corrects CelebratingHoliday() to behave and perform better.
Sets faction obtainers to account for quest giver faction.
Corrects IsNPCAvailable() to properly use holiday markers for NPCs.
Augments QuestsInMap() to allow quests in the log whose turn in is in the map to be included.

Version 103
Updates some quest/NPC information.
Removes reimplementation of GetMapNameByID().
Removes call to load Blizzard_ArtifactUI since ElvUI has problems.
Makes it so holiday codes for quests do not cause Lua errors in Classic, though still do not work as there is no Classic calendar.
Adds support for Mechagnome and Vulpera races.
Adds support for the "/grail eraseAndReloadCompletedQuests" slash command.

Version 102
Updates some quest/NPC information.
Adds the NPCComment() function to give access to NPC comments.
Fixes a Lua error associated with quests requiring garrison buildings.

Version 101
Updates some quest/NPC information.
Changes the code that detects group quests as Hogger in Classic returned a string vice a number.
Changes IsPrimed() to no longer need the calendar to be checked in Classic.
Forces Classic to query for completed quests at startup because calendar processing is not done (where it was done as a side effect).
Creates an implementation of ProfessionExceeds() that works in Classic.

Version 100
Updates some quest/NPC information.
Enables support for the two latest Allied races.
Updates Interface in TOC to 80200.
Starts to add support for newly added zones.
Transforms GrailDatabase to use Grail.environment so _retail_ differs from _ptr_ differs from _classic_.
Augments the mapping system because Blizzard API is a little wonky and does not report zones like Teldrassil in Kalimdor like one would expect.
Adds support for quests to be marked only available during a WoW Anniversay event.

Version 099
Updates some quest/NPC information.
Corrects a problem where cleaning quest data could result in a Lua error.

Version 098
Updates some quest/NPC information.
Adds Silithus to zones for quest looting.
Names treasure quests based on the item looted.
Updates map areas for Loremaster quests.

Version 097
Updates some quest/NPC information.
Removes map setting code as it is not needed.
Checks whether locations have x and y coordinates before comparing.
Checks whether Blizzard map returns are rational before asking for player coordinates.
Ignores checking Thunder Isle for phasing for the moment.

Version 096
Updates some quest/NPC information.
Handles Blizzard removing GetCurrentMapDungeonLevel() and GetCurrentMapAreaID().
Achievements are now indexed by the continent mapID instead of a one-up number.
The "continent" constants are removed from Grail as they were not used internally and serve no scalable purpose.
Continent information now uses Blizzard's new API for maps.
Updates use of UnitAura() to support Blizzard's changes for Battle for Azeroth.
Reimplements GetMapNameByID() because Blizzard removed it for Battle for Azeroth.
Starts reimplementing GetPlayerMapPosition() because Blizzard removes it for Battle for Azeroth.
Handles Blizzard's change of calendar APIs.

Version 095
Update some quest/NPC information, but primarily the required level of thousands of quests due to Blizzard changing them.

Version 094
Corrects the problem where BloodElf was being overritten by Nightborne.

Version 093
Updates some quest/NPC information.
Adds the ability to have class hall missions available as prerequisites.
Adds support for Allied races.
Changes CodeObtainers() to no longer return race information, which is now returned in a similar manner with CodeObtainersRace().

Version 092
Updates some quest/NPC information.
Corrects a problem where Loremaster quests were not listed correctly when there is more than one achievement in the same zone.
Corrects the problem where paragon faction levels were not reported properly after more than one reward achieved.

Version 091
Updates some quest/NPC information.
Updates the Interface to 70300.
Adds Argus zones to treasure looting.

Version 090
Updates some quest/NPC information.
Supports quests requiring paragon reputations.
Supports the Argus continent being introduced in 7.3.

Version 089
Corrects problem where garrison NPC building prerequisites was causing a Lua error.
Updates some quest/NPC information.

Version 088
Changes the Interface to 70200
Updates some quest/NPC information for Legion.
Adds the ability to handle artifact levels which are required for some newer quests.

Version 087
Updates some quest/NPC information for Legion.
Corrects problem where GrailDatabase.learned was not being initialized before accessed.
Uses Blizzard's new calendar API present in 7.2.

Version 086
Updates some quest/NPC information for Legion.
Adds capability to know when withering is happening with NPCs.

Version 085
Corrects problem where map was reseting to Eye of Azshara.
Updates some quest/NPC information for Legion.

Version 084
Adds the ability to know when world quests are available.
Updates some quest/NPC information for Legion, especially world quests.

Version 083
Updates some quest/NPC information for Legion.

Version 082
Updates some quest/NPC information for Legion.
Turns reputation recording system back on as Blizzard API seems to be working properly again.
Splits localized quest names into loadable addons.

Version 081
Updates some quest/NPC information for Legion.
Adds factions for Legion.
Fixes the problem with strsplit error that can happen when first looting.

Version 080
Corrects a problem where learning a quest causes an error if nothing else already learned.
Updates some quest/NPC information for Legion.

Version 079
Updates some quest/NPC information, especially for Legion.
Corrects use of C_Garrison.GetGarrisonInfo() for Legion as it has changed.
Provides for prerequisites to require a specific player class.
Fixes an issue where Blizzard changed the C_Garrison.GetBuildings() API not in Legion beta, but in the live release based on it.
Changes the Interface to 70000.

Version 078
Updates some quest/NPC information, especially for Legion.
Corrects Legion detection since release version is inadequate with the latest update Blizzard made to WoD live.

Version 077
Updates some quest/NPC information.
Adds the ability to support required NPCs working in garrison buildings.

Version 076
Updates some quest/NPC information.
Corrects the problem where the map location is lost on UI reload.

Version 075
Updates some quest/NPC information.
Adds support for bodyguard levels.
Adds support for Adventure Guide quests using the fake NPC ID 1, also using the fake map ID 1.
Corrects the implementation of _PhaseMatches() to properly note Frostwall level.
Adds support for events and more accurate holiday starts/stops.

Version 074
Updates some quest/NPC information.
Adds IsPetBattle() API.
Adds the ability to have more than one X code requirement.
Corrects the implementation of AchievementComplete().
Implements some variations on some prerequisite codes.

Version 073
Updates some quest/NPC information.
Fixes the issue where the wrong API MeetsRequirementControl was being used.

Version 072
Updates some quest/NPC information.

Version 071
Updates some quest/NPC information.
Adds new prerequisite code 'w' for group complete/turn in.
Adds the ability to record quest reward information.

Version 070
Updates some quest/NPC information.

Version 069
Updates some quest/NPC information.
Adds the ability to mark quests as bonus objective, rare mob and treasure.
Changes the Interface to 60200.

Version 068
Updates some quest/NPC information.
Adds ability to handle garrison building requirements for quests.
Adds ability to have level requirement for quest that differs from what Blizzard marks as their quest minimum level.

Version 067
Updates some quest/NPC information.
Adds ability to indicate a quest rewards a follower.

Version 066
Updates some quest/NPC information.
Adds function FactionAvailable() to allow users to determine whether the faction is available for the player.

Version 065
Updates some quest/NPC information.
Corrects a problem where First Aid quests were not being put into their own "zone" properly.
Adds the ability to complete quests when gossiping with an NPC.
Changes internal processing of qualified NPCs to stop evaluating at the first match (allows Fiona's Caravan locations to be accurate).
Changes use of GetQuestLogTitle(), and a lot more Blizzard API to handle WoD changes.
Corrects the problem where tracking quest acceptance, abandoning and completion was not set up properly based on saved preferences.
Splits out NPC names into separate localized files because Blizzard can no longer handle them in one.
Changes the Interface to 60000.

Version 064
Updates some quest/NPC information.
Corrects prerequisite evaluation when analyzing more than one path that have different results (like Alliance vs Horde both leading to the same quest).
Speeds up prerequisite tree analysis.

Version 063
Updates some quest/NPC information.
Unified the reputation requirements into the prerequisite codes.
Allows A: and T: codes to work in conjuction (additive) with the faction-specific versions.
Allows AZ: codes to have more than one map area.

Version 062
Corrects a problem where quests with First Aid prerequisites would cause a Lua error.

Version 061
Updates some quest/NPC information.
Added the ability for prerequisite evaluation to only check profession requirements.
Corrected the evaluation of ancestor failures to properly propagate past the first level of quest failure.

Version 060
Updates some quest/NPC information.
Updates the issue recording system to provide a little more accurate information to make processing saved variables files easier.

Version 059
Caches the results obtained from ItemPresent() to make quest status updates faster, invalidating the cache as appropriate.
Updates some quest/NPC information.
Changes the NPC IDs used to represent spells that summon pets to remove a conflict with actual items.
Changes some of the internal structures used to save some memory.
Corrects an issue where the Loremaster quest data for Pandaria was not populating an internal structure properly (causing Loremaster not to display map pins).
Updates _QuestsInLog() to work better when various headings are closed in the Blizzard quest log.

Version 058
Augments ClassificationOfQuestCode() to return 'K' for weekly quests.
Updates some quest/NPC information.
Makes handling LOOT_CLOSED not be so noisy with chat spam.
Makes processing the UNIT_QUEST_LOG_CHANGED event delayed by 0.5 seconds to allow walking through the Blizzard quest log using GetQuestLogTitle() to work better.

Version 057
Corrects some issues stemming from new repuation information.
Adds some localizations of quest/NPC names.

Version 056
Updates some quest/NPC information.
Fixes a variable leak that causes problems determining prerequisite information.

Version 055
Updates some quest/NPC information.
Fixes an infinite loop issue when evaluating data in the Valley of the Four Winds.
Fixes a Lua issue that manifests when Dugi guides are loaded, because Grail was incorrectly using a variable that Dugi guides leaks into the global namespace.
Caches the results obtained from _QuestsInLog() to make quest status updates faster, invalidating the cache as appropriate.
Fixes a rare error caused when cleaning the database of reputation data evident by an "unfinished capture" error message.
Adds the ability to treat the chests on the Timeless Isle as quests.
Adds the slash command "/grail loot" to control whether the LOOT_CLOSED event is monitored as that is used to handle Timeless Isle chests.
Makes persistent the settings for the slash commands "/grail tracking" and "/grail debug".
Makes CanAcceptQuest() not return true if the quest is obsolete or pending.

Version 054
Updates some quest/NPC information.
Incorporates prereqisite population API originally written in Wholly.
Fills out the Pandaria "loremaster" achievements to include all the prerequisite quests for each sub achievement quest.

Version 053
Updates some quest/NPC information.
Corrects an error that would cause an infinite loop in evaluating data in Ashenvale for quest 31815, Zonya the Sadist.

Version 052
Updates some quest/NPC information.
Adds some Wrathion achievements.
Moves some achievements into continents that are a little more logical.
Separates some achievements to give a little finer-grain control.
Updates some zhCN localizations.

Version 051
Adds Midsummer quests for Pandaria.
Updates some quest/NPC information not associated with Midsummer.
Changes _CleanDatabase() to better handle NPCs that have prerequisites.
Corrects a problem where questReputations was not initialized when reputation data was not loaded.
Adds the ability to have an equipped iLvl be used as a prerequisite.

Version 050
Corrects a problem with QuestPrerequisites() and nil data.

Version 049
Changes the Interface to 50300 for the 5.3.0 Blizzard release.
Updates some quest/NPC information, primarily with the Isle of Thunder.
Adds a new loadable addon, Grail-When, that records when quests are completed.
Adds a flag to QuestPrerequisites(), allowing the lack of flag to cause the behavior to return to what it was previously, and with the flag the newer behavior.

Version 048
Makes it so choosing PvE or PvP for the day on Isle of Thunder is handled well.
Adds IsQuestObsolete() and IsQuestPending() which use the new Z and E quests codes that can be present. If either returns true, the quest is not available in the current Blizzard client.
Adds support for the new way reputation information is being stored.
Converts prerequisite information storage to no longer use tables, saving about 1.0 MB of space.

Version 047
Updates some quest/NPC information, primarily with the Isle of Thunder.
Adds the basics for the quests added in the 5.3.0 PTR release 16758.
Events in combat are forced to be delayed, but the user can still override.
Changes the internal design of the NPCs to save about 0.6 MB of space.

Version 046
Updates some quest/NPC information.
Speeds up the CodesWithPrefix() routine provided by rowaasr13. This reduces the chance of running into an issue when teleporting into combat.
Adds F code prerequisites which indicate a faction requirement. Demonstrate this with two Work Order: quests, but will be used primarily for "phased" NPC prerequisites, whose architecture is starting to be implemented.
Updates some Traditional Chinese localizations.

Version 045
Updates to Isle of Thunder King/Isle of Giants quests from 5.2 PTR.
Updates some Traditional Chinese localizations.
Updates some quest/NPC information.
Updates the technique where a quest is invalidated to properly include not being able to fulfill all prerequisites that include groups.
Puts quests whose start location does not map directly to a specific zone into their own "Other" map area.
Augments the API that returns NPC locations to include created and mailbox flags.

Version 044
Removes the Grail-Zones.lua file since the names are now gotten from the runtime.
Puts in support for "/grail events" allowing control over processing of some Blizzard events received while in combat until after combat.
Updates some quest/NPC information for Operation: Shieldwall.
Removes the Grail.xml and rewrites the startup to account for its lack.
Adds very basic quest information for 5.2 PTR quests from 2013-01-02.
Removes the quests on Yojamba Isle since there are no NPCs there.
Updates some Netherstorm quests for Aldor/Scryers information.
Updates some quest localizations for Simplified Chinese.

Version 043
Corrects the prerequisites for the Chi-Ji champion dailies.
Updates the Shado-Pan dailies' NPCs.
Updates some quest/NPC information for Jade Forest, Kun-Lai Summit, Durotar and the dailies available in 5.1.
Updates the TOC to support interface 50100.

Version 042
Corrects an initialization problem that would cause a Lua error if dailyQuests were not gotten before evaluated.

Version 041
Adds support for quests having prerequisites of having ever experienced a buff.
Changes the internal representation of NPC information to separate the NPC names to make the data more "normal".
Augments the way the reputationLevelMapping table provides information so it can provide specific numeric values over the minimum reputation.
Adds the ability to have quests grouped so able to invalidate groups based on daily counts, or make prerequisites of a number of quests from a group.
Updates some quest/NPC information for Tillers, Golden Lotus, Order of the Cloud Serpent, Shado-Pan, August Celestials, Anglers and Klaxxi dailies.
Adds very basic quest information for 5.1 PTR quests from 2012-10-25.
Adds the ability to invalidate a quest by accepting a quest from a quest group.
Adds the ability for quests to have a prerequisite of a maximum reputation.
Adds code that abandons processing the server completed quests if the return results do not represent the total number of quests completed as compared to the locally stored count.

Version 040
Updates some quest/NPC information for Howling Fjord, Jade Forest, Krasarang Wilds, Townlong Steppes, Valley of the Four Winds, Kun-Lai Summit and Vale of Eternal Blossoms.
Removes the raceMapping, raceNameFemaleMapping, raceNameMapping and raceToBitMapping tables.
Changes the format for reputation change logging.
Adds reputationLevelMapping table that Wholly was using because it will be changed as more information is known, and there should be no need for Wholly to need to change.

Version 039
Updates some quest/NPC information for Vale of Eternal Blossoms, Kun-Lai Summit, Borean Tundra, Dread Wastes and Valley of the Four Winds.
Adds support for prerequisites to be able to have OR requirements within an AND requirement, instead of just outside them.
Adds support for CanAcceptQuest() to not allow bugged quests to be acceptable.
Replaces the raceMapping, raceNameFemaleMapping, raceNameMapping and raceToBitMapping tables with races. These older ones will be removed in version 40.

Version 038
Adds some Italian localization and quest localization updates for release 16030.
Updates some quest/NPC information for Jade Forest, Northern Stranglethorn, Vale of Eternal Blossoms and Echo Isles.
Adds ability for a quest to have prerequisites of a general skill, used by battle pets for example.
Refines meeting prerequisites when part of the requirements includes possessing an item.

Version 037
Updates some quest/NPC information for Twilight Highlands, Deepholm, Uldum, Sholazar Basin and Mount Hyjal.
Adds DisplayableQuestPrerequisites() so flag quests can be bypassed, showing their requirements instead.
Adds some Italian localization.
Adds support for account-wide quests.

Version 036
Fixes the problem where accepting and abandoning a quest with a breadcrumb was not setting the breadcrumb status properly.
Fixes the problem where quests could be considered to fail prerequisites if the only prerequisites were quests requiring presence in the quest log.
Updates some quest/NPC information for MoP beta, including Night Elf and Draenei starter zones.
Updates quest information to allow marking quests Scenario and Legendary.
Removes Grail.bitMaskQuestNonLevel as the internal data structures have changed, no longer requiring this.
Adds HasQuestEverBeenAccepted() to be able to handle O type prerequisites.
Removes Grail.reputationBlizzardMapping since it is no longer needed because of the use of Blizzard faction IDs.

Version 035
Updates Midsummer Fire Festival localization for Korean, Spanish and German.
Updates more NPC/quest localizations.
Updates the quest recording subsystem to generate basic K codes.
Changes the reputation system to no longer use indirection, but Blizzard faction IDs.
Updates the quest recording subsystem to record faction rewards on quest acceptance, and turns off recording faction rewards when quests are turned in.
Corrects the problem where quests that start automatically when entering a zone can appear improperly in the current zone (based on the current zone name).
Changes the technique by which the server is queried for completed quests since API has been changed for MoP.
Updates some quest/NPC information for Valley of the Four Winds and Krasarang Wilds.
Makes it so B codes are automatically generated from the quests with O codes, so the vast majority of B codes need not be present in the data file.
Adds the ability to create profession prerequisite codes (vice the normally supported profession requirements).

Version 034
Updates some quest/NPC information for Wandering Isle.
Creates new Grail.reputationExpansionMapping table to replace the original four tables which are deprecated and will be removed in version 035.
Updates Midsummer Fire Festival quest/NPC data, primarily the Portuguese localization.

Version 033
Updates some quest/NPC information for Blasted Lands, Eastern Plaguelands, Tirisfal Glades, Undercity, Winterspring, Zul'Aman and professions.
Adds some Spanish translation from Trisquite.
Changes the implementation of _ReputationExceeds() to use GetFactionInfoByID() instead of GetFactionInfo() since it seems there are times when the latter does not return proper values at startup.

Version 032
Adds some German translation from polzi.
Augments CanAcceptQuest() to include a parameter to ignore holiday requirements.
Updates some quest/NPC information for some dungeons, Oracles/Frenzyheart, Worgen starting areas, Tol Barad and others.
Changes the comparisons to completed quests to be more mathematically robust.
Corrects a problem where cleaning the database can cause a LUA error.

Version 031
Corrects the internal checking of reputation gains to not include modifications when the reputation is lost.
Adds the verifynpcs slash command option.
Updates some localizations, primarily Portuguese and Korean.
Updates some quest/NPC information for Dun Morogh, Loch Modan, Wetlands, Vash'jir and Kelp'thar Forest.
Corrects the problem where quests with breadcrumbs were being marked as not complete after a reload.
Adds processing to startup to ensure Grail attempts to get the server quest status automatically.
Corrects AncestorStatusCode() to ignore non-quest prerequisites.
Adds the ability to have quests have items or lack of items as prerequisites.
Adds support for ODC: quest codes, which are used to mark other quests complete when a quest is turned in.
Adds the ability to have quests use the abandoned state of quests as prerequisites.

Version 030
Corrects a problem that manifests itself when running the ElvUI addon.

Version 029
*** Will not work with Wholly 16 or older ***
Splits out two load on demand addons to handle achievements and reputation gains.
Updates some quest/NPC information for the Lost Isles, Feralas and some dungeons.
Updates some localizations, primarily Portuguese, Korean and Simplified Chinese.
Corrects the problem where some daily quests that also have another aspect (e.g., PVP or dungeon) were not being shown as daily quests.
Updates the automatic quest level verification system to ensure quests that are considered to have a dynamic level actually do.
Adds basic structural support for the Italian localization.
Consolidates the internal use of prerequisite quest types into a unified technique, causing all QuestPrerequisite* API to be REMOVED other than QuestPrerequisites.
Fixes the problem where quests with AZ codes were not being added to the proper zone.
Fixes the problem where the status of quests that require other quests being in the quest log was not being displayed properly.
Adds the Kalu'ak Fishing Derby holiday.
Updates some quest/NPC information for the fishing contests.

Version 028
*** Will not work with Wholly 15 or older ***
Corrects the mapAreaMaximumReputationChange constant.
Revamps the location providing routines so only the new QuestLocations() and NPCLocations() are needed, REMOVING the older ones.
Updates some quest/NPC information for Un'Goro Crater, Silithus, Burning Steppes, Kezan, The Lost Isles, Northern Barrens, Ashenvale, some dungeons and Winterspring.
Fixes detection of European servers to remove non-existent quests.
Updates some Portuguese localizations.
Makes _CleanDatabase() a little more intense with its cleaning.
Makes the system than checks for reputation gains a little more accurate.
Records actual quest completion for those quests that Blizzard marks complete with others in the server, so clients can know really which quest was done.
Implements a way to know when Blizzard uses internal marking mechanics (which differ from flag quests) to specify when quests are available.
Adds an architecture to support information about quests that are bugged.
Post A Reply Comment Options
Unread 08-30-23, 03:13 PM  
Nimhfree
A Frostmaul Preserver
AddOn Author - Click to view AddOns

Forum posts: 267
File comments: 51
Uploads: 2
Yes, you would have to analyze the data and figure out all the quests for which your recently-turned-in one is a prerequisite.

I do not know a way for you to include the data you need in a "live" manner other that requiring Grail as a dependency. Most of the admins are loadable on demand so should not impact a normal player's life. If you wanted to pull the data out and create a reverse listing you could always just provide that information as a separate addon. However, this would have to be updated over time as the Grail data is updated to be most accurate.
Report comment to moderator  
Reply With Quote
Unread 01-03-23, 02:59 AM  
LudiusMaximus
A Rage Talon Dragon Guard
 
LudiusMaximus's Avatar
AddOn Author - Click to view AddOns

Forum posts: 320
File comments: 13
Uploads: 15
Hi, I have two questions about how to include (parts of) grail in my addon DynamicCam.

What I need is a way to predict if an NPC will offer a new quest after a quest has been turned in.
(So DynamicCam stays in the NPC-interaction camera angle until the new gossip frame pops up, which sometimes takes a short moment.)

So I would need a list of quests (and their respective quest givers) of which the turned-in quest is a prerequisites. I think this info can be extracted from the Grail-Quests-_retail_.lua file. But a table to map a questID to its list of questIDs for which it is a prerequisite would still have to be created by me, right?

The other question is how I should include the info from Grail-Quests-_retail_.lua with my releases. It seems a bit much to me to make the entirety of Grail a dependency so DynamicCam users must have all the Grail addons in their addon list for a feature most of them will not even notice exists. Is there another way?
__________________
~ Be the change you want to see in the world... of warcraft interface! ~
Report comment to moderator  
Reply With Quote
Unread 11-24-22, 07:59 PM  
Nimhfree
A Frostmaul Preserver
AddOn Author - Click to view AddOns

Forum posts: 267
File comments: 51
Uploads: 2
Yes, the addon is being updated for Dragonflight. Current work is on GitHub. Release will happen with Dragonflight release (Nov 28).
Report comment to moderator  
Reply With Quote
Unread 10-29-22, 07:46 AM  
Barleduq
Premium Member
 
Barleduq's Avatar
Premium Member

Forum posts: 135
File comments: 742
Uploads: 0
Hi there! update for Dragonflight?

Just wondering if you'll be continuing this addon into Dragonflight. I hope so! Thank you!
-Barleduq
Report comment to moderator  
Reply With Quote
Unread 02-19-20, 04:13 PM  
Nimhfree
A Frostmaul Preserver
AddOn Author - Click to view AddOns

Forum posts: 267
File comments: 51
Uploads: 2
Re: Error!

This error is being reported by a few others as well. I have not been able to reproduce it, but am adding some guard code to try to ensure it does not cause problems.
Report comment to moderator  
Reply With Quote
Unread 02-12-20, 10:19 PM  
Barleduq
Premium Member
 
Barleduq's Avatar
Premium Member

Forum posts: 135
File comments: 742
Uploads: 0
Error!

I had to reinstall my entire machine over the weekend (RIP disk drive) and after pulling all my addons down again, I'm getting this error. I'll note that I haven't removed all the extraneous addon folders this time, I've just disabled them.

Code:
Date: 2020-02-12 23:09:34
ID: 10
Error occured in: Global
Count: 1
Message: ..\AddOns\Grail\Grail.lua line 3576:
   attempt to index field '?' (a nil value)
Debug:
   [string "@Grail\Grail.lua"]:3576: _LearnWorldQuest()
   [string "@Grail\Grail.lua"]:3447: _AddWorldQuests()
   [string "@Grail\Grail.lua"]:2052: ?()
   [string "@Grail\Grail.lua"]:10472: _Tooltip_OnEvent()
   [string "@Grail\Grail.lua"]:11058:
      Grail\Grail.lua:11058
Locals:
self = <table> {
 QuestBreadcrumbsFor = <function> defined @Interface\AddOns\Grail\Grail.lua:9088
 bitMaskClassPriest = 256
 IsBugged = <function> defined @Interface\AddOns\Grail\Grail.lua:6974
 bitMaskGenderMale = 8192
 _RecordArtifactLevels = <function> defined @Interface\AddOns\Grail\Grail.lua:9686
 bitMaskCompleted = 1
 _PrepareWorldQuestSelfNewNPCs = <function> defined @Interface\AddOns\Grail\Grail.lua:3324
 QuestLocationsAccept = <function> defined @Interface\AddOns\Grail\Grail.lua:9246
 IsAvailable = <function> defined @Interface\AddOns\Grail\Grail.lua:6956
 NO_SKILL = -1
 _HandleEventGarrisonBuildingActivated = <function> defined @Interface\AddOns\Grail\Grail.lua:6661
 bitMaskClassAll = 268443644
 _HandleEventLootClosed = <function> defined @Interface\AddOns\Grail\Grail.lua:6689
 bitMaskQuestLegendary = 4096
 _RemoveDelayedNotification = <function> defined @Interface\AddOns\Grail\Grail.lua:5095
 reputationFriends = <table> {
 }
 NPC_TYPE_BY = "BY"
 NPC_TYPE_DROP = "DROP"
 _PostDelayedNotification = <function> defined @Interface\AddOns\Grail\Grail.lua:8359
 _MarkQuestType = <function> defined @Interface\AddOns\Grail\Grail.lua:5464
 receivedCalendarUpdateEventList = true
 bitMaskClassDeathKnight = 4
 QuestNPCPrerequisiteTurnins = <function> defined @Interface\AddOns\Grail\Grail.lua:9417
 _ProcessServerBackup = <function> defined @Interface\AddOns\Grail\Grail.lua:8777
 bitMaskQuestVariableLevel = 4278190080
 MeetsRequirementGroup = <function> defined @Interface\AddOns\Grail\Grail.lua:7952
 _EvaluateCodeAsPrerequisite = <function> defined @Interface\AddOns\Grail\Grail.lua:5978
 bitMaskInLog = 16
 bitMaskQuestWeekly = 4
 bitMaskHolidayNoble = 256
 MeetsRequirementProfession = <function> defined @Interface\AddOns\Grail\Grail.lua:8037
 DoesNPCExist = <function> defined @Interface\AddOns\Grail\Grail.lua:5943
 npcNames = <table> {
 }
 _AllEvaluateTrueS = <function> defined @Interface\AddOns\Grail\Grail.lua:3690
 bitMaskQuestFailureWithAncestor = 67043200
 verifyTable = <table> {
 }
 _NPCToUse = <function> defined @Interface\AddOns\Grail\Grail.lua:8223
 garrisonBuildingLevelMapping = <table> {
 }
 bitMaskClassHunter = 16
 _LoadContinentData = <function> defined @Interface\AddOns\Grail\Grail.lua:3152
 bitMaskQuestRaid = 128
 _LocationStructure = <function> defined @Interface\AddOns\Grail\Grail.lua:7519
 _HandleEventAchievementEarned = <function> defined @Interface\AddOns\Grail\Grail.lua:6656
 checksReputationRewardsOnAcceptance = true
 classToMapAreaMapping = <table> {
 }
 verifyTableCount = 0
 playerGenderBitMask = 16384
 _ReputationExceeds = <function> defined @Interface\AddOns\Grail\Grail.lua:9874
 bitMaskRaceUnused9 = 4096
 zonesForLootingTreasure = <table> {
 }
 bitMaskQuestMonthly = 8
 mapAreaBaseClass = 200000
 exists73 = true
 LearnObjectName = <function> defined @Interface\AddOns\Grail\Grail.lua:7445
 _ContainsAliasNPC = <function> defined @Interface\AddOns\Grail\Grail.lua:5685
 classToBitMapping = <table> {
 }
 FriendshipReputationNameAndLevelName = <function> defined @Interface\AddOns\Grail\Grail.lua:9973
 QuestBreadcrumbs = <function> defined @Interface\AddOns\Grail\Grail.lua:9082
 NPCName = <function> defined @Interface\AddOns\Grail\Grail.lua:8175
 experimental = false
 bitMaskRaceNightborne = 2
 mapAreaBaseReputation = 400000
 UnregisterObserverQuestStatus = <function> defined @Interface\AddOns\Grail\Grail.lua:10520
 tooltipNPC = com_mithrandir_grailTooltipNPC {
 }
 _FactionsFromQuestGivers = <function> defined @Interface\AddOns\Grail\Grail.lua:7854
 QuestOnAcceptCompletes = <function> defined @Interface\AddOns\Grail\Grail.lua:9429
 bitMaskAncestorLevelTooHigh = 33554432
 bitMaskRaceTroll = 16777216
 bitMaskCanGetUnused2 = 65536
 celebratingHolidayCache = <table> {
 }
 bitMaskQuestMinLevel = 65280
 bitMaskLevelTooHigh = 32768
 IsGroup = <function> defined @Interface\AddOns\Grail\Grail.lua:7008
 bitMaskCanGetUnused8 = 4194304
 bitMaskCanGetUnused15 = 1073741824
 MeetsRequirementGroupPossibleToComplete = <function> defined @Interface\AddOns\Grail\Grail.lua:7980
 questReputations = <table> {
 }
 _AddThreatQuests
AddOns:
   LIST OF ADDONS REMOVED FOR LENGTH
  (ck=16f1)
Report comment to moderator  
Reply With Quote
Unread 09-30-19, 12:35 AM  
Barleduq
Premium Member
 
Barleduq's Avatar
Premium Member

Forum posts: 135
File comments: 742
Uploads: 0
I've got enogh addons that my loading screens take a while. I admit I don't know much about how addons load, but removing the extraneous stuff is easy enough for me, and can only help. BFA doubled my cpu usage when running WoW, and upped my memory usage by about half again, and that was before I added any BFA specific addons. Anything I can do to help (and yes, I'm trying to figure out which addons I don't really use, and which I only uses pieces of and might do without or find something else that combines what I do use) is useful.

Thanks!
-Barleduq


Originally Posted by Nimhfree
You can remove the folders you do not need, but as long as you do not mind the (as things go low disk space used, and) list of addons in the UI I would suggest not doing so. Grail is smart enough to only load the addons that are needed, both only the language you use and the Classic/Retail use based on what version you are running. The whole intent was to allow the same set of addons to be used in Classic and Retail at the same time. Of course the problem comes in that the addons without the Classic/Retail marking have a TOC version for Retail and you need to allow out-of-date addons in Classic to make them work. The others that are marked Classic/Retail should have the proper TOC values.
Report comment to moderator  
Reply With Quote
Unread 09-29-19, 08:08 PM  
Nimhfree
A Frostmaul Preserver
AddOn Author - Click to view AddOns

Forum posts: 267
File comments: 51
Uploads: 2
You can remove the folders you do not need, but as long as you do not mind the (as things go low disk space used, and) list of addons in the UI I would suggest not doing so. Grail is smart enough to only load the addons that are needed, both only the language you use and the Classic/Retail use based on what version you are running. The whole intent was to allow the same set of addons to be used in Classic and Retail at the same time. Of course the problem comes in that the addons without the Classic/Retail marking have a TOC version for Retail and you need to allow out-of-date addons in Classic to make them work. The others that are marked Classic/Retail should have the proper TOC values.
Report comment to moderator  
Reply With Quote
Unread 09-29-19, 04:38 PM  
Barleduq
Premium Member
 
Barleduq's Avatar
Premium Member

Forum posts: 135
File comments: 742
Uploads: 0
Originally Posted by Nimhfree
Just download the latest Wholly (072) and Grail (101) and it works in both Classic and Retail. However, the Classic version does not have all the quest information present yet. Submissions from your play in Classic would be appreciated. You can also get the very latest versions from GitHub.
Ok, I noticed that Grail had folders labeled classic, but Wholly didn't, and so I was wondering.
I've been making the assumption that if a folder is labeled 'classic' it can be removed in retail, and vice versa, and that if it has neither a classic nor retail label it should be left alone. I also remove all the language folders that I don't use. (only english is left.)

If this is a bad idea, let me know
Thanks for your work!
-Barleduq
Report comment to moderator  
Reply With Quote
Unread 09-28-19, 10:43 PM  
Nimhfree
A Frostmaul Preserver
AddOn Author - Click to view AddOns

Forum posts: 267
File comments: 51
Uploads: 2
Just download the latest Wholly (072) and Grail (101) and it works in both Classic and Retail. However, the Classic version does not have all the quest information present yet. Submissions from your play in Classic would be appreciated. You can also get the very latest versions from GitHub.
Report comment to moderator  
Reply With Quote
Unread 09-28-19, 12:24 PM  
Barleduq
Premium Member
 
Barleduq's Avatar
Premium Member

Forum posts: 135
File comments: 742
Uploads: 0
... Grail classic?

Where is it? Putting grail classic into search here doesn't find anything.


-Barleduq
Report comment to moderator  
Reply With Quote
Unread 08-30-19, 08:45 PM  
Grizzly UK
A Black Drake
 
Grizzly UK's Avatar

Forum posts: 85
File comments: 143
Uploads: 0
Originally Posted by Nimhfree
Originally Posted by Grizzly UK
I tried Grail Classic when Classic launched but all the quest givers were named "Unknown" and I could not interact with any of them. Only quest givers were affected, vendors, trainers, etc all worked normally. This was in the Night Elves starting zone Shadowglen. Grail/Wholly were the only "new" Classic addons that I had installed at the time, all the others were the same ones I had used in the final Stress Test without any problems. But just to test whether it was Grail/Wholly at fault I logged out and disabled all the Grail Classic and Wholly addons, logged back in-game and the quest givers had their actual names and I was able to interact with them to accept quests etc. No idea as to what the actual problem is but figured I should report it so it can be investigated and hopefully fixed.

Apologies for not reporting this sooner but I got a little distracted playing Classic!
It appears to have been an issue with the server. I had the same issue yesterday after the new version of Classic was released. I am guessing Blizzard's NPC cache was a little behind in loading. In any case, there is no way that Wholly or Grail can interfere with how Blizzard presents the names of the NPCs in the world.
Well that's good to know, must admit I was a little surprised because I use the Wholly Grail combo in Retail and I've never seen that happen before. Couldn't understand how or why a database of locations could cause such a thing, but at least now I know for sure that it wasn't actually Wholly Grail at fault! I'll re-install and see how it goes, but my thanks for the quick reply anyway.
Report comment to moderator  
Reply With Quote
Unread 08-30-19, 04:42 PM  
Nimhfree
A Frostmaul Preserver
AddOn Author - Click to view AddOns

Forum posts: 267
File comments: 51
Uploads: 2
Originally Posted by Grizzly UK
I tried Grail Classic when Classic launched but all the quest givers were named "Unknown" and I could not interact with any of them. Only quest givers were affected, vendors, trainers, etc all worked normally. This was in the Night Elves starting zone Shadowglen. Grail/Wholly were the only "new" Classic addons that I had installed at the time, all the others were the same ones I had used in the final Stress Test without any problems. But just to test whether it was Grail/Wholly at fault I logged out and disabled all the Grail Classic and Wholly addons, logged back in-game and the quest givers had their actual names and I was able to interact with them to accept quests etc. No idea as to what the actual problem is but figured I should report it so it can be investigated and hopefully fixed.

Apologies for not reporting this sooner but I got a little distracted playing Classic!
It appears to have been an issue with the server. I had the same issue yesterday after the new version of Classic was released. I am guessing Blizzard's NPC cache was a little behind in loading. In any case, there is no way that Wholly or Grail can interfere with how Blizzard presents the names of the NPCs in the world.
Report comment to moderator  
Reply With Quote
Unread 08-30-19, 03:23 AM  
Grizzly UK
A Black Drake
 
Grizzly UK's Avatar

Forum posts: 85
File comments: 143
Uploads: 0
I tried Grail Classic when Classic launched but all the quest givers were named "Unknown" and I could not interact with any of them. Only quest givers were affected, vendors, trainers, etc all worked normally. This was in the Night Elves starting zone Shadowglen. Grail/Wholly were the only "new" Classic addons that I had installed at the time, all the others were the same ones I had used in the final Stress Test without any problems. But just to test whether it was Grail/Wholly at fault I logged out and disabled all the Grail Classic and Wholly addons, logged back in-game and the quest givers had their actual names and I was able to interact with them to accept quests etc. No idea as to what the actual problem is but figured I should report it so it can be investigated and hopefully fixed.

Apologies for not reporting this sooner but I got a little distracted playing Classic!
Report comment to moderator  
Reply With Quote
Unread 08-29-19, 06:42 AM  
Nimhfree
A Frostmaul Preserver
AddOn Author - Click to view AddOns

Forum posts: 267
File comments: 51
Uploads: 2
Re: Re: Re: Grail/Wholly in Classic?

Originally Posted by Meloric
Originally Posted by Nimhfree
Yes, they work (with a few limitations to the Wholly quest panel that are being worked on). However, as you have seen, the quest data is limited. For Classic all the quest data needs to be gathered because I have found that the Retail data does not match and I feel it is better to gather the data fresh instead of making people go places where quests are not. Please send your Grail.lua saved variables file to help update the Grail database if you can.
Thanks for the answer. That makes sense because I know a lot of the lower area quests are completely different in classic vs. retail. I'll send along my Grail.lua in a few days as soon as I finish a few more zones.

One other question... is it necessary to all the retail data folders installed to the classic interface folder or can I just use the classic ones? I know the retail portions won't be loaded/used when playing classic. Just trying to cut down on size of my addons folder.
If you are only playing in Classic you should be able to remove all the Retail folders. You should also be able to remove all the folders that are specific to languages you do not use. When Grail loads it will load only the addons that are specific to your environment (retail vs classic and your current language).
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: