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.
525 lines
20 KiB
525 lines
20 KiB
|
2 years ago
|
local mod = DBM:NewMod(1986, "DBM-Raids-Legion", 1, 946)
|
||
|
3 years ago
|
local L = mod:GetLocalizedStrings()
|
||
|
|
|
||
|
2 years ago
|
mod:SetRevision("20230618063432")
|
||
|
3 years ago
|
mod:SetCreatureID(122468, 122467, 122469)--122468 Noura, 122467 Asara, 122469 Diima, 125436 Thu'raya (mythic only)
|
||
|
|
mod:SetEncounterID(2073)
|
||
|
|
mod:SetBossHPInfoToHighest()
|
||
|
|
mod:SetUsedIcons(1, 2, 5, 6, 7, 8)
|
||
|
|
mod:SetHotfixNoticeRev(16963)
|
||
|
|
mod.respawnTime = 25
|
||
|
|
|
||
|
|
mod:RegisterCombat("combat")
|
||
|
|
|
||
|
|
mod:RegisterEventsInCombat(
|
||
|
|
"SPELL_CAST_START 245627 252861 253650 250648 250095",
|
||
|
|
"SPELL_CAST_SUCCESS 244899 253520 245532 250335 250333 250334 249793 245518 246329",
|
||
|
|
"SPELL_AURA_APPLIED 244899 253520 245518 245586 250757 249863",
|
||
|
|
"SPELL_AURA_APPLIED_DOSE 244899 245518",
|
||
|
|
"SPELL_AURA_REMOVED 253520 245586 249863 250757",
|
||
|
|
"SPELL_PERIODIC_DAMAGE 245634 253020",
|
||
|
|
"SPELL_PERIODIC_MISSED 245634 253020",
|
||
|
|
"UNIT_DIED",
|
||
|
|
"UNIT_TARGETABLE_CHANGED",
|
||
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1 boss2 boss3 boss4 boss5"
|
||
|
|
)
|
||
|
|
|
||
|
|
local Noura = DBM:EJ_GetSectionInfo(15967)
|
||
|
|
local Asara = DBM:EJ_GetSectionInfo(15968)
|
||
|
|
local Diima = DBM:EJ_GetSectionInfo(15969)
|
||
|
|
local Thuraya = DBM:EJ_GetSectionInfo(16398)
|
||
|
|
local torment = DBM:EJ_GetSectionInfo(16138)
|
||
|
|
|
||
|
|
--TODO, verify timerBossIncoming on all difficulties
|
||
|
|
--TODO, transcribe/video and tweak some timers for activation especially timerStormofDarknessCD which had some timer refreshed debug
|
||
|
|
--[[
|
||
|
|
(ability.id = 245627 or ability.id = 252861 or ability.id = 253650 or ability.id = 250095 or ability.id = 250648) and type = "begincast"
|
||
|
|
or (ability.id = 244899 or ability.id = 245518 or ability.id = 253520 or ability.id = 245532 or ability.id = 250335 or ability.id = 250333 or ability.id = 250334 or ability.id = 249793 or ability.id = 250757 or ability.id = 246329) and type = "cast"
|
||
|
|
or ability.id = 250757 and type = "applydebuff"
|
||
|
|
--]]
|
||
|
|
--All
|
||
|
|
local warnActivated = mod:NewTargetAnnounce(118212, 3, 78740, nil, nil, nil, nil, nil, true)
|
||
|
|
|
||
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(245634, nil, nil, nil, 1, 2)
|
||
|
|
local specWarnActivated = mod:NewSpecialWarningSwitchCount(118212, "Tank", nil, 2, 3, 2)
|
||
|
|
|
||
|
|
local timerBossIncoming = mod:NewTimer(61, "timerBossIncoming", nil, nil, nil, 1)
|
||
|
|
--local berserkTimer = mod:NewBerserkTimer(600)
|
||
|
|
--Noura, Mother of Flames
|
||
|
|
mod:AddTimerLine(Noura)
|
||
|
|
local warnFieryStrike = mod:NewStackAnnounce(244899, 2, nil, "Tank")
|
||
|
|
local warnWhirlingSaber = mod:NewSpellAnnounce(245627, 2)
|
||
|
|
local warnFulminatingPulse = mod:NewTargetAnnounce(253520, 3)
|
||
|
|
|
||
|
|
local specWarnFieryStrike = mod:NewSpecialWarningStack(244899, nil, 2, nil, nil, 1, 6)
|
||
|
|
local specWarnFieryStrikeOther = mod:NewSpecialWarningTaunt(244899, nil, nil, nil, 1, 2)
|
||
|
|
local specWarnFulminatingPulse = mod:NewSpecialWarningMoveAway(253520, nil, nil, nil, 1, 2)
|
||
|
|
local yellFulminatingPulse = mod:NewFadesYell(253520)
|
||
|
|
|
||
|
|
local timerFieryStrikeCD = mod:NewCDTimer(10.5, 244899, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
||
|
|
local timerWhirlingSaberCD = mod:NewNextTimer(35.1, 245627, nil, nil, nil, 3)--35-45
|
||
|
|
local timerFulminatingPulseCD = mod:NewNextTimer(40.1, 253520, nil, nil, nil, 3, nil, nil, nil, mod:IsHealer() and 2, 4)
|
||
|
|
|
||
|
|
mod:AddSetIconOption("SetIconOnFulminatingPulse2", 253520, false)
|
||
|
|
--Asara, Mother of Night
|
||
|
|
mod:AddTimerLine(Asara)
|
||
|
|
local specWarnShadowBlades = mod:NewSpecialWarningDodge(246329, nil, nil, nil, 2, 2)
|
||
|
|
local specWarnStormofDarkness = mod:NewSpecialWarningCount(252861, nil, nil, nil, 2, 2)
|
||
|
|
|
||
|
|
local timerShadowBladesCD = mod:NewCDTimer(27.6, 246329, nil, nil, nil, 3)
|
||
|
|
local timerStormofDarknessCD = mod:NewNextCountTimer(56.8, 252861, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON, nil, 3, 4)--57+
|
||
|
|
--Diima, Mother of Gloom
|
||
|
|
mod:AddTimerLine(Diima)
|
||
|
|
local warnChilledBlood = mod:NewTargetAnnounce(245586, 2)
|
||
|
|
local warnFlashFreeze = mod:NewStackAnnounce(245518, 2, nil, "Tank")
|
||
|
|
|
||
|
|
local specWarnFlashfreeze = mod:NewSpecialWarningStack(245518, nil, 2, nil, nil, 1, 6)
|
||
|
|
local specWarnFlashfreezeOther = mod:NewSpecialWarningTaunt(245518, nil, nil, nil, 1, 2)
|
||
|
|
local yellFlashfreeze = mod:NewYell(245518, nil, false)
|
||
|
|
local specWarnChilledBlood = mod:NewSpecialWarningTarget(245586, "Healer", nil, nil, 1, 2)
|
||
|
|
local specWarnOrbofFrost = mod:NewSpecialWarningDodge(253650, nil, nil, nil, 1, 12)
|
||
|
|
|
||
|
|
local timerFlashFreezeCD = mod:NewCDTimer(10.1, 245518, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
||
|
|
local timerChilledBloodCD = mod:NewNextTimer(25.4, 245586, nil, nil, nil, 5, nil, DBM_COMMON_L.HEALER_ICON)
|
||
|
|
local timerOrbofFrostCD = mod:NewNextTimer(30, 253650, nil, nil, nil, 3)
|
||
|
|
|
||
|
|
mod:AddSetIconOption("SetIconOnChilledBlood2", 245586, false)
|
||
|
|
mod:AddInfoFrameOption(245586, true)
|
||
|
|
--Thu'raya, Mother of the Cosmos (Mythic)
|
||
|
|
mod:AddTimerLine(Thuraya)
|
||
|
|
local warnCosmicGlare = mod:NewTargetAnnounce(250757, 3)
|
||
|
|
|
||
|
|
local specWarnTouchoftheCosmos = mod:NewSpecialWarningInterruptCount(250648, "HasInterrupt", nil, nil, 1, 2)
|
||
|
|
local specWarnCosmicGlare = mod:NewSpecialWarningYou(250757, nil, nil, nil, 1, 2)
|
||
|
|
local yellCosmicGlare = mod:NewYell(250757)
|
||
|
|
local yellCosmicGlareFades = mod:NewShortFadesYell(250757)
|
||
|
|
|
||
|
|
local timerCosmicGlareCD = mod:NewCDTimer(15.8, 250757, nil, nil, nil, 3, nil, DBM_COMMON_L.HEROIC_ICON)
|
||
|
|
|
||
|
|
mod:AddSetIconOption("SetIconOnCosmicGlare", 250757, true)
|
||
|
|
mod:AddBoolOption("IgnoreFirstKick", false)
|
||
|
|
--Torment of the Titans
|
||
|
|
mod:AddTimerLine(torment)
|
||
|
|
local specWarnTormentofTitans = mod:NewSpecialWarningSpell("ej16138", nil, nil, nil, 1, 7)
|
||
|
|
|
||
|
|
----Activations timers
|
||
|
|
local timerMachinationsofAmanThulCD = mod:NewCastTimer(85, 250335, nil, nil, nil, 6, nil, nil, nil, 1, 5)
|
||
|
|
local timerFlamesofKhazgorothCD = mod:NewCastTimer(85, 250333, nil, nil, nil, 6, nil, nil, nil, 1, 5)
|
||
|
|
local timerSpectralArmyofNorgannonCD = mod:NewCastTimer(85, 250334, nil, nil, nil, 6, nil, nil, nil, 1, 5)
|
||
|
|
local timerFuryofGolgannethCD = mod:NewCastTimer(85, 249793, nil, nil, nil, 6, nil, nil, nil, 1, 5)
|
||
|
|
----Actual phase stuff
|
||
|
|
local timerMachinationsofAman = mod:NewCastTimer(20, 250095, nil, nil, nil, 5, nil, DBM_COMMON_L.DAMAGE_ICON)
|
||
|
|
|
||
|
|
mod:AddNamePlateOption("NPAuraOnVisageofTitan", 249863)
|
||
|
|
--MISC option separated on purpose
|
||
|
|
mod:AddMiscLine(DBM_CORE_L.OPTION_CATEGORY_DROPDOWNS)
|
||
|
|
mod:AddDropdownOption("InterruptBehavior", {"Three", "Four", "Five"}, "Three", "misc")
|
||
|
|
mod:AddDropdownOption("TauntBehavior", {"TwoMythicThreeNon", "TwoAlways", "ThreeAlways"}, "TwoMythicThreeNon", "misc")
|
||
|
|
|
||
|
|
local titanCount = {}
|
||
|
|
mod.vb.stormCount = 0
|
||
|
|
mod.vb.chilledCount = 0
|
||
|
|
mod.vb.MachinationsLeft = 0
|
||
|
|
mod.vb.fpIcon = 6
|
||
|
|
mod.vb.chilledIcon = 1
|
||
|
|
mod.vb.glareIcon = 4
|
||
|
|
mod.vb.touchCosmosCast = 0
|
||
|
|
mod.vb.interruptBehavior = "Three"
|
||
|
|
mod.vb.ignoreFirstInterrupt = false
|
||
|
|
mod.vb.firstCastHappend = false
|
||
|
|
local CVAR1, CVAR2 = nil, nil
|
||
|
|
|
||
|
|
function mod:OnCombatStart(delay)
|
||
|
|
self.vb.stormCount = 0
|
||
|
|
self.vb.chilledCount = 0
|
||
|
|
self.vb.MachinationsLeft = 0
|
||
|
|
self.vb.fpIcon = 4
|
||
|
|
self.vb.chilledIcon = 1
|
||
|
|
self.vb.glareIcon = 4
|
||
|
|
self.vb.touchCosmosCast = 0
|
||
|
|
self.vb.interruptBehavior = self.Options.InterruptBehavior--Default should be users setting
|
||
|
|
self.vb.ignoreFirstInterrupt = false
|
||
|
|
self.vb.firstCastHappend = false
|
||
|
|
if self:IsMythic() then
|
||
|
|
self:SetCreatureID(122468, 122467, 122469, 125436)
|
||
|
|
else
|
||
|
|
self:SetCreatureID(122468, 122467, 122469)
|
||
|
|
end
|
||
|
|
--Diima, Mother of Gloom is first one to go inactive
|
||
|
|
timerWhirlingSaberCD:Start(8-delay)
|
||
|
|
timerFieryStrikeCD:Start(11-delay)
|
||
|
|
timerShadowBladesCD:Start(10.9-delay)
|
||
|
|
if not self:IsEasy() then
|
||
|
|
timerFulminatingPulseCD:Start(20.3-delay)
|
||
|
|
timerStormofDarknessCD:Start(26-delay, 1)
|
||
|
|
end
|
||
|
|
if self.Options.NPAuraOnVisageofTitan then
|
||
|
|
DBM:FireEvent("BossMod_EnableHostileNameplates")
|
||
|
|
end
|
||
|
|
if UnitIsGroupLeader("player") and not self:IsLFR() then
|
||
|
|
if self.Options.InterruptBehavior == "Three" then
|
||
|
|
self:SendSync("Three", self.Options.IgnoreFirstKick)
|
||
|
|
elseif self.Options.InterruptBehavior == "Four" then
|
||
|
|
self:SendSync("Four", self.Options.IgnoreFirstKick)
|
||
|
|
elseif self.Options.InterruptBehavior == "Five" then
|
||
|
|
self:SendSync("Five", self.Options.IgnoreFirstKick)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnCombatEnd()
|
||
|
|
table.wipe(titanCount)
|
||
|
|
if self.Options.InfoFrame then
|
||
|
|
DBM.InfoFrame:Hide()
|
||
|
|
end
|
||
|
|
if self.Options.NPAuraOnVisageofTitan then
|
||
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnTimerRecovery()
|
||
|
|
if self:IsMythic() then
|
||
|
|
self:SetCreatureID(122468, 122467, 122469, 125436)
|
||
|
|
else
|
||
|
|
self:SetCreatureID(122468, 122467, 122469)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_CAST_START(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if spellId == 245627 then
|
||
|
|
warnWhirlingSaber:Show()
|
||
|
|
timerWhirlingSaberCD:Start()
|
||
|
|
elseif spellId == 252861 then
|
||
|
|
self.vb.stormCount = self.vb.stormCount + 1
|
||
|
|
specWarnStormofDarkness:Show(self.vb.stormCount)
|
||
|
|
specWarnStormofDarkness:Play("findshelter")
|
||
|
|
timerStormofDarknessCD:Start(56.8, self.vb.stormCount+1)
|
||
|
|
elseif spellId == 253650 then
|
||
|
|
specWarnOrbofFrost:Show()
|
||
|
|
specWarnOrbofFrost:Play("iceorbmove")
|
||
|
|
timerOrbofFrostCD:Start()
|
||
|
|
elseif spellId == 250095 and self:AntiSpam(3, 1) then
|
||
|
|
timerMachinationsofAman:Start()
|
||
|
|
elseif spellId == 250648 then
|
||
|
|
if (self.vb.interruptBehavior == "Three" and self.vb.touchCosmosCast == 4) or (self.vb.interruptBehavior == "Four" and self.vb.touchCosmosCast == 5) or (self.vb.interruptBehavior == "Five" and self.vb.touchCosmosCast == 6) then
|
||
|
|
self.vb.touchCosmosCast = 0
|
||
|
|
end
|
||
|
|
if self.vb.firstCastHappend or not self.vb.ignoreFirstInterrupt then
|
||
|
|
self.vb.touchCosmosCast = self.vb.touchCosmosCast + 1
|
||
|
|
end
|
||
|
|
local kickCount = self.vb.touchCosmosCast
|
||
|
|
specWarnTouchoftheCosmos:Show(args.sourceName, kickCount)
|
||
|
|
if kickCount == 0 then
|
||
|
|
specWarnTouchoftheCosmos:Play("kickcast")
|
||
|
|
else
|
||
|
|
specWarnTouchoftheCosmos:Play("kick"..kickCount.."r")
|
||
|
|
end
|
||
|
|
if not self.vb.firstCastHappend then self.vb.firstCastHappend = true end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if spellId == 244899 then
|
||
|
|
timerFieryStrikeCD:Start()
|
||
|
|
elseif spellId == 245518 then
|
||
|
|
timerFlashFreezeCD:Start()
|
||
|
|
elseif spellId == 253520 and self:AntiSpam(3, 3) then
|
||
|
|
timerFulminatingPulseCD:Start()
|
||
|
|
elseif spellId == 245532 and self:AntiSpam(3, 2) then
|
||
|
|
timerChilledBloodCD:Start()
|
||
|
|
specWarnChilledBlood:Play("healall")
|
||
|
|
elseif (spellId == 250335 or spellId == 250333 or spellId == 250334 or spellId == 249793) and self:IsInCombat() then--Torment selections
|
||
|
|
if spellId == 250335 then--Machinations of Aman'Thul
|
||
|
|
timerMachinationsofAmanThulCD:Start()
|
||
|
|
elseif spellId == 250333 then--Flames of Khaz'goroth
|
||
|
|
timerFlamesofKhazgorothCD:Start()
|
||
|
|
elseif spellId == 250334 then--Spectral Army of Norgannon
|
||
|
|
timerSpectralArmyofNorgannonCD:Start()
|
||
|
|
elseif spellId == 249793 then--Fury of Golganneth
|
||
|
|
timerFuryofGolgannethCD:Start()
|
||
|
|
end
|
||
|
|
elseif spellId == 246329 then--Shadow Blades
|
||
|
|
specWarnShadowBlades:Show()
|
||
|
|
specWarnShadowBlades:Play("watchwave")
|
||
|
|
timerShadowBladesCD:Start()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_AURA_APPLIED(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if spellId == 244899 then
|
||
|
|
local uId = DBM:GetRaidUnitId(args.destName)
|
||
|
|
if self:IsTanking(uId) then
|
||
|
|
local amount = args.amount or 1
|
||
|
|
local tauntStack = 3
|
||
|
|
if self:IsMythic() and self.Options.TauntBehavior == "TwoMythicThreeNon" or self.Options.TauntBehavior == "TwoAlways" then
|
||
|
|
tauntStack = 2
|
||
|
|
end
|
||
|
|
if amount >= tauntStack then
|
||
|
|
if args:IsPlayer() then--At this point the other tank SHOULD be clear.
|
||
|
|
specWarnFieryStrike:Show(amount)
|
||
|
|
specWarnFieryStrike:Play("stackhigh")
|
||
|
|
else
|
||
|
|
local _, _, _, _, _, expireTime = DBM:UnitDebuff("player", spellId)
|
||
|
|
local remaining
|
||
|
|
if expireTime then
|
||
|
|
remaining = expireTime-GetTime()
|
||
|
|
end
|
||
|
|
if not UnitIsDeadOrGhost("player") and (not remaining or remaining and remaining < 10) then
|
||
|
|
specWarnFieryStrikeOther:Show(args.destName)
|
||
|
|
specWarnFieryStrikeOther:Play("tauntboss")
|
||
|
|
else
|
||
|
|
warnFieryStrike:Show(args.destName, amount)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
else
|
||
|
|
warnFieryStrike:Show(args.destName, amount)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
elseif spellId == 253520 then
|
||
|
|
warnFulminatingPulse:CombinedShow(0.3, args.destName)
|
||
|
|
if args:IsPlayer() then
|
||
|
|
specWarnFulminatingPulse:Show()
|
||
|
|
specWarnFulminatingPulse:Play("runout")
|
||
|
|
yellFulminatingPulse:Countdown(10)
|
||
|
|
end
|
||
|
|
if self.Options.SetIconOnFulminatingPulse2 then
|
||
|
|
self:SetIcon(args.destName, self.vb.fpIcon)
|
||
|
|
end
|
||
|
|
self.vb.fpIcon = self.vb.fpIcon + 1
|
||
|
|
if self.vb.fpIcon == 9 then
|
||
|
|
self.vb.fpIcon = 6
|
||
|
|
end
|
||
|
|
elseif spellId == 245518 then
|
||
|
|
local uId = DBM:GetRaidUnitId(args.destName)
|
||
|
|
if self:IsTanking(uId) then
|
||
|
|
local amount = args.amount or 1
|
||
|
|
local tauntStack = 3
|
||
|
|
if self:IsMythic() and self.Options.TauntBehavior == "TwoMythicThreeNon" or self.Options.TauntBehavior == "TwoAlways" then
|
||
|
|
tauntStack = 2
|
||
|
|
end
|
||
|
|
if amount >= tauntStack then--Lasts 30 seconds, unknown reapplication rate, fine tune!
|
||
|
|
if args:IsPlayer() then--At this point the other tank SHOULD be clear.
|
||
|
|
specWarnFlashfreeze:Show(amount)
|
||
|
|
specWarnFlashfreeze:Play("stackhigh")
|
||
|
|
else--Taunt as soon as stacks are clear, regardless of stack count.
|
||
|
|
local _, _, _, _, _, expireTime = DBM:UnitDebuff("player", spellId)
|
||
|
|
local remaining
|
||
|
|
if expireTime then
|
||
|
|
remaining = expireTime-GetTime()
|
||
|
|
end
|
||
|
|
if not UnitIsDeadOrGhost("player") and (not remaining or remaining and remaining < 9.6) then
|
||
|
|
specWarnFlashfreezeOther:Show(args.destName)
|
||
|
|
specWarnFlashfreezeOther:Play("tauntboss")
|
||
|
|
else
|
||
|
|
warnFlashFreeze:Show(args.destName, amount)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
else
|
||
|
|
warnFlashFreeze:Show(args.destName, amount)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
elseif spellId == 245586 then
|
||
|
|
self.vb.chilledCount = self.vb.chilledCount + 1
|
||
|
|
if self.Options.specwarn245586target then
|
||
|
|
specWarnChilledBlood:CombinedShow(0.3, args.destName)
|
||
|
|
else
|
||
|
|
warnChilledBlood:CombinedShow(0.3, args.destName)
|
||
|
|
end
|
||
|
|
if self.Options.InfoFrame and not DBM.InfoFrame:IsShown() then
|
||
|
|
DBM.InfoFrame:SetHeader(args.spellName)
|
||
|
|
DBM.InfoFrame:Show(6, "playerabsorb", args.spellName, select(16, DBM:UnitDebuff(args.destName, args.spellName)))
|
||
|
|
end
|
||
|
|
if self.Options.SetIconOnChilledBlood2 then
|
||
|
|
self:SetIcon(args.destName, self.vb.chilledIcon)
|
||
|
|
end
|
||
|
|
self.vb.chilledIcon = self.vb.chilledIcon + 1
|
||
|
|
if self.vb.chilledIcon == 3 then
|
||
|
|
self.vb.chilledIcon = 5
|
||
|
|
elseif self.vb.chilledIcon == 6 then
|
||
|
|
self.vb.chilledIcon = 1
|
||
|
|
end
|
||
|
|
elseif spellId == 250757 then
|
||
|
|
warnCosmicGlare:CombinedShow(0.3, args.destName)
|
||
|
|
if args:IsPlayer() then
|
||
|
|
specWarnCosmicGlare:Show()
|
||
|
|
specWarnCosmicGlare:Play("targetyou")
|
||
|
|
yellCosmicGlare:Yell()
|
||
|
|
yellCosmicGlareFades:Countdown(4)
|
||
|
|
end
|
||
|
|
if self.Options.SetIconOnCosmicGlare then
|
||
|
|
self:SetIcon(args.destName, self.vb.glareIcon)
|
||
|
|
end
|
||
|
|
self.vb.glareIcon = self.vb.glareIcon + 1
|
||
|
|
if self.vb.glareIcon == 6 then
|
||
|
|
self.vb.glareIcon = 4
|
||
|
|
end
|
||
|
|
elseif spellId == 249863 then
|
||
|
|
if self.Options.NPAuraOnVisageofTitan then
|
||
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId, nil, 30)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
||
|
|
|
||
|
|
function mod:SPELL_AURA_REMOVED(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if spellId == 253520 then
|
||
|
|
if args:IsPlayer() then
|
||
|
|
yellFulminatingPulse:Cancel()
|
||
|
|
end
|
||
|
|
if self.Options.SetIconOnFulminatingPulse2 then
|
||
|
|
self:SetIcon(args.destName, 0)
|
||
|
|
end
|
||
|
|
elseif spellId == 245586 then
|
||
|
|
self.vb.chilledCount = self.vb.chilledCount - 1
|
||
|
|
if self.Options.InfoFrame and self.vb.chilledCount == 0 then
|
||
|
|
DBM.InfoFrame:Hide()
|
||
|
|
end
|
||
|
|
if self.Options.SetIconOnChilledBlood2 then
|
||
|
|
self:SetIcon(args.destName, 0)
|
||
|
|
end
|
||
|
|
elseif spellId == 249863 then--Bonecage Armor
|
||
|
|
if self.Options.NPAuraOnVisageofTitan then
|
||
|
|
DBM.Nameplate:Hide(true, args.destGUID, spellId)
|
||
|
|
end
|
||
|
|
elseif spellId == 250757 then
|
||
|
|
if args:IsPlayer() then
|
||
|
|
yellCosmicGlareFades:Cancel()
|
||
|
|
end
|
||
|
|
if self.Options.SetIconOnCosmicGlare then
|
||
|
|
self:SetIcon(args.destName, 0)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
||
|
|
if (spellId == 245634 or spellId == 253020) and destGUID == UnitGUID("player") and self:AntiSpam(2, 4) then
|
||
|
|
specWarnGTFO:Show(spellName)
|
||
|
|
specWarnGTFO:Play("runaway")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
||
|
|
|
||
|
|
function mod:UNIT_DIED(args)
|
||
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
||
|
|
if cid == 125837 then--Torment of Amanthul
|
||
|
|
self.vb.MachinationsLeft = self.vb.MachinationsLeft - 1
|
||
|
|
if self.vb.MachinationsLeft == 0 then
|
||
|
|
timerMachinationsofAman:Stop()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
--"<94.13 21:56:15> [UNIT_SPELLCAST_SUCCEEDED] Diima, Mother of Gloom(??) [[boss3:Torment of Khaz'goroth::3-3779-1712-25990-259066-00119F734F:259066]]", -- [1126]
|
||
|
|
--"<94.33 21:56:15> [CHAT_MSG_RAID_BOSS_EMOTE] |TInterface\\Icons\\ABILITY_MONK_BREATHOFFIRE:20|tThe Coven prepares to unleash the |cFFFF0000|Hspell:245671|h[Flames of Khaz'goroth]|h|r!#Diima, Mother of Gloom###
|
||
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
||
|
|
if spellId == 259068 or spellId == 259066 or spellId == 259069 or spellId == 259070 then
|
||
|
|
local name = UnitName(uId)
|
||
|
|
name = string.split(",", name)--Strip title
|
||
|
|
specWarnTormentofTitans:Show()
|
||
|
|
if spellId == 259068 then--Torment of Aman'Thul
|
||
|
|
self.vb.MachinationsLeft = 4
|
||
|
|
specWarnTormentofTitans:Play("killmob")
|
||
|
|
elseif spellId == 259066 then--Torment of Khaz'goroth
|
||
|
|
specWarnTormentofTitans:Play("runtoedge")
|
||
|
|
specWarnTormentofTitans:ScheduleVoice(1, "killmob")
|
||
|
|
elseif spellId == 259069 then--Torment of Norgannon
|
||
|
|
specWarnTormentofTitans:Play("watchstep")
|
||
|
|
elseif spellId == 259070 then--Torment of Golganneth
|
||
|
|
specWarnTormentofTitans:Play("scatter")
|
||
|
|
specWarnTormentofTitans:ScheduleVoice(1, "killmob")
|
||
|
|
end
|
||
|
|
if not titanCount[name] then
|
||
|
|
titanCount[name] = 1
|
||
|
|
elseif titanCount[name] then
|
||
|
|
titanCount[name] = titanCount[name] + 1
|
||
|
|
end
|
||
|
|
if titanCount[name] == 2 then
|
||
|
|
titanCount[name] = 0
|
||
|
|
timerBossIncoming:Start(8.7, name)
|
||
|
|
end
|
||
|
|
DBM:Debug("UNIT_SPELLCAST_SUCCEEDED fired with: "..name, 2)
|
||
|
|
elseif spellId == 250752 then--Cosmic Glare
|
||
|
|
timerCosmicGlareCD:Start()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
--"<196.23 00:02:34> [UNIT_TARGETABLE_CHANGED] boss3#true#true#true#Diima, Mother of Gloom#Creature-0-2083-1712-12288-122469-0000111E27#elite#2150947263", -- [1436]
|
||
|
|
--"<196.23 00:02:34> [UNIT_TARGETABLE_CHANGED] nameplate2#false#false#true#Noura, Mother of Flames#Creature-0-2083-1712-12288-122468-0000111E27#elite#2150947229", -- [1437]
|
||
|
|
--"<196.23 00:02:34> [UNIT_TARGETABLE_CHANGED] boss2#false#false#true#Noura, Mother of Flames#Creature-0-2083-1712-12288-122468-0000111E27#elite#2150947229", -- [1438]
|
||
|
|
--"<198.19 00:02:36> [UNIT_SPELLCAST_SUCCEEDED] Noura, Mother of Flames(??) [[boss2:Spectral Army of Norgannon::3-2083-1712-12288-250334-000B1120DC:250334]]", -- [1456]
|
||
|
|
function mod:UNIT_TARGETABLE_CHANGED(uId)
|
||
|
|
local cid = self:GetUnitCreatureId(uId)
|
||
|
|
local targetWeWarn = false
|
||
|
|
if UnitExists(uId) then
|
||
|
|
targetWeWarn = true
|
||
|
|
DBM:Debug("UNIT_TARGETABLE_CHANGED, Boss Engaging", 2)
|
||
|
|
else
|
||
|
|
DBM:Debug("UNIT_TARGETABLE_CHANGED, Boss Leaving", 2)
|
||
|
|
end
|
||
|
|
if targetWeWarn then
|
||
|
|
if self.Options.SpecWarn118212switchcount then
|
||
|
|
specWarnActivated:Show(UnitName(uId))
|
||
|
|
specWarnActivated:Play("changetarget")
|
||
|
|
else
|
||
|
|
warnActivated:Show(UnitName(uId))
|
||
|
|
end
|
||
|
|
end
|
||
|
|
if cid == 122468 then--Noura
|
||
|
|
if targetWeWarn then
|
||
|
|
timerWhirlingSaberCD:Start(9)
|
||
|
|
timerFieryStrikeCD:Start(11.8)
|
||
|
|
if not self:IsEasy() then
|
||
|
|
timerFulminatingPulseCD:Start(20.6)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
timerFieryStrikeCD:Stop()
|
||
|
|
timerWhirlingSaberCD:Stop()
|
||
|
|
timerFulminatingPulseCD:Stop()
|
||
|
|
end
|
||
|
|
elseif cid == 122467 then--Asara
|
||
|
|
if targetWeWarn then
|
||
|
|
--TODO, timers, never saw her leave so never saw her return
|
||
|
|
else
|
||
|
|
timerShadowBladesCD:Stop()
|
||
|
|
timerStormofDarknessCD:Stop()
|
||
|
|
end
|
||
|
|
elseif cid == 122469 then--Diima
|
||
|
|
if targetWeWarn then
|
||
|
|
timerChilledBloodCD:Start(6.5)
|
||
|
|
timerFlashFreezeCD:Start(10.1)
|
||
|
|
if not self:IsEasy() then
|
||
|
|
timerOrbofFrostCD:Start(30)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
timerFlashFreezeCD:Stop()
|
||
|
|
timerChilledBloodCD:Stop()
|
||
|
|
timerOrbofFrostCD:Stop()
|
||
|
|
end
|
||
|
|
elseif cid == 125436 then--Thu'raya (mythic only)
|
||
|
|
if targetWeWarn then
|
||
|
|
self.vb.touchCosmosCast = 0
|
||
|
|
timerCosmicGlareCD:Start(5)
|
||
|
|
else
|
||
|
|
timerCosmicGlareCD:Stop()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnSync(msg, firstInterrupt)
|
||
|
|
if self:IsLFR() then return end
|
||
|
|
if msg == "Three" then
|
||
|
|
self.vb.interruptBehavior = "Three"
|
||
|
|
elseif msg == "Four" then
|
||
|
|
self.vb.interruptBehavior = "Four"
|
||
|
|
elseif msg == "Five" then
|
||
|
|
self.vb.interruptBehavior = "Five"
|
||
|
|
end
|
||
|
|
if firstInterrupt then
|
||
|
|
self.vb.ignoreFirstInterrupt = firstInterrupt == "true" and true or false
|
||
|
|
end
|
||
|
|
end
|