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
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
|
|
|