smaitch / Grail

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

ShadowLands Beta, various infos and errors. #202

Open yoshimo opened 4 years ago

yoshimo commented 4 years ago

Message: Interface\AddOns\Grail\Grail.lua:1251: hooksecurefunc(): SelectGossipOption is not a function

yoshimo commented 4 years ago

Other functions that error when you comment out and hack around in the code and should be looked at

self:GetQuestLogTitle(questIndex) IsCampaignQuest(questID) GetQuestTagInfo(v.questId)

other addons error out in GetQuestsCompleted

smaitch commented 4 years ago

I am not in the beta for some unlucky reason. Therefore, it will make debugging these issues a little problematic. :-(

Nerillida commented 4 years ago

I am and have no desire to be. Well done Blizz.

yoshimo commented 4 years ago

local GetQuestsCompleted = C_QuestLog.GetAllCompletedQuestIDs seems to get that part solved https://github.com/ebonyfaye/9.0-Interface has the documentation files at least. Still looking for the rest as a noob :)

smaitch commented 4 years ago

So does that routine return them in a table as expected by the rest of the code? I take it IsQuestFlaggedCompleted() does not exist any more and was causing the problem in beta.

yoshimo commented 4 years ago

C_QuestLog.IsQuestFlaggedCompleted; is still mentioned in the repo I linked. The questlog title thing is more annoying

smaitch commented 4 years ago

In game can you do: /api QuestLog list I would imagine we might be able to use C_QuestLog.GetInfo() to get the same information.

yoshimo commented 4 years ago

Since my chat copy addon broke, here 2 pictures that show what the link would probably have shown in a weirder format:

1 2

yoshimo commented 4 years ago

On a related note we now have a amber colored diamond that shows the location to the tracked quest as a 3d marker in the world.

smaitch commented 4 years ago

When you get that API list if you click on an item it should give you more information about it. I am assuming the C_QuestLog.GetInfo() will be usable by passing in the index from the quest log and its results will be the QuestInfo structure listed at the bottom of the API list (which should be clickable as well). I will have to rewrite Grail's GetQuestLogTitle() to make use of the new call, and what I assume to be the new order of return values, but I think it should be doable. I am going to try to get these changes into the GitHub repository to see if you can use them soonest.

yoshimo commented 4 years ago

https://github.com/ebonyfaye/9.0-Interface/blob/1899ab848ae624b7f10a52302cc66dee0e503b11/interface/addons/blizzard_apidocumentation/questlogdocumentation.lua probably is faster than copy&paste from the game https://github.com/ebonyfaye/9.0-Interface/blob/1899ab848ae624b7f10a52302cc66dee0e503b11/interface/addons/blizzard_apidocumentation/gossipinfodocumentation.lua might help with the first error

smaitch commented 4 years ago

I should have mentioned that I am using that repo you mentioned earlier to look at the API to make guesses as to what to do. :-)

yoshimo commented 4 years ago

Attached my hacked and broken version and the recordings it gives us.

Shadowlands_beta_hackjob27072020.zip

yoshimo commented 4 years ago

After last nights updates we are at:

Message: ..\AddOns\Grail\Grail.lua line 1870:
   Usage: local isCampaignQuest = C_CampaignInfo.IsCampaignQuest(questID)
Message: ..\AddOns\Grail\Grail.lua line 9663:
   table index is nil
smaitch commented 4 years ago

I have updated in the latest push code for Shadowlands I hope. Can you tell me what is failing when you use the latest? Thanks.

yoshimo commented 4 years ago
Message: ..\AddOns\Grail\Grail.lua line 1881:
   Usage: local isCampaignQuest = C_CampaignInfo.IsCampaignQuest(questID)

On the quest window sometimes i see a questid and sometimes i don't. Both times the questid is not recorded yet. Is this a wholly issue?

smaitch commented 4 years ago

Are you saying you sometimes see a message that basically says:

Grail: QuestId mismatch XXX accepted but log has YYY

