commit from backup
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
local _, ns = ...
|
||||
local oUF = oUF or ns.oUF
|
||||
if not oUF then return end
|
||||
|
||||
local playerClass = select(2,UnitClass("player"))
|
||||
local CanDispel = {
|
||||
PRIEST = { Magic = true, Disease = true },
|
||||
SHAMAN = { Magic = false, Curse = true },
|
||||
PALADIN = { Magic = false, Poison = true, Disease = true },
|
||||
DRUID = { Magic = false, Curse = true, Poison = true, Disease = false },
|
||||
MONK = { Magic = false, Poison = true, Disease = true }
|
||||
}
|
||||
|
||||
local blackList = {
|
||||
[GetSpellInfo(140546)] = true, --Fully Mutated
|
||||
[GetSpellInfo(136184)] = true, --Thick Bones
|
||||
[GetSpellInfo(136186)] = true, --Clear mind
|
||||
[GetSpellInfo(136182)] = true, --Improved Synapses
|
||||
[GetSpellInfo(136180)] = true, --Keen Eyesight
|
||||
}
|
||||
|
||||
local SymbiosisName = GetSpellInfo(110309)
|
||||
local CleanseName = GetSpellInfo(4987)
|
||||
local dispellist = CanDispel[playerClass] or {}
|
||||
local origColors = {}
|
||||
local origBorderColors = {}
|
||||
local origPostUpdateAura = {}
|
||||
|
||||
local function GetDebuffType(unit, filter, filterTable)
|
||||
if not unit or not UnitCanAssist("player", unit) then return nil end
|
||||
local i = 1
|
||||
while true do
|
||||
local name, _, texture, _, debufftype, _,_,_,_,_, spellID = UnitAura(unit, i, "HARMFUL")
|
||||
if not texture then break end
|
||||
|
||||
local filterSpell = filterTable[spellID] or filterTable[name]
|
||||
|
||||
if(filterTable and filterSpell and filterSpell.enable) then
|
||||
return debufftype, texture, true, filterSpell.style, filterSpell.color
|
||||
elseif debufftype and (not filter or (filter and dispellist[debufftype])) and not blackList[name] then
|
||||
return debufftype, texture
|
||||
end
|
||||
i = i + 1
|
||||
end
|
||||
end
|
||||
|
||||
local function CheckTalentTree(tree)
|
||||
local activeGroup = GetActiveSpecGroup()
|
||||
|
||||
if activeGroup and GetSpecialization(false, false, activeGroup) then
|
||||
return tree == GetSpecialization(false, false, activeGroup)
|
||||
end
|
||||
end
|
||||
|
||||
local function CheckSpec(self, event, levels)
|
||||
if event == "CHARACTER_POINTS_CHANGED" and levels > 0 then return end
|
||||
|
||||
--Check for certain talents to see if we can dispel magic or not
|
||||
if playerClass == "PRIEST" then
|
||||
if CheckTalentTree(3) then
|
||||
dispellist.Disease = false
|
||||
else
|
||||
dispellist.Disease = true
|
||||
end
|
||||
elseif playerClass == "PALADIN" then
|
||||
if CheckTalentTree(1) then
|
||||
dispellist.Magic = true
|
||||
else
|
||||
dispellist.Magic = false
|
||||
end
|
||||
elseif playerClass == "SHAMAN" then
|
||||
if CheckTalentTree(3) then
|
||||
dispellist.Magic = true
|
||||
else
|
||||
dispellist.Magic = false
|
||||
end
|
||||
elseif playerClass == "DRUID" then
|
||||
if CheckTalentTree(4) then
|
||||
dispellist.Magic = true
|
||||
else
|
||||
dispellist.Magic = false
|
||||
end
|
||||
elseif playerClass == "MONK" then
|
||||
if CheckTalentTree(2) then
|
||||
dispellist.Magic = true
|
||||
else
|
||||
dispellist.Magic = false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function CheckSymbiosis()
|
||||
if GetSpellInfo(SymbiosisName) == CleanseName then
|
||||
dispellist.Disease = true
|
||||
else
|
||||
dispellist.Disease = false
|
||||
end
|
||||
end
|
||||
|
||||
local function Update(object, event, unit)
|
||||
if unit ~= object.unit then return; end
|
||||
|
||||
local debuffType, texture, wasFiltered, style, color = GetDebuffType(unit, object.DebuffHighlightFilter, object.DebuffHighlightFilterTable)
|
||||
if(wasFiltered) then
|
||||
if style == "GLOW" and object.DBHGlow then
|
||||
object.DBHGlow:Show()
|
||||
object.DBHGlow:SetBackdropBorderColor(color.r, color.g, color.b)
|
||||
elseif object.DBHGlow then
|
||||
object.DBHGlow:Hide()
|
||||
object.DebuffHighlight:SetVertexColor(color.r, color.g, color.b, color.a or object.DebuffHighlightAlpha or .5)
|
||||
end
|
||||
elseif debuffType then
|
||||
color = DebuffTypeColor[debuffType]
|
||||
if object.DebuffHighlightBackdrop and object.DBHGlow then
|
||||
object.DBHGlow:Show()
|
||||
object.DBHGlow:SetBackdropBorderColor(color.r, color.g, color.b)
|
||||
elseif object.DebuffHighlightUseTexture then
|
||||
object.DebuffHighlight:SetTexture(texture)
|
||||
else
|
||||
object.DebuffHighlight:SetVertexColor(color.r, color.g, color.b, object.DebuffHighlightAlpha or .5)
|
||||
end
|
||||
else
|
||||
if object.DBHGlow then
|
||||
object.DBHGlow:Hide()
|
||||
end
|
||||
|
||||
if object.DebuffHighlightUseTexture then
|
||||
object.DebuffHighlight:SetTexture(nil)
|
||||
else
|
||||
object.DebuffHighlight:SetVertexColor(0, 0, 0, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function Enable(object)
|
||||
-- if we're not highlighting this unit return
|
||||
if not object.DebuffHighlightBackdrop and not object.DebuffHighlight and not object.DBHGlow then
|
||||
return
|
||||
end
|
||||
-- if we're filtering highlights and we're not of the dispelling type, return
|
||||
if object.DebuffHighlightFilter and not CanDispel[playerClass] then
|
||||
return
|
||||
end
|
||||
|
||||
object:RegisterEvent("UNIT_AURA", Update)
|
||||
if playerClass == "DRUID" then
|
||||
object:RegisterEvent("SPELLS_CHANGED", CheckSymbiosis)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function Disable(object)
|
||||
object:UnregisterEvent("UNIT_AURA", Update)
|
||||
|
||||
if playerClass == "DRUID" then
|
||||
object:UnregisterEvent("SPELLS_CHANGED", CheckSymbiosis)
|
||||
end
|
||||
|
||||
if object.DBHGlow then
|
||||
object.DBHGlow:Hide()
|
||||
end
|
||||
|
||||
if object.DebuffHighlight then
|
||||
local color = origColors[object]
|
||||
if color then
|
||||
object.DebuffHighlight:SetVertexColor(color.r, color.g, color.b, color.a)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local f = CreateFrame("Frame")
|
||||
f:RegisterEvent("PLAYER_TALENT_UPDATE")
|
||||
f:RegisterEvent("CHARACTER_POINTS_CHANGED")
|
||||
f:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED")
|
||||
f:SetScript("OnEvent", CheckSpec)
|
||||
|
||||
oUF:AddElement('DebuffHighlight', Update, Enable, Disable)
|
||||
@@ -0,0 +1,14 @@
|
||||
## Interface: 30100
|
||||
## Title: oUF Debuff Highlight
|
||||
## Notes: Adds Debuff Highlighting to oUF.
|
||||
## Author: Ammo
|
||||
## Version: 1.0
|
||||
## X-Category: UnitFrame
|
||||
## Dependencies: oUF
|
||||
## X-Curse-Packaged-Version: r44-release
|
||||
## X-Curse-Project-Name: oUF_DebuffHighlight
|
||||
## X-Curse-Project-ID: o-uf_debuff-highlight
|
||||
## X-Curse-Repository-ID: wow/o-uf_debuff-highlight/mainline
|
||||
|
||||
oUF_DebuffHighlight.lua
|
||||
|
||||
Reference in New Issue
Block a user