View Bug Report
default "npc" filter confuses players from other servers with NPCs
Bug #: 7221
File: SBF 3.2 Beta
Date: 01-27-11 12:45 PM
By: reuhman
Status: Unconfirmed

Surprisingly, the 2 frames i have set up to show only (de)buffs cast by NPCs do not filter some (de)buffs cast by players.
My intention was to use the pre-made "npc" filter to whitelist boss and trash encounter (de)buffs.
I have not done a lot of testing but it seems like this happens in battlegrounds/arenas and cross-server dungeon PUGs so i would assume that the "npc" filter treats players from other servers as NPCs.


(wonderful addon btw)

RSS 2.0 Feed for Bug CommentsNotes Sort Options
By: reuhman - 01-27-11 05: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 06: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 07: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.