Not tracking Kill/Pickup quests correctly on the Map / Objective(ie turnin)
Logonz opened this issue ยท 22 comments
It's possible this is another "zombie notes" issue, see #14. I was assuming this was fixed, but apparently not.
Since we are maintaining our own version of cartographer now, it might be easily fixed by adding a validation check in cartographer that asks questie if the points are still valid. Ideally questie should be removing them, but it seems there's always one reason or another for it to "forget" that a note exists.
I blame Cartographer because it's ID system is susceptible to floating-point accuracy/rounding issues.
I think the issue is just that with the current system, it doesn't re-draw all notes on QUEST_LOG_UPDATE, thus if he logs in with 1/2 Haldarr Trickster Slain, that's what's being shown in the notes tooltip. But because notes don't update.
If we move to Astrolabe, you parse it a "frame that it places on the map (I think!) so we could anchor a tooltip to each frame that shows OnMouseOver or something. So we could just maintain a tooltip that would request new information OnShow.
The thing is that While the questlog acually shows the quest as complete it does not update it with the turnin, so it's a twofold problem i would guess BECAUSE the notes are not updated and removed it does not ADD the questionmark on the map either.
Oh no, that actually is a real problem then. Even upon opening your quest log, it does NOT recognize the quest as complete? That seems very broken. Sometimes, it's just that QUEST_LOG_UPDATE is not fired properly by the server, so the log/trackerframe don't update properly.
But opening your questlog should fix that, except sometimes it doesn't - apparently.
Noticed a pattern. It seems like the last event update is lost in some way,
The quest "The corruption of the jadefire" has 3 objectices, kill 11,9,9,1
On the last part of ALL the objectives (ex, 11 is done, the 11th kill is not recorded) it does not update accordingly, this happened 3 times on the same quest.
Edit AND FOR THE LOVE OF GOD, implement a q_PrintDebug(msg, spamlevel); so that i can turn on the debugging and give you guys more info
Have one for free!
function q_PrintDebug(message, level) --0 Low info --1 Medium info --2 very spammy
level = 2 or level;
if(DEBUG_LEVEL >= level) then
DEFAULT_CHAT_FRAME:AddMessage("[Questie]: "..message,1,1,0);
end
end
Actually, our log function already has a debug level. It's Questie.debugLevel. We just keep most stuff commented out because we only need debug prints for new features (most of the time anyway).
You're right though, we should keep everything in and just set the debug level for it super high. The idea was to allow the user to switch debug mode on and off once we implement the menu.
There's also QuestieDebug (in your SavedVariables) which keeps some information. We just haven't gotten around to making a tutorial on how to submit information. It's mostly for broken quests and objectives.
Had the problem again now, but this time in a very early part of a quest,
1/12 was not logged, as soon as i get 2/12 it logged both, so i would guess the problem is that the event just isn't triggered, no idea how you would fix that.
And again, the QuestTracker displays the right info but the map doesn't
Could implement a temporary fix by having it recheck all quests every ~10 seconds or something, if it is the events not firing properly.
Actually, since the quest tracker is updating properly, the base events should be firing, just for whatever reason it's not reaching the map.
And yeah we do have a log function, but a lot of things don't actually have calls to it. I'll go through and add debugging everywhere in a little bit.
Do that, and if it gets laggy do some kind of updatequeue system, go through one of the quests in the qlog every 0.5 second or something, (20 quests in 10secs)
I think i found the bug.
in
function Questie:QUEST_LOG_UPDATE()
for r=1,count do
local desc, typ, done = GetQuestLogLeaderBoard(r);
if not done then -- This is where it bugs, i does not update the objective because it says the objective is done.
questComplete = false;
if selected then
--DEFAULT_CHAT_FRAME:AddMessage("SELECTED " .. q, 0.95, 0.1, 0.95);
else
--DEFAULT_CHAT_FRAME:AddMessage("NOTSELECTEd " .. q .. " " .. in, 0.95, 0.1, 0.95);
end
this:processObjective(q, desc, typ, selected, mapid, r)
end
---DEFAULT_CHAT_FRAME:AddMessage(typ, 0.95, 0.95, 0.5);
---DEFAULT_CHAT_FRAME:AddMessage(done, 0.95, 0.95, 0.5);
end
moving this line outside of if not done then fixes the update BUT it does not fix the check if the quest is infact done.
this:processObjective(q, desc, typ, selected, mapid, r)
Look into this, you guys have a much better knowledge of the codebase than me.
Did a fork fix
master...Logonz:master
Fixed that the objectives all update if all objectives arn't done
If all objectives are done, Remove all notes and then it adds the finisher.
Not 100% tested when this is posted but it seems to be working
One Quest tested, worked flawlessly.
Wow thanks for your contribution :D, I'll do a little testing then I'll pull in your request.
well I dont know if this is a bug, but it doesnt count first quest item to tracker or map + I tryed your version.. but no luck at all.. its the same :( It even gives me string error when I want to see quest rewards in quest log.. I even tryed remove EQL3, but its the same.. screenshots attached +1 dunno why I cant track some quests.
map notes doesnt vanish after objective is done
Error that your lua gives me with quest rewards
untrackable quest
first items doesnt counts
Took the liberty to merge your changes into our master after reviewing them briefly. Thank you for the fix.
About the error on quest items, I've had the same problem, some quests seem to throw errors, was this only on one quest or all in your questlog?
And the problem in that case is that the note is not removed correctly when the quest is done it is supposed to not update the notes when it's done so the 0/3 is expected if no update is tiggered within you getting the first item and the last. But the ticks should be faster than 3 pulsing blue shards so it's still a strange bug.
But it not tracking the first one is not true, there is a delay between updates or when you open the questlog, See if this can be fixed by doing some kind of previous info check
Im leveling 57, 60 today so i will run tests and fix any potential bugs i encounter with my fix (did the fix at 3 am didn't expect such a fast merge! ๐ ) Also noticed some performance problems with my fix (there is a ittybitty stutter each tick, will probably see if the processObjective function can do a check on the progress parameters to update the notes only if needed)
Schaka, It would be really fun to be a collaborator!
Edit: Done, you can now access the repo directly.
The quest you've tested it with is already done, right? Logonz commit checks if a quest is entirely done, and if it is doesn't add anything to the notes. Aero and I are both inconvenienced right now, but we'll take care of it later.
Logonz, if you want to participate in the project on GitHub as a collaborator, you can tell us and Aero will add you to the project.
Logonz:
only few quests have this error..
and dunno why notes doesnt update sometimes with objectives.. same with first quest items doesnt count on note or tracker
Sparh4wk now that im more of an offical capacity i'll see if i can look into it! ๐
Thanks! Looking forward to being on the team!(Bit offtopic but have anything in mind how to chat about addon things which isn't github issue comments?)