|View Bug Report|
|By: reuhman - 01-27-11 04:38 PM|
More info: i was not able to find a reliable way to reproduce this problem but the following "worked" most of the time:
0- set up a buff frame on the frame unit "target", with a whitelist containing only one filter: npc
1- enter a random battleground
2- get buffed by other players. optional: target your character, no buffs should show up in the new frame, except maybe for some buffs that actually come from NPCs such as a pet (hunter/warlock)
3- exit the battleground
4- target your character. some (but not all, sometimes) remaining buffs will be shown in the frame created at step 0.
Sometimes it gets weirder, i would target someone in a battleground and all the debuffs cast at this player would show up in the npc-filtered frame... i will try to give more feedback as i get more information.
|By: reuhman - 01-28-11 05:19 AM|
New information: today i witnessed the bug while i was questing in tol barad: i (alliance dk) hit a villager npc in rustberg village as a horde warlock cast corruption at it and the debuff poped up in the frame (as usual, target unit, filtered only by "npc" in a whitelist).
I thus thought the problem was related to opposite faction buffs/debuffs and went to do some testing around the town and i discovered that i could see a draenei hunter's serpent sting on his target, a dk's deseases, a human paladin's censure, some shadow priest's DoT, etc.
So that's as far as i can go... i now have no idea where this bug comes from. I'd be happy to help if you could give me some kind of clue.
|By: reuhman - 01-29-11 06:09 AM|
All right i spent a little time reading the code, though 2 days ago i didn't know the first thing about lua.
In SBFBuff.lua, in sbf.IterateAuras, i tried adding a debug line right at the beginning of the while loop:
self:Print(debugMask, "Spell", name, "cast by ", caster, "(UnitIsPlayer:<", (true and UnitIsPlayer(caster)), ">) on", unit, "(UnitIsPlayer:<", (true and UnitIsPlayer(unit)), ">)")
And here comes what i get when i target a self-buffed NPC attacked by another player (in my case, a shaman):
SBF: 2 Spell Bloodthirst cast by target (UnitIsPlayer:< nil >) on target (UnitIsPlayer:< nil >)
-- that's good, the NPC had Bloodthirst cast on itself (cf. villagers in tol barad peninsula) and it's not a player, fine.
SBF: 2 Spell Stormstrike cast by nil (UnitIsPlayer:< nil >) on target (UnitIsPlayer:< nil >)
-- this time stormstrike was cast by the shaman that is an actual player but UnitAura returned a nil unitCaster, thus the following code is not executed:
if caster then
buff.caster = caster
_, buff.casterClass = UnitClass(buff.caster)
buff.casterIsPlayer = (UnitIsPlayer(buff.caster))
Even if it was, (UnitIsPlayer(buff.caster)) would return nil
I hope this helps, i just wish i could rename the bug report title now that i see it has nothing to do with what i was suggesting at first.