Google brought me to
this thread on MMOC, with a script which seems to work:
Code:
local whitelist = {
["Goremaw's Bite"] = "player",
["Night Terrors"] = "player",
["Nightblade"] = "player",
["Symbols of Death"] = "player"
}
local function newShouldShowBuff(_,name,caster)
return name and (whitelist[name] == caster or whitelist[name] == "all")
end
local function Mixin(baseFrame)
baseFrame.UnitFrame.BuffFrame.ShouldShowBuff = newShouldShowBuff
end
local f = CreateFrame("Frame")
f:RegisterEvent("NAME_PLATE_UNIT_ADDED")
f:SetScript("OnEvent", function(_,_,unitId)
Mixin(C_NamePlate.GetNamePlateForUnit(unitId))
end)
for _,baseFrame in pairs(C_NamePlate.GetNamePlates()) do
Mixin(baseFrame)
end
Keep in mind this is a strict whitelist filter; buffs that normally show on nameplates as per default UI will be hidden unless they are added to the whitelist (I think that was already what you wanted, either way.)
https://gfycat.com/violetoldfashionedgraywolf
Haven't tested this for too long so I can't tell you if it runs into memory issues, but at least it doesn't make me puke inside my mouth by overwriting a global function.
Edit: Playing a bit more with this code enabled, it doesn't look like this works well at all. I had a few debuffs that weren't whitelisted that appeared on nameplates anyway.
Maybe somebody can figure out why it happens and fix the script, or come up with a different solution altogether :/