Items buffs don't always display Auras
dafzor opened this issue · 45 comments
Tested on Destruction Warlock using Purified Bindings of Immerseus http://www.wowhead.com/item=104924 no other addon beside AdibuttonsAuras and Dominus was loaded the trinket did not show a proc Aura buff even though it's included on the item database and appears to be correct.
Tested it with the same warlock and the fix doesn't seem effective. Test done with no addons but AdiButtonAuras enabled.
So can this bug be reopened, it's still not completely fixed.
Opening config on my hunter shows both trinkets as "Status unkown", one of the trinkets is Harmm's Talisman (lfr version and it's in the database:
trinkets[148903] = 105029 -- Vicious (Haromm's Talisman)
I'm still not sure this is related but it seems all the trinkets that don't work are fully valor upgraded, since I need a new trinket to drop to fully test it i've been unable to do so for now.
Maybe the upgraded trinkets give a slightly different buff. Could you install https://github.com/Adirelle/SpellDevInfo and look at the buff ids of those trinkets please ?
Even if the buff value (generic #15) differs from bare trinket, the spell and item ids are the same. This should work.
Edit: this actually works nicely with AdiSpellHud, which uses the same library. So I guess something is wrong specifically in AdiButtonAuras.
Could you try the latest version of https://github.com/Adirelle/LibItemBuffs-1.0 please ? Some buffs can be applied by several items, e.g. the different versions of SoO trinkets have different ids but apply the same buff. LibItemBuffs-1.0 was not handling that case correctly.
Still not showing anything, sorry :(
On Wed, Sep 3, 2014 at 5:01 PM, Adirelle [email protected] wrote:
Could you try the latest version of
https://github.com/Adirelle/LibItemBuffs-1.0 please ? Some buffs can be
applied by several items, e.g. the different versions of SoO trinkets have
different ids but apply the same buff. LibItemBuffs-1.0 wasn't handling
that case correctly.—
Reply to this email directly or view it on GitHub
https://github.com/Adirelle/AdiButtonAuras/issues/37#issuecomment-54319796
.
My apologies if I didn't make it clear but when opening the configuration
the trinkets do not show a green overlay indicating they have an aura
detected, both the trinket directly as well as a macro of said trinket.
On Fri, Sep 5, 2014 at 8:11 AM, Adirelle [email protected] wrote:
I'm running out of idea: this works fine with 2/4 trinkets and 0/4
trinkets, with different characters, including a Destruction Warlock with
the Purified Bindings of Immerseus. In addition, AdiSpellHud, which also
uses LibItemBuffs, properly show the buffs.Just to be sure: the trinket is in an action slot, which is enabled for
ABA (e.g. green overlay in configuration mode) ?—
Reply to this email directly or view it on GitHub
https://github.com/Adirelle/AdiButtonAuras/issues/37#issuecomment-54592238
.
I'm running out of idea: this works fine with 2/4 trinkets and 0/4 trinkets, with different characters, including a Destruction Warlock with the Purified Bindings of Immerseus. In addition, AdiSpellHud, which also uses LibItemBuffs, properly show the buffs.
Just to be sure: the trinket is in an action slot, which is enabled for ABA (e.g. green overlay in configuration mode) ?
I have improved the item support. It should now list the applicable rules for an item and one can disable them, as for spell rules. Moreover, if a spell/item is unknown, it shows what it has looked for in the tooltip. Maybe, that could help us.
Tried out the latest version and still the same thing, all the SoO trinkets are unrecognised presenting themselfs like this:
However it does seem it's not related to item upgrades as I did find an example of upgraded item that was being recognised:
But strangely "Quilen Statuette" did not seem to be on the item buff database (probably because it summons a pet), so I tried to using it and no timer was shown for it further more the auras become unknown for both trinkets in the config, reloading and trying the timeless isle trinket also showed no buff duration aura. So it seems even on the trinkets that it does recognize it still might not show an aura.
To make sure there was no interference I repeated the timeless isle trinket test with no addons loaded but adibuttonauras, same result. So in short I'm utterly stumped at what's going on...
Well, if ABA does not find anything in LibItemBuffs, it uses standard API "GetItemSpell()", which sometimes returns a spell name, and looks for the buff by name. Unfortunately, GetItemSpell only returns one spell name, and only for "Use :" effect. This is why Use-trinkets are recognized.
It is like ABA fails to use LibItemBuffs. Latest ABA should add a "[LIB-minor-timestamp]" tag at the end of LibItemBuffs-based rules.
I just checked this and can confirm this issue as well. I used the flex version 2/4 immerseus trinket (that's not even in LibItemBuffs, so I added trinkets[104675] = 146051
and incremented the lib's minor version to test this).
What I noticed is in reaction to this snippet:
local items = addon.Memoize(function(key)
local id = tonumber(key:match('^item:(%d+)$'))
return id and BuildItemRule(id, GetItemSpell(id), LibItemBuffs:GetItemBuffs(id)) or false
end)
Both parts return nil, how can this even happen? Can you test this behavior with an already-included trinket?
-- item link used: " |cffa335ee|Hitem:104675:0:0:0:0:0:0:377539456:90:0:493|h[Gel\195\164uterte Bindungen von Immerseus]|h|r"
GetItemSpell("[Geläuterte Bindungen von Immerseus]") => nil, nil
LibStub('LibItemBuffs-1.0'):GetItemBuffs(104675) => nil
I am in the process of adding tests to my libraries, when this is possible. LibItemBuffs-1.0 is on the list.
Unfortunately, no change :/
Geläuterte Bindungen von Immenses item
Status Unbekannt
AdiButtonAuras has no rules for this item.
Action 'key' for reference item:104675
Here the situation: I worked the last few days to add some unit tests to LibItemBuffs and AdiButtonAuras' item handling. Unit testing means to verify the behavior of minimal pieces of code, isolated from other parts, with provided inputs. E.g. I verified the behavior of LibItemBuffs independently from its actual data, and I verified AdiButtonAuras's item handling with a fake LibItemBuffs and a fake WoW API. And as you can see there and there, the tests are ok.
So now, there are two possibilities:
- There is an integration problem on your computer, e.g. you do not have latest AdiButtonAuras and latest LibItemBuffs (minor 8) and/or AdiButtonAuras somehow does not use the latest version of LibItemBuffs.
- I overlooked some corner case in my tests, but that is quite unlikely, and I specifically added a test for this issue in LibItemBuffs.
So I am a bit lost right now.
But it's working on your system? If so can you note a "known good" version I can download and test again?
@dafzor: Yes, it is working on my system. It failed only when I introduced a bug in one version of LibItemBuffs-1.0 minor 7 but I have found and fixed it when I added the unit tests. LibItemBuffs-1.0 minor 8 is fully tested and should work perfectly. The version of ABA pointed out by @arcadepro should work, and is working with my warlock and her Purified Bindings of Immerseus.
Since minor 7, I've moved the built-in enchantment database to the database file, to allow unit testing. __UpgradeDatabase(version, trinkets, consumables, enchantments) now takes a fourh argument, which should be a table of enchantements, with spell IDs as keys and inventory slot number as values.
Also, please note that the standard archives from wowace ship with all libraries. If you tweaked an old standalone library with an arbitrarily high database version, it is quite possible that the loaded library is the revison 8 from AdiButtonAuras and that you try to feed it data designed for the old revision 7, causing that error.
So either install only the "full version" of AdiButtonAuras from wowace and remove your standalone libraries or only (fork and) checkout latest version of addons and libraries from github using git.
Plopped LibItemBuffs 1.0-8 into my ABA install and only received errors.
2x ...ttonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0-8.lua:166: bad argument #1 to 'pairs' (table expected, got nil)
[C]: in function `pairs'
...ttonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0-8.lua:166: in function `?'
...\libs\10LibItemBuffs-1.0-8\LibItemBuffs-Database-1.0.lua:1240: in main chunk
Locals:
self = <table> {
__itemBuffs = <table> {
}
GetDatabaseVersion = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:143
slots = <table> {
}
GetInventorySlotList = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:101
IsItemBuff = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:41
GetBuffItemID = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:84
GetBuffInventorySlot = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:49
__UpgradeDatabase = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:148
__databaseVersion = 2.0131118135322e+14
trinkets = <table> {
}
GetItemBuffs = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:109
consumables = <table> {
}
}
version = 2.0131118135322e+14
trinkets = <table> {
65024 = 46038
-- and so on ...
I then added a fallback to {} but my trinket is still not recognized and any enchant/item procs that were working in minor 7 aren't showing up in ASHUD any more :(
How about you add the library (maybe as a submodule or whatnot) to the ABA repo so it's there?
Update: Updated several of your addons. Error still persists but ASHUD now again displays the item proc, ABA still does not recognize the trinket as buff source, though.
ASHUD:
- displays trinket procs
- no longer displays LMG
ABA:
- displays no proc info, on neither of my trinkets (Immerseus' Bindings +2/4, Kardis' toxic totem1 +2/4)
- displays no LMG proc either
I pulled LibPlayerSpells and ABA's latest commits, grabbed LibItemBuffs (master), replaced my old minor-7 libs\LibItemBuff-1.0
with its contents and restarted WoW. That's when I encountered that error. I've not been using LIB as a standalone but it might be embedded in other addons I'm using. Either way, LibStub should make sure to load the latest version available :)
Update: I've now grabbed GitHub's standalone LibItemBuff, as well as GitHub's ABA/LibPlayerSpells (which I've already had before). The error persists.
1x LibItemBuffs-1.0\LibItemBuffs-1.0-9.lua:149: Usage: LibStub("LibItemBuffs-1.0"):__UpgradeDatabase(version, trinkets, consumables, enchantments)
[C]: in function `assert'
LibItemBuffs-1.0\LibItemBuffs-1.0-9.lua:149: in function `?'
...\libs\10LibItemBuffs-1.0-9\LibItemBuffs-Database-1.0.lua:1240: in main chunk
I seriously don't want to annoy you. Just trying to get as much information as possible. I've now also tried using the package from WoWAce. However, the result is still the same:
5x ...ttonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0-8.lua:166: bad argument #1 to 'pairs' (table expected, got nil)
[C]: in function `pairs'
...ttonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0-8.lua:166: in function `?'
...\libs\10LibItemBuffs-1.0-8\LibItemBuffs-Database-1.0.lua:1240: in main chunk
Locals:
self = <table> {
__itemBuffs = <table> {
}
GetDatabaseVersion = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:143
slots = <table> {
}
GetInventorySlotList = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:101
IsItemBuff = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:41
GetBuffItemID = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:84
GetBuffInventorySlot = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:49
__UpgradeDatabase = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:148
__databaseVersion = 2.0131118135322e+14
trinkets = <table> {
}
GetItemBuffs = <function> defined @AdiButtonAuras\libs\LibItemBuffs-1.0\LibItemBuffs-1.0.lua:109
consumables = <table> {
}
}
version = 2.0131118135322e+14
trinkets = <table> {
65024 = 46038
-- snip
Here:
...\libs\10LibItemBuffs-1.0-8\LibItemBuffs-Database-1.0.lua:1240: in main chunk
On my version of LibItemBuffs-Database-1.0.lua, the calll to __UpgradeDatabase is done at line 2059, not 1240 as in your error message.
According to the file history, the version with a call to __UpgradeDatabase at line 1240 was commited November 18th, 2013. I highly suspect an old version of LibItemBuffs-Database-1.0.lua with an fake high version number is hiding somewhere in your AddOns folder.
I would search for all "LibItemBuffs-Database-1.0.lua" in your AddOns folder to be sure. IIRC, Windows has a built-in tool for that ; with Linux or the Windows git command-line, I would do a find path/to/my/wowfolder/Interface/AddOns -name 'LibItemBuffs-Database-1.0.lua'
.
I added a check (and the a test) to see if a spell is declared in multiple database, which should not happen. It appeared there was a typo in the Paladin database (630 instead of 633, or something like that). This is fixed in latest LPS.
Tried the release arcadepro linked on my lock, it had an error were Paladin "Lay on Hands" had the "Metamorphosis: Doom" spellid causing the warlock playerspells to fail loading, after fixing that both trinkets had no rules.
Tried creating a new profile with no change, addons loaded for testing were ampere, bugsack, bugGrabber and AdibuttonAuras. So I'm has puzzled as you are as how it works for you but not me,
@ckaotik. Sorry. You does not annoy me. What is annoying me is my inability to understand what is failing with ABA on your computer.
I tried the following:
Virmen's Bite - Potion
Potion of Mogu Power - Potion
Potion of the Mountains - Potion
Haromm's Talisman (Flex) 4/4
Assurance of Consequence (Flex) 4/4
Thok's Tail Tip (Heroic) 4/4
Rook's Unlucky Talisman (Heroic) 4/4
Fusion-fire Core (Heroic WF) 4/4
Evil Eye of Galakras (Heroic) 4/4
Skeer's Bloodsoaked Talisman (Normal) 4/4
None of them display a border on their respective action buttons while their buff aura is active.
So then I tried old versions from Wowace. I tried releases 1.5, 1.6, & 1.7. None of these versions worked either.
I'd say probably no potion or trinket auras work. I've never really tracked these things before so never noticed.
In the config dialog:- potions are are not recognized ( no green overlay) . No buff related border is shown when potions are used. Trinkets are not recognized.
Additionally to this, racial spells do not work. Troll Berserking, Orc Bloodfury etc.
Ok, so I got something. Are your items in macro ? Because the WoW API does not allow to figure the item ID out of a macro, only its name, and LibItemBuffs only understand item IDs.
Nope. Drag a [Potion of the Mountains] onto the action bar. Click button. "good" border is not drawn on the button.
One weird thing is that on first log in no potions or trinkets are 'recognized' by the config panel. Performing a /reload fixes this. However, they still do not show any borders when activated.
I also created a new troll shaman with just ABA loaded. Berserking does not work at all.
Know it's already closed but just confirming it's fixed, looking at the commit I can only I've been there before too so you have my deepest simpathy
Here:
...\libs\10LibItemBuffs-1.0-8\LibItemBuffs-Database-1.0.lua:1240: in main chunk
On my version of LibItemBuffs-Database-1.0.lua, the calll to __UpgradeDatabase is done at line 2059, not 1240 as in your error message.According to the file history, the version with a call to __UpgradeDatabase at line 1240 was commited November 18th, 2013. I highly suspect an old version of LibItemBuffs-Database-1.0.lua with an fake high version number is hiding somewhere in your AddOns folder.
I would search for all "LibItemBuffs-Database-1.0.lua" in your AddOns folder to be sure. IIRC, Windows has a built-in tool for that ; with Linux or the Windows git command-line, I would do a find path/to/my/wowfolder/Interface/AddOns -name 'LibItemBuffs-Database-1.0.lua'.
Found it: AdiSpellHUD includes "LibItemBuffs-1.0", minor 5. Removing that library version fixes the error.
What's strange is that that version has any effect at all. It shouldn't since the version is so much lower. So you might need to check that incompatability at some point.
ABA was not loading LibItemBuffs-Database-1.0.lua because of the error in the TOC file. So when the version from AdiSpellHUD was loaded, it was the first to provide some data to LibItemBuffs-1.0.lua, which accepted it.
Well, the thing is, this happened even after you fixed the .toc file.That's why my error reports stated the minor-9 version with the minor-5 source line. So for some obscure reason, minor-5's LibItemBuffs-Database-1.0.lua
(minor-5) was being executed while running LibItemBuffs-1.0.lua
(minor-9).
1x LibItemBuffs-1.0\LibItemBuffs-1.0-9.lua:149: Usage: LibStub("LibItemBuffs-1.0"):__UpgradeDatabase(version, trinkets, consumables, enchantments)
[C]: in function `assert'
LibItemBuffs-1.0\LibItemBuffs-1.0-9.lua:149: in function `?'
...\libs\10LibItemBuffs-1.0-9\LibItemBuffs-Database-1.0.lua:1240: in main chunk
But I'll check again to make sure. Just on the wrong machine right now :)