400 lines
14 KiB
Lua
400 lines
14 KiB
Lua
--[[
|
|
TODO:
|
|
Add interrupts / stuns / breaks by looking at friendly spells cast on the GUID's
|
|
Add support for default UI (!!!)
|
|
Mob deaths remove namepaltes, handle glow maybe?
|
|
Rework for GetSpellInfo instead of GetCastingInfo
|
|
if no namepalte found GetSpellinfo!!!!!! BIG IQ
|
|
Watch for damage on avengers instead of cast
|
|
]]
|
|
|
|
--TSU
|
|
--COMBAT_LOG_EVENT_UNFILTERED HIDE_ALLSTATES_CAST NAME_PLATE_UNIT_REMOVED NAME_PLATE_UNIT_ADDED
|
|
function(allstates, e, ...)
|
|
local scan = false
|
|
local casterGUID, caster, spell, se, interrupted = false
|
|
if e == "COMBAT_LOG_EVENT_UNFILTERED" then
|
|
se = select(2, ...)
|
|
if se == "SPELL_CAST_START" or se == "SPELL_CAST_SUCCESS" then
|
|
local casterFlags = select(6, ...)
|
|
if (bit.band(casterFlags, 0x00000840) == 0x00000840) == true then --Hostile NPC
|
|
casterGUID = select(4, ...)
|
|
caster = select(5, ...)
|
|
spell = select(13, ...)
|
|
scan = true
|
|
end
|
|
elseif e == "SPELL_CAST_FAILED" then
|
|
if (bit.band(casterFlags, 0x00000840) == 0x00000840) == true then --Hostile NPC
|
|
casterGUID = select(4, ...)
|
|
if allstates[casterGUID] then
|
|
allstates[casterGUID].show = true
|
|
allstates[casterGUID].changed = true
|
|
allstates[casterGUID].progressType = "static"
|
|
allstates[casterGUID].value = 1
|
|
allstates[casterGUID].total = 1
|
|
C_Timer.After(1.5, function() WeakAuras.ScanEvents("HIDE_ALLSTATES_CAST", casterGUID) end)
|
|
end
|
|
end
|
|
end
|
|
elseif e == "HIDE_ALLSTATES_CAST" then
|
|
local casterGUID = ...
|
|
if allstates[casterGUID] then
|
|
allstates[casterGUID].show = false
|
|
allstates[casterGUID].changed = true
|
|
return true
|
|
end
|
|
elseif e == "NAME_PLATE_UNIT_REMOVED" then
|
|
local u = ...
|
|
local uGUID = UnitGUID(u)
|
|
--print(uGUID, "nameplate removed")
|
|
if allstates[uGUID] then
|
|
aura_env.glow(u, 0)
|
|
end
|
|
elseif e == "NAME_PLATE_UNIT_ADDED" then
|
|
local u = ...
|
|
local uGUID = UnitGUID(u)
|
|
--print(uGUID, "nameplate added")
|
|
if allstates[uGUID] then
|
|
aura_env.glow(u, 1)
|
|
end
|
|
end
|
|
if scan == true then
|
|
for i = 1, 40 do
|
|
local unit = "nameplate" .. i
|
|
if UnitExists(unit) then
|
|
local unitGUID = UnitGUID(unit)
|
|
if unitGUID == casterGUID then
|
|
if se and (se == "SPELL_CAST_START" or se == "SPELL_CAST_SUCCESS") then
|
|
if UnitCastingInfo(unit) then
|
|
if aura_env.spells[spell] then
|
|
local _, _, _, texture, startTime, endTime = UnitCastingInfo(unit)
|
|
local remainingTime = math.floor(endTime - (GetTime() * 1000))
|
|
local castTime = endTime - startTime
|
|
local castTimeDisplay = math.floor((castTime / 1000) * 10) / 10
|
|
local castDisplay = math.floor((remainingTime / 1000) * 10) / 10
|
|
local target = select(9, ...)
|
|
print(select(8, ...), select(9, ...), select(10, ...))
|
|
--print(endTime / 1000, castTimeDisplay, GetTime())
|
|
--print(unit)
|
|
--print("Adding", casterGUID, "to allstates")
|
|
if castTime > 1000 then
|
|
allstates[casterGUID] = {
|
|
changed = true,
|
|
show = true,
|
|
resort = true,
|
|
index = remainingTime,
|
|
icon = texture,
|
|
|
|
progressType = "timed",
|
|
expirationTime = endTime / 1000,
|
|
duration = castTimeDisplay,
|
|
autoHide = true,
|
|
|
|
name = caster,
|
|
spell = spell,
|
|
unitGUID = unitGUID,
|
|
castDisplay = castDisplay,
|
|
castTimeDisplay = castTimeDisplay,
|
|
unit = unit,
|
|
}
|
|
if aura_env.instructions[spell] ~= true then
|
|
allstates[casterGUID].instruction = aura_env.instructions[spell]
|
|
else
|
|
allstates[casterGUID].instruction = ""
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif se == "SPELL_CAST_SUCCESS" then
|
|
if aura_env.spells[spell] then
|
|
if not allstates[casterGUID] then
|
|
allstates[casterGUID] = {
|
|
changed = true,
|
|
show = true,
|
|
resort = true,
|
|
index = 0,
|
|
icon = texture,
|
|
|
|
progressType = "static",
|
|
value = 0,
|
|
total = 1,
|
|
|
|
name = caster,
|
|
spell = spell,
|
|
unitGUID = unitGUID,
|
|
unit = unit,
|
|
}
|
|
if aura_env.instructions[spell] ~= true then
|
|
allstates[casterGUID].instruction = aura_env.instructions[spell]
|
|
else
|
|
allstates[casterGUID].instruction = ""
|
|
end
|
|
C_Timer.After(1, function() WeakAuras.ScanEvents("HIDE_ALLSTATES_CAST", casterGUID) end)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
else
|
|
break
|
|
end
|
|
end
|
|
return true
|
|
end
|
|
end
|
|
|
|
--[[
|
|
DisplayText
|
|
Left: %total
|
|
Right: %castDisplay / %castTimeDisplay
|
|
]]
|
|
|
|
--ON SHOW?
|
|
PlaySoundFile("Interface\\AddOns\\WeakAuras\\Media\\Sounds\\RobotBlip.ogg", "Master")
|
|
if aura_env.statee.unit then
|
|
aura_env.glow(aura_env.statee.unit, 1)
|
|
end
|
|
|
|
--ON HIDE
|
|
if aura_env.statee.unit then
|
|
aura_env.glow(aura_env.statee.unit, 0)
|
|
end
|
|
|
|
--INIT
|
|
aura_env.spells = {
|
|
--["Emblazoned Swipe"] = true,
|
|
["Surge"] = true,
|
|
["Stygian Blast"] = true,
|
|
["Fragment of Despair"] = true,
|
|
["Ruinous Strike"] = true,
|
|
["Howling Dark "] = true,
|
|
|
|
["Dark Mending"] = true,
|
|
["Sacrifice Soul"] = true,
|
|
["Arrow Barrage"] = true,
|
|
["Knife Dance"] = true,
|
|
["Bonebreaking Strike"] = true,
|
|
["Brutal Assault"] = true,
|
|
["Indigestion"] = true,
|
|
["Coup de Grace"] = true,
|
|
["Raven's Dive"] = true,
|
|
|
|
["Shadow Wall"] = true,
|
|
["Demonic Mending"] = true,
|
|
["Devour Magic"] = true,
|
|
["Shadow Wave"] = true,
|
|
["Lumbering Crash"] = true,
|
|
["Vile Roots"] = true,
|
|
["Alluring Aroma"] = true,
|
|
["Blistering Rain"] = true,
|
|
["Floral Fulmination"] = true,
|
|
["Throw Arcane Tome"] = true,
|
|
["Throw Frost Tome"] = true,
|
|
["Throw Silence Tome"] = true,
|
|
["Summon Monstrosity"] = true,
|
|
["Blinding Glare"] = true,
|
|
["Stifling Satire"] = true,
|
|
["Beguiling Biography"] = true,
|
|
["Chaotic Energy"] = true,
|
|
|
|
["Hinder"] = true,
|
|
["Quelling Strike"] = true,
|
|
["Nightfall Orb"] = true,
|
|
["Seal Magic"] = true,
|
|
["Suppress"] = true,
|
|
["Charging Station"] = true,
|
|
["Bewitch"] = true,
|
|
["Fel Detonation"] = true,
|
|
|
|
["Unnerving Screech"] = true,
|
|
["Star Shower"] = true,
|
|
["Maddening Roar"] = true,
|
|
["Tormenting Eye"] = true,
|
|
|
|
["Storm"] = true,
|
|
["Arc Lightning"] = true,
|
|
["Mighty Slam"] = true,
|
|
["Thundering Stomp"] = true,
|
|
["Rejuvenating Waters"] = true,
|
|
["Lightning Prod"] = true,
|
|
["Restoration"] = true,
|
|
["Polymorph: Fish"] = true,
|
|
|
|
["Etch"] = true,
|
|
["Holy Radiance"] = true,
|
|
["Cleansing Flames"] = true,
|
|
["Unruly Yell"] = true,
|
|
|
|
["Soul Leech"] = true,
|
|
["Terrifying Wail"] = true,
|
|
["Pennies From Heaven"] = true,
|
|
["Spotlight"] = true, --Kite away
|
|
["Poetry Slam"] = true, --Interrupt
|
|
["Final Curtainaw"] = true, --Run ay
|
|
["Flashlight "] = true, --Face away
|
|
["Shadow Rejuvenation"] = true,
|
|
["Oath of Fealty"] = true,
|
|
|
|
["Unstable Energy"] = true,
|
|
["Fel Bomb"] = true,
|
|
|
|
["Bone Chilling Scream"] = true,
|
|
["Void Snap"] = true,
|
|
["Brackwater Barrage"] = true,
|
|
["Corrupted Bellow"] = true,
|
|
|
|
["Stone Gaze"] = true,
|
|
["Piercing Shards"] = true,
|
|
["Shatter"] = true,
|
|
["Stone Bolt"] = true,
|
|
|
|
["Decimate"] = true,
|
|
["Dread Screech"] = true,
|
|
["Howling Dark"] = true,
|
|
["Eternal Twilight"] = true,
|
|
["Fragment of Despair"] = true,
|
|
|
|
["Prophecies of Doom"] = true,
|
|
["Siphon Essence"] = true,
|
|
["Torment"] = true,
|
|
["Demonic Ascension"] = true,
|
|
["Arcane Reconstitution"] = true,
|
|
["Devour"] = true,
|
|
|
|
["Nightmares"] = true,
|
|
["Unleash Fury"] = true,
|
|
["Drain"] = true,
|
|
["Scorching"] = true,
|
|
["Meteor"] = true,
|
|
["Detonate"] = true,
|
|
|
|
["Surge"] = true,
|
|
["Stygian Blast"] = true,
|
|
["Fragment of Despair"] = true,
|
|
["Ruinous Strike"] = true,
|
|
["Howling Dark"] = true,
|
|
["Blood Assault"] = true,
|
|
["Dread Screech"] = true,
|
|
["Void Trap"] = true,
|
|
["Ravaging Darkness"] = true,
|
|
}
|
|
aura_env.instructions = {
|
|
--["Emblazoned Swipe"] = "TEST",
|
|
|
|
["Dark Mending"] = "Interrupt",
|
|
["Sacrifice Soul"] = true,
|
|
["Arrow Barrage"] = true,
|
|
["Knife Dance"] = true,
|
|
["Bonebreaking Strike"] = "Dodge",
|
|
["Brutal Assault"] = true,
|
|
["Indigestion"] = true,
|
|
["Coup de Grace"] = true,
|
|
["Raven's Dive"] = "Dodge",
|
|
|
|
["Shadow Wall"] = true,
|
|
["Demonic Mending"] = "Interrupt",
|
|
["Devour Magic"] = true,
|
|
["Shadow Wave"] = true,
|
|
["Lumbering Crash"] = "Stun",
|
|
["Vile Roots"] = true,
|
|
["Alluring Aroma"] = "Stun",
|
|
["Blistering Rain"] = "Stun",
|
|
["Floral Fulmination"] = true,
|
|
["Throw Arcane Tome"] = "Dodge",
|
|
["Throw Frost Tome"] = "Dodge",
|
|
["Throw Silence Tome"] = "Dodge",
|
|
["Summon Monstrosity"] = "Stun/Kill",
|
|
["Blinding Glare"] = "Face away",
|
|
["Stifling Satire"] = true,
|
|
["Beguiling Biography"] = true,
|
|
["Chaotic Energy"] = true,
|
|
|
|
["Hinder"] = "Interrupt",
|
|
["Quelling Strike"] = "Dodge",
|
|
["Nightfall Orb"] = "Interrupt",
|
|
["Seal Magic"] = "Interrupt",
|
|
["Suppress"] = "Interrupt",
|
|
["Charging Station"] = "Interrupt",
|
|
["Bewitch"] = "Interrupt",
|
|
["Fel Detonation"] = true,
|
|
|
|
["Unnerving Screech"] = "Interrupt",
|
|
["Star Shower"] = "Interrupt",
|
|
["Maddening Roar"] = true,
|
|
["Tormenting Eye"] = true,
|
|
|
|
["Storm"] = "Interrupt",
|
|
["Arc Lightning"] = "Interrupt",
|
|
["Mighty Slam"] = "Stun",
|
|
["Thundering Stomp"] = "Interrupt",
|
|
["Rejuvenating Waters"] = "Interrupt",
|
|
["Lightning Prod"] = "Interrupt",
|
|
["Restoration"] = "Interrupt",
|
|
["Polymorph: Fish"] = "Interrupt",
|
|
|
|
["Etch"] = "Interrupt",
|
|
["Holy Radiance"] = "Interrupt",
|
|
["Cleansing Flames"] = true,
|
|
["Unruly Yell"] = "Interrupt",
|
|
|
|
["Soul Leech"] = "Interrupt",
|
|
["Terrifying Wail"] = "Interrupt",
|
|
["Pennies From Heaven"] = true,
|
|
["Spotlight"] = "Move", --Kite away
|
|
["Poetry Slam"] = "Interrupt", --Interrupt
|
|
["Final Curtainaw"] = "Move", --Run ay
|
|
["Flashlight "] = "Face away", --Face away
|
|
["Shadow Rejuvenation"] = true,
|
|
["Oath of Fealty"] = true,
|
|
|
|
["Unstable Energy"] = true,
|
|
["Fel Bomb"] = "Soak",
|
|
|
|
["Bone Chilling Scream"] = "Interrupt",
|
|
["Void Snap"] = "Interrupt",
|
|
["Brackwater Barrage"] = "Dodge",
|
|
["Corrupted Bellow"] = true,
|
|
|
|
["Stone Gaze"] = "Interrupt",
|
|
["Piercing Shards"] = true,
|
|
["Shatter"] = true,
|
|
["Stone Bolt"] = "Interrupt",
|
|
|
|
["Decimate"] = true,
|
|
["Dread Screech"] = true,
|
|
["Howling Dark"] = true,
|
|
["Eternal Twilight"] = true,
|
|
["Fragment of Despair"] = true,
|
|
|
|
["Prophecies of Doom"] = "Stun",
|
|
["Siphon Essence"] = true,
|
|
["Torment"] = true,
|
|
["Demonic Ascension"] = "Interrupt",
|
|
["Arcane Reconstitution"] = true,
|
|
["Devour"] = true,
|
|
|
|
["Nightmares"] = true,
|
|
["Unleash Fury"] = true,
|
|
["Drain"] = true,
|
|
["Scorching"] = true,
|
|
["Meteor"] = true,
|
|
["Detonate"] = true,
|
|
|
|
["Surge"] = "Interrupt",
|
|
["Stygian Blast"] = "Interrupt",
|
|
["Fragment of Despair"] = "Soak",
|
|
["Ruinous Strike"] = "Dodge",
|
|
["Howling Dark"] = "Interrupt",
|
|
["Blood Assault"] = "Stun",
|
|
["Dread Screech"] = "Interrupt",
|
|
["Void Trap"] = true,
|
|
["Ravaging Darkness"] = true,
|
|
}
|
|
aura_env.glow = function(unit, s)
|
|
local nameplate = C_NamePlate.GetNamePlateForUnit(unit)
|
|
if nameplate and s == 1 then
|
|
ActionButton_ShowOverlayGlow(nameplate.UnitFrame.HealthBar)
|
|
else
|
|
ActionButton_HideOverlayGlow(nameplate.UnitFrame.HealthBar)
|
|
end
|
|
end
|