Debuff Tooltip not working in Classic
Confirm the issue lies within VuhDo:
All addons besides Vuhdo were disabled.
Describe your environment:
-
VuhDo version (e.g. v3.102, Classic or Retail)
- You can retrieve this by running the following command in-game:
/dump GetAddOnMetadata("VuhDo", "Version")3.193-vanilla
- You can retrieve this by running the following command in-game:
- World of Warcraft region (ie. Americas/Oceanic, EU, CN or KR) Americas
-
World of Warcraft client language (eg. enUS)
- You can retrieve this by running the following command in-game:
/dump GetLocale()enUS
- You can retrieve this by running the following command in-game:
Summary of the issue: After a reload ui the debuff tooltip work for a short time and then as buffs/debuffs change the debuff tooltip stops showing. This is easily reproduced by casting a buff on oneself multiple times and then adding a debuff (eg: multiple paladin blessings in a row then cast blessing of protection to see the debuff)
Settings: Debuffs > Standard > Icons > Icon checked
Here is my analysis and workaround for the problem:
When a unit is initially scanned for auras the VUHDO_getOrCreateIconArray is passed the correct aura index aCnt. As buffs/debuffs get added/updated/removed these values get out of sync. A workaround is in the VUHDO_determineDebuff method to remove the contents of the elseif aUpdateInfo then and replace it with the above init condition.
This has performance issues (although it seems fine for me at the moment), but in order for this to be fixed "correctly" a few things would likely need to change:
- ignore adding the cnt/index to the DebuffIcon object and instead find a way to search the debuffs for the index at the time of tooltip display.
OR
- sCnt would likely be sBuffCnt and sDebuffCnt so that buffs don't increment debuff count when they get added
- sCnt should not increment when updating an existing aura
- when a debuff/aura is removed each existing aura index must shift down if they are higher then the removed aura. and the cnt should reflect the change
I don't feel confident I understand the existing code well enough to know how to do the above and if that has other implications. The reason this is not an issue in retail is that retail uses GameTooltip:SetUnitDebuffByAuraInstanceID(tButton["raidid"], aDebuffIcon["debuffInstanceId"]) and thus doesn't need to know the debuff index.
Expected behaviour:
Tooltip should show
Actual behaviour:
Tooltip does not show
Related error messages:
Please first install the following two add-ons to assist in capturing any error messages in-game:
no bugs as calling GameTooltip:SetUnitDebuff("player", 6) does not error when there is no debuff index 6.