I am guessing the IsCampaignQuest() is failing because it is being passed a nil value (which might appear as that XXX in the message).

Can you add a line of code at line 1853 that says:

            if self.GDE.debug then print("Grail QUEST_ACCEPTED: index:",questIndex,"event theQuestId:",theQuestId,"questId:",questId,"quest title:",questTitle) end

Hopefully this will give you a line of text for every quest you accept (assuming you have debug on). What I am looking for is whether "event theQuestId" actually has a value, and whether you get the "questId" and "quest title" with proper values as that would be using the new API to get quest information.

If you are seeing that "even theQuestId" is coming back as nil then you can change the line that says:

                        isCampaign = C_CampaignInfo.IsCampaignQuest(theQuestId)

can be changed to:

                        isCampaign = C_CampaignInfo.IsCampaignQuest(questId)

Hopefully this will get you past this issue. I really wish I had beta access to be able to better get this working.

yoshimo commented 4 years ago

Something about a mismatch happened in early stages of me messing with the code. I think it was about GetQuestsCompleted in the end.

So what i wondered about with the questid is: WoWScrnShot_073020_173248 Sometimes that id isn't shown and sometimes you only get an unknown. Not sure if Grail&wholly are to blame or IDTip.

Your debug line results in: WoWScrnShot_073020_173325

Changing line 1882 gives


