와우 프로그래밍에 대해서 잘은 모르고, 구글링 해서 얻은 코드를 눈치껏 수정해서 사용하는 유저입니다.

이전에 올렸던 기본 이름표에 원하는 버프 추가, 삭제하는 코드가 
아군 이름표를 수정하지 못하게 막는 패치 이후로 버그가 생겨 불편했었는데,
구글링 하다보니 적절한 코드를 찾아 수정해서 잘 작동하는 것을 확인하였고,
다른 분들도 알고 계시면 좋을 것 같아 팁글을 작성하게 되었습니다.

이전 코드와는 달리 길이가 길어서 매크로로는 불가능하고 
자주 쓰시는 애드온에 붙여 넣으셔야 합니다.



local whitelistall = {
  
}
local whitelist = {
  ["불의 숨결"] = 1,
  ["대지의 속박"] = 1,
  ["피뢰침"] = 1,
}
local blacklist = {
  ["호랑이의 눈"] = 1,
}

local function newShouldShowBuff(_,name,caster, nameplateShowPersonal, nameplateShowAll, duration)
  if (not name) then
    return false;
  end
  return nameplateShowAll 
    or (nameplateShowPersonal and (caster == "player" or caster == "pet" or caster == "vehicle") and (not blacklist[name])) 
    or (whitelist[name] and caster == "player")
    or whitelistall[name]
 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



whitelistall 에는 시전자와 상관없이 보이고 싶은 디버프를, 
whitelist에는 내가 시전했고 기본 이름표에서는 보이지 않던 디버프를,
blacklist는 기본 이름표에서 보여주지만 내가 삭제하고 싶은 디버프의 이름을 넣으면 됩니다.

아군 이름표를 켜놔도 버그가 생기지 않는 것을 확인하였습니다.