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.

164 lines
5.0 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Heartsbane Triad", 1862, 2125)
if not mod then return end
mod:RegisterEnableMob(131825, 131823, 131824) -- Sister Briar, Sister Malady, Sister Solena
mod.engageId = 2113
mod.respawnTime = 20
--------------------------------------------------------------------------------
-- Locals
--
local playersWithRunicMark = 0
local bossWithIris = nil
local isMCApplied = false
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
-- General
{260805, "ICON"}, -- Focusing Iris
260773, -- Dire Ritual
-- Sister Solena
{260907, "ICON"}, -- Soul Manipulation
-- Sister Malady
{260703, "SAY", "SAY_COUNTDOWN", "FLASH", "PROXIMITY"}, -- Unstable Runic Mark
268086, -- Aura of Dread
-- Sister Briar
260741, -- Jagged Nettles
}, {
[260805] = "general",
[260907] = -17740, -- Sister Solena
[260703] = -17739, -- Sister Malady
[260741] = -17738, -- Sister Briar
}
end
function mod:OnBossEnable()
self:Log("SPELL_CAST_SUCCESS", "ClaimTheIris", 260852)
self:Log("SPELL_AURA_APPLIED", "FocusingIris", 260805)
self:Log("SPELL_CAST_START", "DireRitual", 260773)
self:Log("SPELL_CAST_START", "SoulManipulation", 260907)
self:Log("SPELL_AURA_APPLIED", "SoulManipulationApplied", 260926)
self:Log("SPELL_AURA_REMOVED", "SoulManipulationRemovedFromBoss", 260923)
self:Log("SPELL_AURA_APPLIED_DOSE", "AuraOfDread", 268086)
self:Log("SPELL_CAST_SUCCESS", "UnstableRunicMark", 260703)
self:Log("SPELL_AURA_APPLIED", "UnstableRunicMarkApplied", 260703)
self:Log("SPELL_AURA_REMOVED", "UnstableRunicMarkRemoved", 260703)
self:Log("SPELL_CAST_START", "JaggedNettles", 260741)
end
function mod:OnEngage()
playersWithRunicMark = 0
bossWithIris = nil
isMCApplied = false
self:Bar(260907, 8.5) -- Soul Manipulation
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:ClaimTheIris(args)
bossWithIris = args.sourceGUID
self:Message(260805, "cyan", CL.other:format(self:SpellName(260805), args.sourceName)) -- Focusing Iris
self:PlaySound(260805, "long") -- Focusing Iris
if not isMCApplied then
self:PrimaryIcon(260805, self:GetBossId(bossWithIris)) -- Focusing Iris
end
self:StopBar(260741) -- Jagged Nettles
self:StopBar(260703) -- Unstable Runic Mark
self:StopBar(260907) -- Soul Manipulation
end
function mod:FocusingIris(args)
local mobId = self:MobId(args.destGUID)
if mobId == 131825 then -- Sister Briar
self:Bar(260741, 8.5) -- Jagged Nettles
elseif mobId == 131823 then -- Sister Malady
self:Bar(260703, 9) -- Unstable Runic Mark
elseif mobId == 131824 then -- Sister Solena
self:Bar(260907, 8.5) -- Soul Manipulation
end
end
function mod:DireRitual(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "warning")
end
function mod:SoulManipulation(args)
self:Bar(args.spellId, 25.5)
self:CastBar(args.spellId, 2)
end
function mod:SoulManipulationApplied(args)
isMCApplied = true
self:TargetMessage(260907, "orange", args.destName) -- Soul Manipulation
self:PlaySound(260907, "alarm", nil, args.destName) -- Soul Manipulation
self:PrimaryIcon(260907, args.destName) -- Soul Manipulation, Move icon from boss to player
end
function mod:SoulManipulationRemovedFromBoss(args)
isMCApplied = false
if bossWithIris then -- safety-check for occasional disconnects
-- Move the icon away from the player and back to the boss
self:PrimaryIcon(260805, self:GetBossId(bossWithIris)) -- Focusing Iris
end
end
function mod:AuraOfDread(args)
if self:Me(args.destGUID) then
if args.amount % 3 == 0 or args.amount > 6 then
self:StackMessage(args.spellId, args.destName, args.amount, "blue")
self:PlaySound(args.spellId, args.amount > 6 and "warning" or "alert")
end
end
end
function mod:UnstableRunicMark(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alarm")
self:Bar(args.spellId, 12)
end
function mod:UnstableRunicMarkApplied(args)
playersWithRunicMark = playersWithRunicMark + 1
if playersWithRunicMark == 1 then
self:OpenProximity(args.spellId, 6)
end
if self:Me(args.destGUID) then
self:Say(args.spellId)
self:SayCountdown(args.spellId, 6)
self:Flash(args.spellId)
end
end
function mod:UnstableRunicMarkRemoved(args)
playersWithRunicMark = playersWithRunicMark - 1
if playersWithRunicMark == 0 then
self:CloseProximity(args.spellId)
end
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
do
local function printTarget(self, name, guid)
self:TargetMessage(260741, "orange", name) -- Jagged Nettles
self:PlaySound(260741, "alarm", nil, name) -- Jagged Nettles
end
function mod:JaggedNettles(args)
self:GetBossTarget(printTarget, 0.4, args.sourceGUID)
self:Bar(args.spellId, 13.5)
end
end