Message: ..\AddOns\Grail\Grail.lua line 1882:
   Usage: local isCampaignQuest = C_CampaignInfo.IsCampaignQuest(questID
smaitch commented 4 years ago

Ahh, that means the QUEST_ACCEPTED event seems to have changed, and no longer returns the index of the quest, but rather the questId. It means that Grail is not going to work properly noting quests that you accept until I can find a workaround.

smaitch commented 4 years ago

OK, I have made a change and pushed it. Can you test to see if this behaves better?

yoshimo commented 4 years ago

grafik

yoshimo commented 4 years ago

Got one more

Message: ..\AddOns\Grail\Grail.lua line 7353:
   attempt to call upvalue 'GetQuestGreenRange' (a nil value)
Debug:
   [string "@Grail\Grail.lua"]:7353: IsLowLevel()
   [string "@Grail\Grail.lua"]:10514: StatusCode()
   [string "@Grail\Grail.lua"]:7878: _MarkQuestComplete()
   [string "@Grail\Grail.lua"]:9350: _QuestCompleteProcess()
   [string "@Grail\Grail.lua"]:2138: ?()
   [string "@Grail\Grail.lua"]:10730: _Tooltip_OnEvent()
   [string "@Grail\Grail.lua"]:11316:
      Grail\Grail.lua:11316
smaitch commented 4 years ago

This should now be handled in commit b8a008491d2663707dc8dfc1159f8fcf56285cf6

yoshimo commented 4 years ago

Blizzard deleted progress with this weekly reset so here is what i gathered so far to get us a start for the new leveling phase again. Grail_PTR_beta_9.0_pre_wipe_4.8.2020.zip

yoshimo commented 4 years ago

Sometimes quests are linked into story lines https://shadowlands.wowhead.com/storyline/through-the-shattered-sky-1108 Is that something that is available from the api and could be used to group quests in Wholly/Grail?

smaitch commented 4 years ago

It is not something that is available to the API. However, during gameplay I manually take note of these things. I then add entries into Grail-Achievements.lua that look something like: G[51712]={512496} -- Cycle of Hatred (Stormsong and Dance) G[51825]={512473} -- Enemies Within (A Sound Plan) -- Alliance G[51967]={512510} -- Nazmir Foothold (Ready for War) -- Alliance where the item(s) for each are achievement IDs (added to 500000, so the first there would really be achievement ID 12496). So in Wholly if you look at an achievement it should list all the quests associated with it (starting with the one listed in this file, but then getting all the ones in the prerequisite chain).

Nerillida commented 4 years ago

In case you didn't know, Blizz has opened Beta up to everyone.

https://shadowlands.wowhead.com/bluetracker?topic=172634&region=eu

I have seen a US page although can't find it right now.

smaitch commented 4 years ago

Yes, I have been on beta since last week, updating things periodically.

yoshimo commented 4 years ago

Grail_PTR_beta_9.0_post_wipe_15_8_2020.zip

This is how far i've come today and supplements the open pull request. Looks like both of us are in Maldraxxus right now

yoshimo commented 4 years ago

Grail_beta_9.0_18.08.2020.zip

yoshimo commented 4 years ago

Wouldn't https://github.com/smaitch/Grail/commit/97a282427c2b3e7014e5b2cfac54fae41e49d5c5 break the ability to find quests that complete each other without being in the log? https://shadowlands.wowhead.com/spell=338946/world-quests completes 57559 but never gets logged even though i always run /grail cb after a turn in.

yoshimo commented 4 years ago

Grail_Beta_9.0.1_23_08_2020_1.zip More Data with LVL 60 realm chars and the covenants

yoshimo commented 4 years ago

Maybe we also need this:

C_PlayerChoice.SendPlayerChoiceResponse(responseID) Replaces SendQuestChoiceResponse.

yoshimo commented 4 years ago

Line8624 In Grail.lua needs to be currentPhase = C_Garrison.GetGarrisonInfo(Enum.GarrisonType.Type_6_0) otherwise we get an error in Draenor.

Also expansions now scale differently . Spires of Arak has lvl 40 enemies for a lvl 60 character. So almost all quests are officially "too high".

yoshimo commented 4 years ago

Grail_beta_9.0_18.08.2020.zip Fresh Data including rares and treasures in Spires of Arak

yoshimo commented 4 years ago

Grail_Beta_9.0.1_31_08_2020.zip

yoshimo commented 4 years ago

New update to go along with the Pull Request Grail_SL_Beta_9.0.2_13.09.2020.zip

yoshimo commented 4 years ago

Quite a few quests now are accepted on loot like https://shadowlands.wowhead.com/quest=62187/satchel-of-culexwood You can get position and object with GetLootSlotInfo(1) when looting the item that immediately starts the quest. Maybe some improvement to the recording layer would help here.

On related notes, quite a few "treasures" in the Ardenweald immediately complete the quest and reward an item, no lootwindow pops up. Not sure if we can also record this somehow

An example is quest 61072 which is immediately completed when interacting with Aerto (171156) 1565:55.97,21.04 and looting the pet.

yoshimo commented 4 years ago

The Shards for https://shadowlands.wowhead.com/achievement=14339/shard-labor complete the quest after channeling a spell, no loot window, no object to grab.

Updated grail log with Revendreth (up to a broken quest): Grail_SL_Beta_9.0.2_19.09.2020.zip

yoshimo commented 3 years ago

Grail_SL_Beta_9.0.2_27.09.2020.zip

yoshimo commented 3 years ago

I suggest to look at the following additions to mark calling quests:

C_CovenantCallings.AreCallingsUnlocked() C_CovenantCallings.RequestCallings() C_QuestLog.IsQuestCalling(questID) Event-CovenantCallings.CovenantCallingsUpdated

yoshimo commented 3 years ago

Grail_SL_beta_9.0.2_01.10.2020_pre2wipe.zip

Blizzard decided to wipe all characters with this weeks reset. PullRequest and Data are from before that maintenance downtime

yoshimo commented 3 years ago

Grail_SL_Beta_9.0.2_16.10.2020.zip Some more quests

smaitch commented 3 years ago

As a side comment I have just added support for "/grail treasures" which toggles the old LOOT_CLOSED ability to record information when looting treasures.

yoshimo commented 3 years ago

final Data upload and then i think we can close this out as Shadowlands is live now:

Grail_retai_and_SLBeta_final_23.11.2020.zip

yoshimo commented 3 years ago

@smaitch have you parsed all data uploaded here and the notes we made so we can close this meta-issue now?