You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
4.1 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("The Slave Pens Trash", 547)
if not mod then return end
mod.displayName = CL.trash
mod:RegisterEnableMob(
17958, -- Coilfang Defender
17961, -- Coilfang Enchantress
21126, -- Coilfang Scale-Healer
17962, -- Coilfang Collaborator
21128 -- Coilfang Ray
)
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.defender = "Coilfang Defender"
L.enchantress = "Coilfang Enchantress"
L.healer = "Coilfang Scale-Healer"
L.collaborator = "Coilfang Collaborator"
L.ray = "Coilfang Ray"
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
--[[ Coilfang Defender ]]--
15655, -- Shield Slam
31554, -- Spell Reflection
--[[ Coilfang Enchantress ]]--
32173, -- Entangling Roots
--[[ Coilfang Scale-Healer ]]--
39378, -- Heal
--[[ Coilfang Coilfang Collaborator ]]--
33787, -- Cripple
--[[ Coilfang Ray ]]--
{34984, "SAY"}, -- Psychic Horror
}, {
[15655] = L.defender,
[32173] = L.enchantress,
[39378] = L.healer,
[33787] = L.collaborator,
[34984] = L.ray,
}
end
function mod:OnBossEnable()
self:RegisterMessage("BigWigs_OnBossEngage", "Disable")
self:Log("SPELL_AURA_APPLIED", "ShieldSlam", 15655)
self:Log("SPELL_AURA_APPLIED", "SpellReflection", 31554)
self:Log("SPELL_AURA_APPLIED", "EntanglingRoots", 32173)
self:Log("SPELL_AURA_REMOVED", "EntanglingRootsRemoved", 32173)
self:Log("SPELL_CAST_START", "Heal", 34945, 39378) -- normal, heroic
self:Log("SPELL_AURA_APPLIED", "Cripple", 33787)
self:Log("SPELL_AURA_REMOVED", "CrippleRemoved", 33787)
self:Log("SPELL_AURA_APPLIED", "PsychicHorror", 34984)
self:Log("SPELL_AURA_REMOVED", "PsychicHorrorRemoved", 34984)
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:ShieldSlam(args)
self:TargetMessageOld(args.spellId, args.destName, "red", "alarm", nil, nil, self:Healer())
self:TargetBar(args.spellId, 2, args.destName)
end
do
local prev = 0
function mod:SpellReflection(args)
local t = GetTime()
if t - prev > 1 then
prev = t
self:TargetMessageOld(args.spellId, args.destName, "yellow", "long", nil, nil, true)
end
end
end
do
local playerList, playersAffected = mod:NewTargetList(), 0
function mod:EntanglingRoots(args)
if not self:Player(args.destFlags) then return end -- filter out pets
playersAffected = playersAffected + 1
playerList[#playerList + 1] = args.destName
if #playerList == 1 then
self:Bar(args.spellId, 8)
self:ScheduleTimer("TargetMessageOld", 0.3, args.spellId, playerList, "orange", "info", nil, nil, self:Dispeller("magic"))
end
end
function mod:EntanglingRootsRemoved(args)
if not self:Player(args.destFlags) then return end -- filter out pets
playersAffected = playersAffected - 1
if playersAffected == 0 then
self:StopBar(args.spellName)
end
end
end
do
local prev = 0
function mod:Heal(args)
local t = GetTime()
if t - prev > 1 then
prev = t
self:MessageOld(39378, "orange", "alarm", CL.casting:format(args.spellName))
end
end
end
function mod:Cripple(args)
if self:Me(args.destGUID) or self:Dispeller("magic") then
self:TargetMessageOld(args.spellId, args.destName, "yellow", "info", nil, nil, true)
self:TargetBar(args.spellId, 15, args.destName)
end
end
function mod:CrippleRemoved(args)
self:StopBar(args.spellName, args.destName)
end
function mod:PsychicHorror(args)
if self:Me(args.destGUID) then
self:Say(args.spellId) -- helps prioritizing dispelling those who are about to run into some pack
end
self:TargetMessageOld(args.spellId, args.destName, "red", "alert", nil, nil, self:Dispeller("magic"))
self:TargetBar(args.spellId, 3, args.destName)
end
function mod:PsychicHorrorRemoved(args)
self:StopBar(args.spellName, args.destName)
end