smaitch / Grail

World of Warcraft addon to provide a database of quest information.
31 stars 20 forks source link

QuestsInMap(useLoremasterOnly) fails for Wholly #15

Closed puggan closed 6 years ago

puggan commented 7 years ago

== Background == Trying to do the Drenor Loremasters, and use 2 addons thats uses the Grail database.

Wholly have an option to hides non-loremaster quests, by setting the useLoremasterOnly in QuestsInMap()

Setting this setting in Wholly hides the wrong quests, for example, the quest "Across the Stars"(33795)

Loremaster-addon, also use Grail, havn't diged down in what function it use yet, but it shows the "Across the Stars"(33795), but it also shows the quest "Blademoon Bloom"(35014) that I don't have done the required prequest.

Wholly marks the "Blademoon Bloom"(35014) as not doable, if I uncheck the LoremasterOnly.

It's abit anoying to have to compare the 2 addons to know what quests todo.

=== Side note === The achivvment "As I Walk Through the Valley of the Shadow of Moon"(8845) is compled by an alt character.

And found some code that did some kind of is-achivment-done, and tested to remove it, no result.

https://github.com/puggan/Grail/commit/64dfbb8d93692023563404cc1dca07e50694ab1f

== Questions ==

  1. Why is Wholly, that should be using the useLoremasterOnly, not listing the LoremasterQuest?
  2. How can I debug to see what Grail returns for the 2 quests?
puggan commented 7 years ago

Screnshoots

"Blademoon Bloom"(35014) in Loremaster, but red in Wholly screen shot 2017-09-26 at 08 52 30

Wholly with Loremaster-setting screen shot 2017-09-26 at 08 52 52

Wholly without Loremaster-setting screen shot 2017-09-26 at 08 52 48

smaitch commented 7 years ago

I am intrigued as to why Wholly and Loremaster have different results for the same zone. The reason is the technique that Grail uses is the same for both, and therefore, I would have imagined the results should be the same.

Grail has two tables of interest: Grail.loremasterQuests and Grail.indexedQuests

They have an index of the mapId. So, Grail.loremasterQuests[947] should give you the Shadowmoon Valley (Draenor) quests that are Loremaster, and Grail.indexedQuests[947] should give you all of the ones that start in the zone.

I just ran in PTR (as live was down), and indexedQuests was giving me a bit over 200 quests, while loremasterQuests was only giving me 7. Something is definitely wrong. The Grail-Achievements loadable addon is responsible for populating this information, so I will have to investigate what is happening there.

Basically what Grail-Achievements is meant to be doing is looking at the last quest required for each of the parts of an achievement, and then getting all the prerequisites for those quests (in that zone). This is meant to be the list that is required for Loremaster.

puggan commented 7 years ago

While debuging Issue #17 i found:

Grail-Achievements/Grail-Achievements.lua row 7009 - 7010

Grail.indexedQuests[achievement] = newTable
Grail.loremasterQuests[achievementsToZoneMapping[achievement]] = newTable

For Zone 949, there is 3 achivments: 508923, 508924, 509607

for each of thous 3, the code above adds a tale to indexedQuests at the achivment-id as position, and then tries to add it to the loremasterQuests at the zone-id as position = 949.

all 3 achivments wirtes to loremasterQuests[949], replacing it, insted of merging them.

smaitch commented 7 years ago

I have pushed some code into the repository that I believe should correct the issue where the lore master quests are not correct for zones that have more than one achievement in them.

smaitch commented 6 years ago

With the latest release is this problem fixed?

smaitch commented 6 years ago

One assumes this is no longer a problem.