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.
665 lines
23 KiB
665 lines
23 KiB
--------------------------------------------------------------------------------
|
|
-- TODO:
|
|
-- -- Stop/start bars during a dance? does it delay it or just keep the CD counting down?
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("The Council of Blood", 2296, 2426)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(
|
|
166969, -- Baroness Frieda
|
|
166970, -- Lord Stavros
|
|
166971) -- Castellan Niklaus
|
|
mod:SetEncounterID(2412)
|
|
mod:SetRespawnTime(30)
|
|
mod:SetStage(1)
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local bossesKilled = 0
|
|
local stavrosAlive = true
|
|
local friedaAlive = true
|
|
local niklausAlive = true
|
|
local killOrder = nil
|
|
local dancingFeverCount = 1
|
|
local mobCollector = {}
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.custom_on_repeating_dark_recital = "Repeating Dark Recital"
|
|
L.custom_on_repeating_dark_recital_desc = "Repeating Dark Recital say messages with icons {rt1}, {rt2} to find your partner while dancing."
|
|
|
|
L.custom_off_select_boss_order = "Mark Boss Kill Order"
|
|
L.custom_off_select_boss_order_desc = "Mark the order the raid will kill the bosses in with cross {rt7}. Requires raid leader or assist to mark."
|
|
L.custom_off_select_boss_order_value1 = "Niklaus -> Frieda -> Stavros"
|
|
L.custom_off_select_boss_order_value2 = "Frieda -> Niklaus -> Stavros"
|
|
L.custom_off_select_boss_order_value3 = "Stavros -> Niklaus -> Frieda"
|
|
L.custom_off_select_boss_order_value4 = "Niklaus -> Stavros -> Frieda"
|
|
L.custom_off_select_boss_order_value5 = "Frieda -> Stavros -> Niklaus"
|
|
L.custom_off_select_boss_order_value6 = "Stavros -> Frieda -> Niklaus"
|
|
|
|
L.dance_assist = "Dance Assist"
|
|
L.dance_assist_desc = "Show directional warnings for the dancing stage."
|
|
L.dance_assist_icon = "misc_arrowlup"
|
|
L.dance_assist_up = "|T450907:0:0:0:0:64:64:4:60:4:60|t Dance Forward |T450907:0:0:0:0:64:64:4:60:4:60|t"
|
|
L.dance_assist_right = "|T450908:0:0:0:0:64:64:4:60:4:60|t Dance Right |T450908:0:0:0:0:64:64:4:60:4:60|t"
|
|
L.dance_assist_down = "|T450905:0:0:0:0:64:64:4:60:4:60|t Dance Down |T450905:0:0:0:0:64:64:4:60:4:60|t"
|
|
L.dance_assist_left = "|T450906:0:0:0:0:64:64:4:60:4:60|t Dance Left |T450906:0:0:0:0:64:64:4:60:4:60|t"
|
|
-- These need to match the in-game boss yells
|
|
L.dance_yell_up = "Prance Forward" -- Prance Forward!
|
|
L.dance_yell_right = "Shimmy right" -- Shimmy right!
|
|
L.dance_yell_down = "Boogie down" -- Boogie down!
|
|
L.dance_yell_down_2 = L.dance_yell_down -- Needed because of esMX funkyness
|
|
L.dance_yell_left = "Sashay left" -- Sashay left!
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
local dutifulAttendantMarker = mod:AddMarkerOption(false, "npc", 8, -22948, 8) -- Dutiful Attendant
|
|
local waltzingVenthyrMarker = mod:AddMarkerOption(false, "npc", 8, -22653, 8) -- Waltzing Venthyr
|
|
local afterImageMarker = mod:AddMarkerOption(false, "npc", 6, -22433, 6) -- Afterimage of Baroness Frieda
|
|
function mod:GetOptions()
|
|
return {
|
|
"stages",
|
|
"custom_off_select_boss_order",
|
|
|
|
--[[ Castellan Niklaus ]]--
|
|
{346690, "TANK"}, -- Duelist's Riposte
|
|
346698, -- Summon Dutiful Attendant
|
|
dutifulAttendantMarker,
|
|
330978, -- Dredger Servants
|
|
330965, -- Castellan's Cadre
|
|
{346790, "TANK"}, -- Sintouched Blade
|
|
|
|
--[[ Baroness Frieda ]]--
|
|
{346651, "ME_ONLY"}, -- Drain Essence
|
|
337110, -- Dreadbolt Volley
|
|
346657, -- Prideful Eruption
|
|
346945, -- Manifest Pain
|
|
346681, -- Soul Spikes
|
|
|
|
--[[ Lord Stavros ]]--
|
|
327497, -- Evasive Lunge
|
|
{331634, "SAY", "ME_ONLY_EMPHASIZE"}, -- Dark Recital
|
|
"custom_on_repeating_dark_recital",
|
|
346800, -- Waltz of Blood
|
|
346303, -- Violent Uproar
|
|
waltzingVenthyrMarker,
|
|
|
|
--[[ Intermission: The Danse Macabre ]]--
|
|
330959, -- Danse Macabre
|
|
"dance_assist",
|
|
{330848, "ME_ONLY"}, -- Wrong Moves
|
|
|
|
--[[ Mythic ]]--
|
|
-22433, -- Afterimage of Baroness Frieda
|
|
afterImageMarker,
|
|
{347350, "SAY", "SAY_COUNTDOWN"}, -- Dancing Fever
|
|
},{
|
|
["stages"] = "general",
|
|
[346690] = -22147, -- Castellan Niklaus
|
|
[346651] = -22148, -- Baroness Frieda
|
|
[327497] = -22149, -- Lord Stavros
|
|
[330959] = -22146, -- Intermission: The Danse Macabre
|
|
[347350] = "mythic",
|
|
},{
|
|
[331634] = CL.link, -- Dark Recital (Link)
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:RegisterEvent("CHAT_MSG_MONSTER_YELL")
|
|
self:Death("BossDeath", 166969, 166970, 166971) -- Baroness Frieda, Lord Stavros, Castellan Niklaus
|
|
|
|
--[[ Castellan Niklaus ]]--
|
|
self:Log("SPELL_CAST_START", "DuelistsRiposte", 346690)
|
|
self:Log("SPELL_AURA_APPLIED", "DuelistsRiposteApplied", 346690)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "DuelistsRiposteApplied", 346690)
|
|
self:Log("SPELL_CAST_START", "SummonDutifulAttendant", 346698)
|
|
self:Log("SPELL_CAST_START", "DredgerServants", 330978)
|
|
self:Log("SPELL_CAST_SUCCESS", "CastellansCadre", 330965)
|
|
self:Log("SPELL_CAST_START", "SintouchedBlade", 346790)
|
|
|
|
--[[ Baroness Frieda ]]--
|
|
self:Log("SPELL_CAST_START", "DrainEssence", 346654)
|
|
self:Log("SPELL_AURA_APPLIED", "DrainEssenceApplied", 346651)
|
|
self:Log("SPELL_CAST_START", "DreadboltVolley", 337110)
|
|
self:Log("SPELL_CAST_START", "PridefulEruption", 346657)
|
|
self:Log("SPELL_CAST_START", "SoulSpikes", 346762)
|
|
self:Log("SPELL_AURA_APPLIED", "SoulSpikesApplied", 346681)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "SoulSpikesApplied", 346681)
|
|
|
|
--[[ Lord Stavros ]]--
|
|
self:Log("SPELL_CAST_START", "EvasiveLunge", 327497)
|
|
self:Log("SPELL_AURA_APPLIED", "EvasiveLungeApplied", 327610)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "EvasiveLungeApplied", 327610)
|
|
self:Log("SPELL_CAST_START", "DarkRecital", 331634)
|
|
self:Log("SPELL_AURA_APPLIED", "DarkRecitalApplied", 331637, 331636)
|
|
self:Log("SPELL_AURA_REMOVED", "DarkRecitalRemoved", 331637, 331636)
|
|
self:Log("SPELL_CAST_START", "WaltzOfBlood", 346800)
|
|
self:Log("SPELL_CAST_START", "ViolentUproar", 346303)
|
|
|
|
--[[ Intermission: The Danse Macabre ]]--
|
|
self:Log("SPELL_CAST_SUCCESS", "DanseMacabreBegins", 347376) -- Dance Area Trigger // This is when the NPC's start running to the stage
|
|
self:Log("SPELL_AURA_REMOVED", "DanseMacabreOver", 330959)
|
|
self:Log("SPELL_AURA_APPLIED", "WrongMovesApplied", 330848)
|
|
|
|
--[[ Mythic ]]--
|
|
self:Log("SPELL_AURA_APPLIED", "DancingFeverApplied", 347350)
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "GroundDamage", 346945) -- Manifest Pain
|
|
self:Log("SPELL_PERIODIC_DAMAGE", "GroundDamage", 346945)
|
|
self:Log("SPELL_PERIODIC_MISSED", "GroundDamage", 346945)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
bossesKilled = 0
|
|
friedaAlive = true
|
|
stavrosAlive = true
|
|
niklausAlive = true
|
|
dancingFeverCount = 1
|
|
mobCollector = {}
|
|
self:SetStage(1)
|
|
|
|
self:CDBar(346698, 7.5) -- Summon Dutiful Attendant
|
|
self:CDBar(346690, 18.5) -- Duelist's Riposte
|
|
|
|
self:CDBar(337110, 6) -- Dreadbolt Volley
|
|
self:CDBar(346651, 15.5) -- Drain Essence
|
|
|
|
self:CDBar(327497, 8.5) -- Evasive Lunge
|
|
self:CDBar(331634, 24) -- Dark Recital
|
|
|
|
if self:Mythic() then
|
|
self:CDBar(347350, 5, CL.count:format(self:SpellName(347350), dancingFeverCount)) -- Dancing Fever
|
|
self:RegisterEvent("INSTANCE_ENCOUNTER_ENGAGE_UNIT") -- Afterimage warnings
|
|
end
|
|
|
|
-- Mark kill order
|
|
killOrder = self:GetOption("custom_off_select_boss_order")
|
|
if killOrder == 1 or killOrder == 4 then -- Niklaus first
|
|
local boss = self:GetUnitIdByGUID(166971) -- Castellan Niklaus
|
|
if boss then
|
|
self:CustomIcon(false, boss, 7)
|
|
end
|
|
elseif killOrder == 2 or killOrder == 5 then -- Frieda First
|
|
local boss = self:GetUnitIdByGUID(166969) -- Baroness Frieda
|
|
if boss then
|
|
self:CustomIcon(false, boss, 7)
|
|
end
|
|
elseif killOrder == 3 or killOrder == 6 then -- Stavros First
|
|
local boss = self:GetUnitIdByGUID(166970) -- Lord Stavros
|
|
if boss then
|
|
self:CustomIcon(false, boss, 7)
|
|
end
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
function mod:INSTANCE_ENCOUNTER_ENGAGE_UNIT()
|
|
local unit, guid = self:GetBossId(172803) -- Afterimage of Baroness Frieda
|
|
if guid and not mobCollector[guid] then
|
|
mobCollector[guid] = true
|
|
self:Message(-22433, "red", CL.spawned:format(self:SpellName(-22433)), false)
|
|
self:PlaySound(-22433, "long")
|
|
if self:GetOption(afterImageMarker) then
|
|
self:CustomIcon(false, unit, 6)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:CHAT_MSG_MONSTER_YELL(event, msg, npcname)
|
|
if msg:find(L.dance_yell_up, nil, true) then
|
|
self:Message("dance_assist", "blue", L.dance_assist_up, false)
|
|
elseif msg:find(L.dance_yell_right, nil, true) then
|
|
self:Message("dance_assist", "blue", L.dance_assist_right, false)
|
|
elseif msg:find(L.dance_yell_down, nil, true) or msg:find(L.dance_yell_down_2, nil, true) then
|
|
self:Message("dance_assist", "blue", L.dance_assist_down, false)
|
|
elseif msg:find(L.dance_yell_left, nil, true) then
|
|
self:Message("dance_assist", "blue", L.dance_assist_left, false)
|
|
end
|
|
end
|
|
|
|
function mod:BossDeath(args)
|
|
bossesKilled = bossesKilled + 1
|
|
if bossesKilled > 2 then return end -- You win at 3
|
|
self:SetStage(bossesKilled + 1)
|
|
|
|
self:Message("stages", "green", CL.mob_killed:format(args.destName, bossesKilled, 3), false)
|
|
if args.mobId == 166969 then -- Frieda
|
|
friedaAlive = false
|
|
self:StopBar(346651) -- Drain Essence
|
|
self:StopBar(337110) -- Dreadbolt Volley
|
|
self:StopBar(346657) -- Prideful Eruption
|
|
elseif args.mobId == 166970 then -- Stavros
|
|
stavrosAlive = false
|
|
self:StopBar(327497) -- Evasive Lunge
|
|
self:StopBar(331634) -- Dark Recital
|
|
self:StopBar(346800) -- Waltz of Blood
|
|
elseif args.mobId == 166971 then -- Niklaus
|
|
niklausAlive = false
|
|
self:StopBar(346690) -- Duelist's Riposte
|
|
self:StopBar(346698) -- Summon Dutiful Attendant
|
|
self:StopBar(330978) -- Dredger Servants
|
|
end
|
|
|
|
if self:Mythic() then
|
|
if friedaAlive == false then
|
|
self:CDBar(337110, 20) -- Start/Reset the initial Dreadbolt Volley Afterimage Spawn.
|
|
end
|
|
if stavrosAlive == false then
|
|
self:CDBar(331634, 40) -- Start/Reset the initial Dark Recital Afterimage Spawn
|
|
end
|
|
end
|
|
|
|
if bossesKilled == 1 then
|
|
if friedaAlive then
|
|
self:CDBar(346651, 9) -- Drain Essence
|
|
self:CDBar(346657, 38) -- Prideful Eruption
|
|
end
|
|
if stavrosAlive then
|
|
self:CDBar(327497, 10.9) -- Evasive Lunge
|
|
self:CDBar(331634, 26.6) -- Dark Recital
|
|
self:CDBar(346800, 33.8) -- Waltz of Blood
|
|
end
|
|
if niklausAlive then
|
|
self:CDBar(330978, 8.1) -- Dredger Servants
|
|
self:CDBar(346690, 12.3) -- Duelist's Riposte
|
|
self:CDBar(346698, 42.3) -- Summon Dutiful Attendant
|
|
end
|
|
if killOrder == 2 or killOrder == 3 then -- Niklaus second
|
|
local boss = self:GetUnitIdByGUID(166971) -- Castellan Niklaus
|
|
if boss then
|
|
self:CustomIcon(false, boss, 7)
|
|
end
|
|
elseif killOrder == 1 or killOrder == 6 then -- Frieda second
|
|
local boss = self:GetUnitIdByGUID(166969) -- Baroness Frieda
|
|
if boss then
|
|
self:CustomIcon(false, boss, 7)
|
|
end
|
|
elseif killOrder == 4 or killOrder == 5 then -- Stavros second
|
|
local boss = self:GetUnitIdByGUID(166970) -- Lord Stavros
|
|
if boss then
|
|
self:CustomIcon(false, boss, 7)
|
|
end
|
|
end
|
|
elseif bossesKilled == 2 then
|
|
if friedaAlive then
|
|
self:CDBar(346651, 9) -- Drain Essence
|
|
self:CDBar(346657, 24) -- Prideful Eruption
|
|
self:CDBar(346681, 35.2) -- Soul Spikes
|
|
end
|
|
if stavrosAlive then
|
|
self:CDBar(331634, 9.4) -- Dark Recital
|
|
self:CDBar(327497, 15.2) -- Evasive Lunge
|
|
self:CDBar(346303, 29.8) -- Violent Uproar
|
|
self:CDBar(346800, 65.2) -- Waltz of Blood
|
|
end
|
|
if niklausAlive then
|
|
self:CDBar(346690, 12.3) -- Duelist's Riposte
|
|
self:CDBar(330965, 16.6) -- Castellan's Cadre
|
|
self:CDBar(346698, 25.2) -- Summon Dutiful Attendant
|
|
self:CDBar(330978, 43.7) -- Dredger Servants
|
|
end
|
|
if killOrder == 5 or killOrder == 6 then -- Niklaus last
|
|
local boss = self:GetUnitIdByGUID(166971) -- Castellan Niklaus
|
|
if boss then
|
|
self:CustomIcon(false, boss, 7)
|
|
end
|
|
elseif killOrder == 3 or killOrder == 4 then -- Frieda last
|
|
local boss = self:GetUnitIdByGUID(166969) -- Baroness Frieda
|
|
if boss then
|
|
self:CustomIcon(false, boss, 7)
|
|
end
|
|
elseif killOrder == 1 or killOrder == 2 then -- Stavros last
|
|
local boss = self:GetUnitIdByGUID(166970) -- Lord Stavros
|
|
if boss then
|
|
self:CustomIcon(false, boss, 7)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[ Castellan Niklaus ]]--
|
|
function mod:DuelistsRiposte(args)
|
|
self:Message(args.spellId, "purple")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
local cd = self:Mythic() and 7.5 or 8.5
|
|
if stavrosAlive then -- 2 tank bosses alive, longer CD
|
|
if self:Mythic() then
|
|
cd = bossesKilled == 0 and 18.7 or 15
|
|
else
|
|
cd = bossesKilled == 0 and 21.5 or 17
|
|
end
|
|
end
|
|
self:CDBar(args.spellId, cd)
|
|
end
|
|
|
|
function mod:DuelistsRiposteApplied(args)
|
|
self:NewStackMessage(args.spellId, "purple", args.destName, args.amount, 2)
|
|
end
|
|
|
|
do
|
|
function mod:DutifulAttendantMarking(event, unit, guid)
|
|
if self:MobId(guid) == 175992 then -- Dutiful Attendant
|
|
self:CustomIcon(dutifulAttendantMarker, unit, 8)
|
|
self:UnregisterTargetEvents()
|
|
end
|
|
end
|
|
|
|
function mod:SummonDutifulAttendant(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "warning")
|
|
self:CDBar(args.spellId, self:Mythic() and (bossesKilled == 2 and 22.5 or 45) or bossesKilled == 2 and 25.5 or 51.5)
|
|
if self:GetOption(dutifulAttendantMarker) then
|
|
self:RegisterTargetEvents("DutifulAttendantMarking")
|
|
self:ScheduleTimer("UnregisterTargetEvents", 10)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:DredgerServants(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "long")
|
|
self:CDBar(args.spellId, self:Mythic() and 45 or 51)
|
|
end
|
|
|
|
function mod:CastellansCadre(args)
|
|
self:Message(args.spellId, "cyan")
|
|
self:PlaySound(args.spellId, "info")
|
|
self:CDBar(args.spellId, self:Mythic() and 45 or 51.5)
|
|
end
|
|
|
|
function mod:SintouchedBlade(args)
|
|
self:Message(args.spellId, "purple")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
self:CDBar(args.spellId, 5)
|
|
end
|
|
|
|
--[[ Baroness Frieda ]]--
|
|
do
|
|
local playerList = {}
|
|
function mod:DrainEssence()
|
|
playerList = {}
|
|
self:CDBar(346651, self:Mythic() and 22.5 or bossesKilled == 1 and 20 or bossesKilled == 2 and 45 or 25)
|
|
end
|
|
|
|
function mod:DrainEssenceApplied(args)
|
|
playerList[#playerList+1] = args.destName
|
|
if self:Me(args.destGUID) then
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
self:NewTargetsMessage(args.spellId, "orange", playerList, 3)
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:DreadboltVolley(args)
|
|
if not friedaAlive and self:Mythic() then -- Afterimage stuff
|
|
local _, ready = self:Interrupter() -- warn regardless of target/focus
|
|
if ready then
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
local t = args.time
|
|
if t-prev > 15 then -- 3 casts, 3s~ between, only start bar for the first in the set
|
|
prev = t
|
|
self:CDBar(args.spellId, 45)
|
|
end
|
|
else -- Actual Frieda
|
|
local canDo, ready = self:Interrupter(args.sourceGUID)
|
|
if canDo then
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
|
if ready then
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
self:CDBar(args.spellId, 5.3) -- Spell Lockout?
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:PridefulEruption(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "warning")
|
|
self:CDBar(args.spellId, (bossesKilled == 1 and 120 or bossesKilled == 2 and 41.5)) -- Cooldown with 1 boss killed unconfirmed
|
|
|
|
end
|
|
|
|
function mod:SoulSpikes(args)
|
|
self:Message(346681, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(346681, "alert")
|
|
self:CDBar(346681, 41.5)
|
|
end
|
|
|
|
function mod:SoulSpikesApplied(args)
|
|
local amount = args.amount or 1
|
|
self:NewStackMessage(args.spellId, "orange", args.destName, amount)
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
|
|
--[[ Lord Stavros ]]--
|
|
function mod:EvasiveLunge(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
local cd = self:Mythic() and 7.5 or 11
|
|
if niklausAlive then -- 2 tank bosses alive, longer CD
|
|
if self:Mythic() then
|
|
cd = bossesKilled == 0 and 18.7 or 15
|
|
else
|
|
cd = bossesKilled == 0 and 21.5 or 17
|
|
end
|
|
end
|
|
self:CDBar(args.spellId, cd)
|
|
end
|
|
|
|
function mod:EvasiveLungeApplied(args)
|
|
local amount = args.amount or 1
|
|
if self:Me(args.destGUID) and not self:Tank() then
|
|
self:NewStackMessage(327497, "blue", args.destName, amount)
|
|
self:PlaySound(327497, "alarm")
|
|
elseif self:Tank() and self:Tank(args.destName) then
|
|
self:NewStackMessage(327497, "purple", args.destName, amount, 2)
|
|
end
|
|
end
|
|
|
|
do
|
|
local firstDarkRecitalTargetGUID, lastDarkRecitalName, darkrecitalPairCount = nil, nil, 0
|
|
local darkRecitalFallbackTimer, sayTimer = nil, nil
|
|
|
|
function mod:DarkRecital(args)
|
|
self:Message(args.spellId, "orange")
|
|
firstDarkRecitalTargetGUID = nil
|
|
darkrecitalPairCount = 0
|
|
if stavrosAlive == false then
|
|
self:Bar(args.spellId, bossesKilled == 1 and 60 or 37.7)
|
|
else
|
|
self:Bar(args.spellId, self:Mythic() and (bossesKilled == 0 and 45 or bossesKilled == 1 and 60 or 22.9) or bossesKilled == 0 and 51.5 or bossesKilled == 1 and 69.5 or 22.9)
|
|
end
|
|
end
|
|
|
|
function mod:DarkRecitalApplied(args)
|
|
if self:Me(args.destGUID) then
|
|
self:PlaySound(331634, "warning")
|
|
end
|
|
|
|
if args.spellId == 331636 then -- 1st Dark Recital Target
|
|
firstDarkRecitalTargetGUID = args.destGUID
|
|
lastDarkRecitalName = args.destName
|
|
darkrecitalPairCount = darkrecitalPairCount + 1
|
|
if self:Me(args.destGUID) then -- fallback if a partner is missing
|
|
darkRecitalFallbackTimer = self:ScheduleTimer("PersonalMessage", 0.1, 331634, false, CL.link_with:format("|cffff0000???"))
|
|
end
|
|
elseif args.spellId == 331637 and firstDarkRecitalTargetGUID then -- 2nd Dark Recital Target
|
|
if self:Me(args.destGUID) then -- We got 2nd debuff, so print last name
|
|
self:PersonalMessage(331634, false, CL.link_with_icon:format(darkrecitalPairCount, self:ColorName(lastDarkRecitalName)))
|
|
local icon = ("{rt%d}"):format(darkrecitalPairCount)
|
|
self:Yell(331634, icon, true)
|
|
if self:GetOption("custom_on_repeating_dark_recital") then
|
|
sayTimer = self:ScheduleRepeatingTimer("Yell", 1.5, false, icon, true)
|
|
end
|
|
elseif self:Me(firstDarkRecitalTargetGUID) then -- We got 1st debuff so this is our partner
|
|
self:PersonalMessage(331634, false, CL.link_with_icon:format(darkrecitalPairCount, self:ColorName(args.destName)))
|
|
local icon = ("{rt%d}"):format(darkrecitalPairCount)
|
|
self:Yell(331634, icon, true)
|
|
if self:GetOption("custom_on_repeating_dark_recital") then
|
|
sayTimer = self:ScheduleRepeatingTimer("Yell", 1.5, false, icon, true)
|
|
end
|
|
end
|
|
firstDarkRecitalTargetGUID = nil
|
|
if darkRecitalFallbackTimer then -- We printed above, so cancel this
|
|
self:CancelTimer(darkRecitalFallbackTimer)
|
|
darkRecitalFallbackTimer = nil
|
|
end
|
|
else -- Missing a partner, alternative message
|
|
if self:Me(args.destGUID) or self:Me(firstDarkRecitalTargetGUID) then
|
|
self:PersonalMessage(331634, false, CL.link_with:format("|cffff00ff???"))
|
|
if darkRecitalFallbackTimer then -- We printed above, so cancel this
|
|
self:CancelTimer(darkRecitalFallbackTimer)
|
|
darkRecitalFallbackTimer = nil
|
|
end
|
|
end
|
|
firstDarkRecitalTargetGUID = nil
|
|
end
|
|
end
|
|
|
|
function mod:DarkRecitalRemoved(args)
|
|
if self:Me(args.destGUID) then
|
|
self:Message(331634, "green", CL.removed:format(args.spellName))
|
|
self:PlaySound(331634, "info")
|
|
if sayTimer then
|
|
self:CancelTimer(sayTimer)
|
|
sayTimer = nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:WaltzOfBlood(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "long")
|
|
self:Bar(args.spellId, 60)
|
|
end
|
|
|
|
do
|
|
function mod:WaltzingVenthyrMarking(event, unit, guid)
|
|
if self:MobId(guid) == 176026 then -- Dancing Fool (only 1 targetable unit)
|
|
self:CustomIcon(waltzingVenthyrMarker, unit, 8)
|
|
self:UnregisterTargetEvents()
|
|
end
|
|
end
|
|
|
|
local prev = 0
|
|
function mod:ViolentUproar(args) -- Maybe a better way?
|
|
local t = args.time
|
|
if t-prev > 5 then
|
|
prev = t
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "warning")
|
|
self:Bar(args.spellId, 60)
|
|
if self:GetOption(waltzingVenthyrMarker) then
|
|
self:RegisterTargetEvents("WaltzingVenthyrMarking")
|
|
self:ScheduleTimer("UnregisterTargetEvents", 5)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[ Intermission: The Danse Macabre ]]--
|
|
function mod:DanseMacabreBegins(args)
|
|
self:Message(330959, "green") -- Dance Macabre
|
|
self:PlaySound(330959, "long")
|
|
self:Bar(330959, 38.8, self:SpellName(305757)) -- 305757 = "Dancing"
|
|
self:CastBar(330959, 10.2) -- Dance Macabre
|
|
|
|
self:PauseBar(346651) -- Drain Essence
|
|
self:PauseBar(337110) -- Dreadbolt Volley
|
|
self:PauseBar(346657) -- Prideful Eruption
|
|
self:PauseBar(346681) -- Soul Spikes
|
|
self:PauseBar(327497) -- Evasive Lunge
|
|
self:PauseBar(331634) -- Dark Recital
|
|
self:PauseBar(346800) -- Waltz of Blood
|
|
self:PauseBar(346690) -- Duelist's Riposte
|
|
self:PauseBar(346698) -- Summon Dutiful Attendant
|
|
self:PauseBar(330978) -- Dredger Servants
|
|
self:PauseBar(330965) -- Castellans Cadre
|
|
self:PauseBar(346303) -- Violent Uproar
|
|
if self:Mythic() then
|
|
-- Dancing Fever does not pause but has a timer reset when dancing.
|
|
-- Pauzing the bar right away so the player can see when the ability will come in line with others.
|
|
self:CDBar(347350, 5.8, CL.count:format(self:SpellName(347350), dancingFeverCount)) -- Dancing Fever
|
|
self:PauseBar(347350, CL.count:format(self:SpellName(347350), dancingFeverCount)) -- Dancing Fever
|
|
end
|
|
end
|
|
|
|
function mod:DanseMacabreOver(args)
|
|
self:ResumeBar(346651) -- Drain Essence
|
|
self:ResumeBar(337110) -- Dreadbolt Volley
|
|
self:ResumeBar(346657) -- Prideful Eruption
|
|
self:ResumeBar(346681) -- Soul Spikes
|
|
self:ResumeBar(327497) -- Evasive Lunge
|
|
self:ResumeBar(331634) -- Dark Recital
|
|
self:ResumeBar(346800) -- Waltz of Blood
|
|
self:ResumeBar(346690) -- Duelist's Riposte
|
|
self:ResumeBar(346698) -- Summon Dutiful Attendant
|
|
self:ResumeBar(330978) -- Dredger Servants
|
|
self:ResumeBar(330965) -- Castellans Cadre
|
|
self:ResumeBar(346303) -- Violent Uproar
|
|
self:ResumeBar(347350, CL.count:format(self:SpellName(347350), dancingFeverCount)) -- Dancing Fever
|
|
end
|
|
|
|
function mod:WrongMovesApplied(args)
|
|
self:TargetMessage(args.spellId, "orange", args.destName) -- ME_ONLY is enabled, but players can get all fails if they would like too
|
|
if self:Me(args.destGUID) then
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
end
|
|
|
|
--[[ Mythic ]]--
|
|
do
|
|
local playerList = {}
|
|
local prev = 0
|
|
function mod:DancingFeverApplied(args)
|
|
local t = args.time
|
|
if t-prev > 3 then
|
|
prev = t
|
|
playerList = {}
|
|
dancingFeverCount = dancingFeverCount + 1
|
|
self:CDBar(args.spellId, 60, CL.count:format(args.spellName, dancingFeverCount))
|
|
end
|
|
|
|
playerList[#playerList+1] = args.destName
|
|
if self:Me(args.destGUID) then
|
|
self:PlaySound(args.spellId, "warning")
|
|
end
|
|
self:NewTargetsMessage(args.spellId, "orange", playerList, 5, CL.count:format(args.spellName, dancingFeverCount-1))
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:GroundDamage(args)
|
|
if self:Me(args.destGUID) then
|
|
local t = args.time
|
|
if t-prev > 2 then
|
|
prev = t
|
|
self:PlaySound(args.spellId, "underyou")
|
|
self:PersonalMessage(args.spellId, "underyou")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|