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.
509 lines
23 KiB
509 lines
23 KiB
local mod = DBM:NewMod(2493, "DBM-VaultoftheIncarnates", nil, 1200)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20221124062011")
|
|
mod:SetCreatureID(190245)
|
|
mod:SetEncounterID(2607)
|
|
mod:SetUsedIcons(8, 7, 6, 5, 4, 3)
|
|
--mod:SetHotfixNoticeRev(20220322000000)
|
|
--mod:SetMinSyncRevision(20211203000000)
|
|
mod.respawnTime = 33
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 376073 375871 388716 375870 375716 376272 376257 375485 375575 375457 375653 375630 388918 396269 396779",
|
|
"SPELL_CAST_SUCCESS 380175 375870",
|
|
"SPELL_AURA_APPLIED 375889 375829 376073 378782 390561 376272 375487 375475 375620 375879 376330 396264",
|
|
"SPELL_AURA_APPLIED_DOSE 375829 378782 376272 375475 375879",
|
|
"SPELL_AURA_REMOVED 375809 376073 375809 376330 396264",
|
|
"SPELL_AURA_REMOVED_DOSE 375809",
|
|
"SPELL_PERIODIC_DAMAGE 390747",
|
|
"SPELL_PERIODIC_MISSED 390747",
|
|
"UNIT_DIED",
|
|
"CHAT_MSG_RAID_BOSS_EMOTE"
|
|
)
|
|
|
|
--TODO, visit tank swaps when more data is known such strategies to the interaction with Fury extending debuffs, for now, basic debuff checks used (and may be enough)
|
|
--TODO, Nascent Proto-Dragon only cast Azure Strike, is this important?
|
|
--TODO, https://www.wowhead.com/beta/spell=392292/broodkeeping meaningful?
|
|
--TODO, add https://www.wowhead.com/beta/spell=388644/vicious-thrust ? it's instant cast but maybe a timer? depends how many adds there are. omitting for now to avoid clutter
|
|
--TODO, some kind of auto marking of the priority adds (like mages that need interrupt rotations)?
|
|
--TODO, further micro manage tank swaps for Borrowing Strike? depends on add count and spawn frequency, are they swapped or just killed off to reset stacks?
|
|
--TODO, what is range of tremors? does the mob turn while casting it? These answers affect warning defaults/filters, for now it's everyone
|
|
--TODO, evalualte any needed antispams for multiple adds casting same spells
|
|
--TODO, never saw Rapid Incubation Damage done increase/damage taken reduced buff
|
|
--TODO, mythic stuff, like does mythic stone slam timer reset or replace existing p1? does fissure timer reset in p2?
|
|
--[[
|
|
(ability.id = 376073 or ability.id = 375871 or ability.id = 388716 or ability.id = 388918 or ability.id = 375870 or ability.id = 376272 or ability.id = 375475 or ability.id = 375485) and type = "begincast"
|
|
or ability.id = 380175 and type = "cast"
|
|
or ability.id = 375879
|
|
or (ability.id = 375716 or ability.id = 375653 or ability.id = 375457 or ability.id = 375630 or ability.id = 376257 or ability.id = 375575) and type = "begincast"
|
|
or (source.type = "NPC" and source.firstSeen = timestamp) or (target.type = "NPC" and target.firstSeen = timestamp)
|
|
--]]
|
|
--Stage One: The Primalist Clutch
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25119))
|
|
----Broodkeeper Diurna
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25120))
|
|
local warnEggsLeft = mod:NewCountAnnounce(19873, 1)
|
|
local warnBroodkeepersBond = mod:NewFadesAnnounce(375809, 1)
|
|
local warnGreatstaffsWrath = mod:NewTargetNoFilterAnnounce(375889, 2)
|
|
local warnClutchwatchersRage = mod:NewStackAnnounce(375829, 2)
|
|
local warnRapidIncubation = mod:NewSpellAnnounce(376073, 3)
|
|
local warnMortalWounds = mod:NewStackAnnounce(378782, 2, nil, "Tank|Healer")
|
|
local warnDiurnasGaze = mod:NewYouAnnounce(390561, 3)
|
|
|
|
local specWarnGreatstaffoftheBroodkeeper = mod:NewSpecialWarningCount(375842, nil, nil, nil, 2, 2)
|
|
local specWarnGreatstaffsWrath = mod:NewSpecialWarningYou(375889, nil, nil, nil, 1, 2)
|
|
local yellGreatstaffsWrath = mod:NewYell(375889)
|
|
local specWarnWildfire = mod:NewSpecialWarningDodge(375871, nil, nil, nil, 2, 2)
|
|
local specWarnIcyShroud = mod:NewSpecialWarningCount(388716, nil, nil, nil, 2, 2)
|
|
local specWarnStormFissure = mod:NewSpecialWarningDodge(396779, nil, nil, nil, 2, 2, 4)
|
|
local specWarnMortalStoneclaws = mod:NewSpecialWarningDefensive(375870, nil, nil, nil, 1, 2)
|
|
local specWarnMortalWounds = mod:NewSpecialWarningTaunt(378782, nil, nil, nil, 1, 2)
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(340324, nil, nil, nil, 1, 8)
|
|
|
|
local timerGreatstaffoftheBroodkeeperCD = mod:NewCDCountTimer(24.4, 375842, L.staff, nil, nil, 5)--Shared CD ability
|
|
local timerRapidIncubationCD = mod:NewCDCountTimer(24.4, 376073, nil, nil, nil, 1)--Shared CD ability
|
|
local timerWildfireCD = mod:NewCDCountTimer(20.9, 375871, nil, nil, nil, 3)--Shared CD ability
|
|
local timerIcyShroudCD = mod:NewCDCountTimer(39.1, 388716, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON..DBM_COMMON_L.MAGIC_ICON)--Static CD
|
|
local timerMortalStoneclawsCD = mod:NewCDCountTimer(20.7, 375870, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)--Shared CD in P1, 7.3-15 P2
|
|
local timerStormFissureCD = mod:NewCDTimer(60, 396779, nil, nil, nil, 3, nil, DBM_COMMON_L.MYTHICC_ICON)
|
|
--local berserkTimer = mod:NewBerserkTimer(600)
|
|
|
|
mod:GroupSpells(375842, 375889)--Greatstaff spawn ith greatstaff wrath debuff
|
|
mod:GroupSpells(375870, 378782)--Mortal Claws with Mortal Wounds
|
|
----Primalist Reinforcements
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25129))
|
|
local warnBurrowingStrike = mod:NewStackAnnounce(376272, 2, nil, "Tank|Healer")
|
|
local warnCauterizingFlashflames = mod:NewCastAnnounce(375485, 4)
|
|
local warnFlameSentry = mod:NewCastAnnounce(375575, 3)
|
|
local warnRendingBite = mod:NewStackAnnounce(375475, 2, nil, "Tank|Healer")
|
|
local warnChillingTantrum = mod:NewCastAnnounce(375457, 3)
|
|
local warnIonizingCharge = mod:NewTargetAnnounce(375630, 3)
|
|
|
|
local specWarnPrimalistReinforcements = mod:NewSpecialWarningAddsCount(257554, "-Healer", nil, nil, 1, 2)
|
|
local specWarnIceBarrage = mod:NewSpecialWarningInterruptCount(375716, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnBurrowingStrike = mod:NewSpecialWarningDefensive(376272, nil, nil, nil, 1, 2, 3)
|
|
local specWarnTremors = mod:NewSpecialWarningDodge(376257, nil, nil, nil, 2, 2)
|
|
local specWarnCauterizingFlashflames = mod:NewSpecialWarningDispel(375487, "MagicDispeller", nil, nil, 1, 2)
|
|
local specWarnRendingBite = mod:NewSpecialWarningDefensive(375475, nil, nil, nil, 1, 2, 3)
|
|
local specWarnStaticJolt = mod:NewSpecialWarningInterruptCount(375653, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnIonizingCharge = mod:NewSpecialWarningMoveAway(375630, nil, nil, nil, 1, 2)
|
|
local yellIonizingCharge = mod:NewYell(375630)
|
|
|
|
local timerPrimalistReinforcementsCD = mod:NewAddsCustomTimer(60, 257554, nil, nil, nil, 1)
|
|
local timerBurrowingStrikeCD = mod:NewCDTimer(8.1, 376272, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON..DBM_COMMON_L.HEROIC_ICON)
|
|
local timerTremorsCD = mod:NewCDTimer(11, 376257, nil, nil, nil, 3)
|
|
local timerCauterizingFlashflamesCD = mod:NewCDTimer(11.7, 375485, nil, "MagicDispeller", nil, 5)
|
|
local timerFlameSentryCD = mod:NewCDTimer(12.2, 375575, nil, nil, nil, 3)
|
|
local timerRendingBiteCD = mod:NewCDTimer(11, 375475, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON..DBM_COMMON_L.HEROIC_ICON)
|
|
local timerChillingTantrumCD = mod:NewCDTimer(11.1, 375457, nil, nil, nil, 3)
|
|
local timerIonizingChargeCD = mod:NewCDTimer(10, 375630, nil, nil, nil, 3)
|
|
|
|
--mod:AddRangeFrameOption("8")
|
|
--mod:AddInfoFrameOption(361651, true)
|
|
mod:AddNamePlateOption("NPFixate", 376330, true)
|
|
mod:AddSetIconOption("SetIconOnMages", "ej25144", true, true, {8, 7, 6})
|
|
mod:AddSetIconOption("SetIconOnStormbringers", "ej25139", true, true, {5, 4, 3})
|
|
|
|
mod:GroupSpells(375485, 375487)--Cauterizing Flashflames cast and dispel IDs
|
|
mod:GroupSpells(385618, "ej25144", "ej25139")--Icon Marking with general adds announce
|
|
--Stage Two: A Broodkeeper Scorned
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25146))
|
|
local warnBroodkeepersFury = mod:NewStackAnnounce(375879, 2)
|
|
local warnEGreatstaffsWrath = mod:NewTargetNoFilterAnnounce(380483, 2)
|
|
|
|
local specWarnEGreatstaffoftheBroodkeeper = mod:NewSpecialWarningCount(380176, nil, nil, nil, 2, 2)
|
|
local specWarnEGreatstaffsWrath = mod:NewSpecialWarningYou(380483, nil, nil, nil, 1, 2)
|
|
local yellEGreatstaffsWrath = mod:NewYell(380483)
|
|
local specWarnFrozenShroud = mod:NewSpecialWarningCount(388918, nil, nil, nil, 2, 2)
|
|
local specWarnMortalStoneSlam = mod:NewSpecialWarningDefensive(396269, nil, nil, nil, 1, 2, 4)
|
|
local specWarnDetonatingStoneslam = mod:NewSpecialWarningYou(396264, false, nil, nil, 1, 2, 4)--Bit redundant, so off by default
|
|
local yellDetonatingStoneslam = mod:NewShortYell(396264, nil, nil, nil, "YELL")
|
|
local yellDetonatingStoneslamFades = mod:NewShortFadesYell(396264, nil, nil, nil, "YELL")
|
|
local specWarnDetonatingStoneslamTaunt = mod:NewSpecialWarningTaunt(396264, nil, nil, nil, 1, 2, 4)
|
|
|
|
local timerBroodkeepersFuryCD = mod:NewNextCountTimer(30, 375879, nil, nil, nil, 5)--Static CD
|
|
local timerEGreatstaffoftheBroodkeeperCD = mod:NewCDCountTimer(24.4, 380176, L.staff, nil, nil, 5)--Shared CD ability
|
|
local timerFrozenShroudCD = mod:NewCDCountTimer(36.4, 388918, nil, nil, nil, 2, nil, DBM_COMMON_L.DAMAGE_ICON..DBM_COMMON_L.HEALER_ICON..DBM_COMMON_L.MAGIC_ICON)--Static CD
|
|
local timerMortalStoneSlamCD = mod:NewCDCountTimer(20.7, 396269, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON..DBM_COMMON_L.MYTHIC_ICON)
|
|
|
|
local castsPerGUID = {}
|
|
mod.vb.staffCount = 0
|
|
mod.vb.icyCount = 0
|
|
mod.vb.addsCount = 0
|
|
mod.vb.tankCombocount = 0
|
|
mod.vb.wildFireCount = 0
|
|
mod.vb.incubationCount = 0
|
|
mod.vb.mageIcon = 8
|
|
mod.vb.StormbringerIcon = 6
|
|
mod.vb.eggsGone = false
|
|
mod.vb.sharedCD = 26
|
|
|
|
function mod:OnCombatStart(delay)
|
|
table.wipe(castsPerGUID)
|
|
self:SetStage(1)
|
|
self.vb.tankCombocount = 0
|
|
self.vb.staffCount = 0
|
|
self.vb.icyCount = 0
|
|
self.vb.addsCount = 0
|
|
self.vb.wildFireCount = 0
|
|
self.vb.incubationCount = 0
|
|
self.vb.mageIcon = 8
|
|
self.vb.StormbringerIcon = 6
|
|
self.vb.eggsGone = false
|
|
timerMortalStoneclawsCD:Start(3.4-delay, 1)
|
|
timerWildfireCD:Start(8.4-delay, 1)
|
|
timerRapidIncubationCD:Start(14.3-delay, 1)
|
|
timerGreatstaffoftheBroodkeeperCD:Start(16.9-delay, 1)
|
|
timerPrimalistReinforcementsCD:Start(22.6-delay, 1)
|
|
timerIcyShroudCD:Start(26.5-delay, 1)
|
|
if self.Options.NPFixate then
|
|
DBM:FireEvent("BossMod_EnableHostileNameplates")
|
|
end
|
|
if self:IsMythic() then
|
|
self.vb.sharedCD = 24
|
|
timerStormFissureCD:Start(1-delay)
|
|
elseif self:IsHeroic() then
|
|
self.vb.sharedCD = 25
|
|
else--Split LFR if even slower
|
|
self.vb.sharedCD = 26
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
-- if self.Options.RangeFrame then
|
|
-- DBM.RangeCheck:Hide()
|
|
-- end
|
|
-- if self.Options.InfoFrame then
|
|
-- DBM.InfoFrame:Hide()
|
|
-- end
|
|
if self.Options.NPFixate then
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 376073 then
|
|
self.vb.incubationCount = self.vb.incubationCount + 1
|
|
warnRapidIncubation:Show(self.vb.incubationCount)
|
|
if not self.vb.eggsGone then
|
|
timerRapidIncubationCD:Start(self.vb.sharedCD, self.vb.incubationCount+1)
|
|
end
|
|
elseif spellId == 375871 and self:AntiSpam(10, 1) then
|
|
self.vb.wildFireCount = self.vb.wildFireCount + 1
|
|
specWarnWildfire:Show()
|
|
specWarnWildfire:Play("watchstep")
|
|
timerWildfireCD:Start(self.vb.sharedCD, self.vb.wildFireCount+1)
|
|
elseif spellId == 388716 then
|
|
self.vb.icyCount = self.vb.icyCount + 1
|
|
specWarnIcyShroud:Show(self.vb.icyCount)
|
|
specWarnIcyShroud:Play("aesoon")
|
|
timerIcyShroudCD:Start(nil, self.vb.icyCount+1)
|
|
elseif spellId == 388918 then
|
|
self.vb.icyCount = self.vb.icyCount + 1
|
|
specWarnFrozenShroud:Show(self.vb.icyCount)
|
|
specWarnFrozenShroud:Play("aesoon")
|
|
timerFrozenShroudCD:Start(nil, self.vb.icyCount+1)
|
|
elseif spellId == 375870 then
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
specWarnMortalStoneclaws:Show()
|
|
specWarnMortalStoneclaws:Play("defensive")
|
|
end
|
|
elseif spellId == 396269 then
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
specWarnMortalStoneSlam:Show()
|
|
specWarnMortalStoneSlam:Play("defensive")
|
|
end
|
|
elseif spellId == 376272 then
|
|
if self:IsTanking("player", nil, nil, nil, args.sourceGUID) then
|
|
specWarnBurrowingStrike:Show()
|
|
specWarnBurrowingStrike:Play("defensive")
|
|
end
|
|
if self:AntiSpam(1, spellId) then
|
|
timerBurrowingStrikeCD:Start(nil, args.sourceGUID)
|
|
end
|
|
elseif spellId == 375475 then
|
|
if self:IsTanking("player", nil, nil, nil, args.sourceGUID) then
|
|
specWarnRendingBite:Show()
|
|
specWarnRendingBite:Play("defensive")
|
|
end
|
|
if self:AntiSpam(1, spellId) then
|
|
timerRendingBiteCD:Start(nil, args.sourceGUID)
|
|
end
|
|
elseif spellId == 376257 then
|
|
if self:AntiSpam(1, spellId) then
|
|
specWarnTremors:Show()
|
|
specWarnTremors:Play("shockwave")
|
|
timerTremorsCD:Start(nil, args.sourceGUID)
|
|
end
|
|
elseif spellId == 375485 then
|
|
if self:AntiSpam(1, spellId) then
|
|
warnCauterizingFlashflames:Show()
|
|
timerCauterizingFlashflamesCD:Start(self:IsMythic() and 8.6 or 11.7, args.sourceGUID)--TODO, recheck heroic
|
|
end
|
|
elseif spellId == 375575 then
|
|
if self:AntiSpam(1, spellId) then
|
|
warnFlameSentry:Show()
|
|
timerFlameSentryCD:Start(nil, args.sourceGUID)
|
|
end
|
|
elseif spellId == 375457 then
|
|
if self:AntiSpam(1, spellId) then
|
|
warnChillingTantrum:Show()
|
|
timerChillingTantrumCD:Start(nil, args.sourceGUID)
|
|
end
|
|
elseif spellId == 375630 then
|
|
if self:AntiSpam(1, spellId) then
|
|
timerIonizingChargeCD:Start(nil, args.sourceGUID)
|
|
end
|
|
elseif spellId == 375716 then
|
|
if not castsPerGUID[args.sourceGUID] then
|
|
castsPerGUID[args.sourceGUID] = 0
|
|
if self.Options.SetIconOnMages and self.vb.mageIcon > 5 then--Only use up to 3 icons
|
|
self:ScanForMobs(args.sourceGUID, 2, self.vb.mageIcon, 1, nil, 12, "SetIconOnMages")
|
|
end
|
|
self.vb.mageIcon = self.vb.mageIcon - 1
|
|
end
|
|
castsPerGUID[args.sourceGUID] = castsPerGUID[args.sourceGUID] + 1
|
|
local count = castsPerGUID[args.sourceGUID]
|
|
if self:CheckInterruptFilter(args.sourceGUID, false, false) then--Count interrupt, so cooldown is not checked
|
|
specWarnIceBarrage:Show(args.sourceName, count)
|
|
if count < 6 then
|
|
specWarnIceBarrage:Play("kick"..count.."r")
|
|
else
|
|
specWarnIceBarrage:Play("kickcast")
|
|
end
|
|
end
|
|
elseif spellId == 375653 then
|
|
if not castsPerGUID[args.sourceGUID] then
|
|
castsPerGUID[args.sourceGUID] = 0
|
|
if self.Options.SetIconOnStormbringers and self.vb.StormbringerIcon > 4 then--Only use up to 3 icons
|
|
self:ScanForMobs(args.sourceGUID, 2, self.vb.StormbringerIcon, 1, nil, 12, "SetIconOnStormbringers")
|
|
end
|
|
self.vb.StormbringerIcon = self.vb.StormbringerIcon - 1
|
|
end
|
|
castsPerGUID[args.sourceGUID] = castsPerGUID[args.sourceGUID] + 1
|
|
local count = castsPerGUID[args.sourceGUID]
|
|
if self:CheckInterruptFilter(args.sourceGUID, false, false) then--Count interrupt, so cooldown is not checked
|
|
specWarnStaticJolt:Show(args.sourceName, count)
|
|
if count < 6 then
|
|
specWarnStaticJolt:Play("kick"..count.."r")
|
|
else
|
|
specWarnStaticJolt:Play("kickcast")
|
|
end
|
|
end
|
|
elseif spellId == 396779 then
|
|
specWarnStormFissure:Show()
|
|
specWarnStormFissure:Play("watchstep")
|
|
timerStormFissureCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 380175 then
|
|
self.vb.staffCount = self.vb.staffCount + 1
|
|
if self.vb.phase == 1 then
|
|
specWarnGreatstaffoftheBroodkeeper:Show(self.vb.staffCount)
|
|
specWarnGreatstaffoftheBroodkeeper:Play("specialsoon")
|
|
timerGreatstaffoftheBroodkeeperCD:Start(self.vb.sharedCD, self.vb.staffCount+1)
|
|
else
|
|
specWarnEGreatstaffoftheBroodkeeper:Show(self.vb.staffCount)
|
|
specWarnEGreatstaffoftheBroodkeeper:Play("specialsoon")
|
|
timerEGreatstaffoftheBroodkeeperCD:Start(self.vb.sharedCD, self.vb.staffCount+1)
|
|
end
|
|
elseif spellId == 375870 then
|
|
self.vb.tankCombocount = self.vb.tankCombocount + 1
|
|
--Sometimes boss interrupts cast to cast another ability then starts cast over, so we start timer here
|
|
local timer = (self.vb.phase == 1 and self.vb.sharedCD or 7.3)-1.5
|
|
timerMortalStoneclawsCD:Start(timer, self.vb.tankCombocount+1)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 375889 then
|
|
warnGreatstaffsWrath:CombinedShow(1, args.destName)--Aggregated for now in case strat is to just pop multiple eggs and CD like fuck for Clutchwatcher's Rage
|
|
if args:IsPlayer() then
|
|
specWarnGreatstaffsWrath:Show()
|
|
specWarnGreatstaffsWrath:Play("targetyou")
|
|
yellGreatstaffsWrath:Yell()
|
|
end
|
|
elseif spellId == 380483 then
|
|
warnEGreatstaffsWrath:CombinedShow(1, args.destName)--Aggregated for now in case strat is to just pop multiple eggs and CD like fuck for Clutchwatcher's Rage
|
|
if args:IsPlayer() then
|
|
specWarnEGreatstaffsWrath:Show()
|
|
specWarnEGreatstaffsWrath:Play("targetyou")
|
|
yellEGreatstaffsWrath:Yell()
|
|
end
|
|
elseif spellId == 375620 then
|
|
warnIonizingCharge:CombinedShow(0.3, args.destName)
|
|
if args:IsPlayer() then
|
|
specWarnIonizingCharge:Show()
|
|
specWarnIonizingCharge:Play("range5")
|
|
yellIonizingCharge:Yell()
|
|
end
|
|
elseif spellId == 396264 then
|
|
if args:IsPlayer() then
|
|
specWarnDetonatingStoneslam:Show()
|
|
specWarnDetonatingStoneslam:Play("gathershare")
|
|
yellDetonatingStoneslam:Yell()
|
|
yellDetonatingStoneslamFades:Countdown(spellId)
|
|
else
|
|
specWarnDetonatingStoneslamTaunt:Show(args.destName)
|
|
specWarnDetonatingStoneslamTaunt:Play("tauntboss")
|
|
end
|
|
elseif spellId == 375829 then
|
|
warnClutchwatchersRage:Cancel()
|
|
warnClutchwatchersRage:Schedule(2, args.destName, args.amount or 1)
|
|
elseif spellId == 376330 then
|
|
if args:IsPlayer() then
|
|
if self.Options.NPFixate then
|
|
DBM.Nameplate:Show(true, args.sourceGUID, spellId)
|
|
end
|
|
end
|
|
elseif spellId == 378782 and not args:IsPlayer() then
|
|
local amount = args.amount or 1
|
|
local _, _, _, _, _, expireTime = DBM:UnitDebuff("player", spellId)
|
|
local remaining
|
|
if expireTime then
|
|
remaining = expireTime-GetTime()
|
|
end
|
|
if (not remaining or remaining and remaining < 6.1) and not UnitIsDeadOrGhost("player") and not self:IsHealer() then
|
|
specWarnMortalWounds:Show(args.destName)
|
|
specWarnMortalWounds:Play("tauntboss")
|
|
else
|
|
warnMortalWounds:Show(args.destName, amount)
|
|
end
|
|
elseif spellId == 390561 and args:IsPlayer() then
|
|
warnDiurnasGaze:Show()
|
|
elseif spellId == 376272 and not args:IsPlayer() then
|
|
local amount = args.amount or 1
|
|
--local _, _, _, _, _, expireTime = DBM:UnitDebuff("player", spellId)
|
|
--local remaining
|
|
--if expireTime then
|
|
-- remaining = expireTime-GetTime()
|
|
--end
|
|
--if (not remaining or remaining and remaining < 6.1) and not UnitIsDeadOrGhost("player") and not self:IsHealer() then
|
|
-- specWarnMortalWounds:Show(args.destName)
|
|
-- specWarnMortalWounds:Play("tauntboss")
|
|
--else
|
|
warnBurrowingStrike:Show(args.destName, amount)
|
|
--end
|
|
elseif spellId == 375475 and not args:IsPlayer() then
|
|
local amount = args.amount or 1
|
|
--local _, _, _, _, _, expireTime = DBM:UnitDebuff("player", spellId)
|
|
--local remaining
|
|
--if expireTime then
|
|
-- remaining = expireTime-GetTime()
|
|
--end
|
|
--if (not remaining or remaining and remaining < 6.1) and not UnitIsDeadOrGhost("player") and not self:IsHealer() then
|
|
-- specWarnMortalWounds:Show(args.destName)
|
|
-- specWarnMortalWounds:Play("tauntboss")
|
|
--else
|
|
warnRendingBite:Show(args.destName, amount)
|
|
--end
|
|
elseif spellId == 375487 then
|
|
specWarnCauterizingFlashflames:CombinedShow(1, args.destName)
|
|
specWarnCauterizingFlashflames:ScheduleVoice(1, "helpldispel")
|
|
elseif spellId == 375879 then
|
|
local amount = args.amount or 1
|
|
warnBroodkeepersFury:Show(args.destName, amount)
|
|
timerBroodkeepersFuryCD:Start(30, amount+1)
|
|
if self.vb.phase == 1 then
|
|
self:SetStage(2)
|
|
self.vb.wildFireCount = 0
|
|
--Just stop outright
|
|
-- timerRapidIncubationCD:Stop()
|
|
timerPrimalistReinforcementsCD:Stop()
|
|
--Restarts
|
|
timerWildfireCD:Restart(9.7, 1)
|
|
--Timers that do not reset.
|
|
--Mortal Stone Claws, since we don't swap timers, no action needed
|
|
--On mythic mortal claws swaps to mortal slam, doesn't change on heroic and below
|
|
if self:IsMythic() then
|
|
--local remainingClaws = timerMortalStoneclawsCD:GetRemaining(self.vb.tankCombocount+1)
|
|
--if remainingClaws then
|
|
timerMortalStoneclawsCD:Stop()
|
|
-- timerMortalStoneSlamCD:Start(remainingClaws, 1)--Does NOT restart anymore
|
|
--end
|
|
self.vb.tankCombocount = 0
|
|
end
|
|
local remainingStaff = timerGreatstaffoftheBroodkeeperCD:GetRemaining(self.vb.staffCount+1)
|
|
if remainingStaff then
|
|
timerGreatstaffoftheBroodkeeperCD:Stop()
|
|
timerEGreatstaffoftheBroodkeeperCD:Start(remainingStaff, 1)--Does NOT restart anymore
|
|
end
|
|
local remainingIcy = timerGreatstaffoftheBroodkeeperCD:GetRemaining(self.vb.icyCount+1)
|
|
if remainingIcy then
|
|
timerIcyShroudCD:Stop()
|
|
timerFrozenShroudCD:Start(remainingIcy, 1)
|
|
end
|
|
self.vb.staffCount = 0
|
|
self.vb.icyCount = 0--Reused for frozen shroud
|
|
end
|
|
end
|
|
end
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 375809 then
|
|
warnBroodkeepersBond:Show()
|
|
elseif spellId == 375809 then
|
|
local amount = args.amount or 0
|
|
warnEggsLeft:Cancel()
|
|
warnEggsLeft:Schedule(2, string.format("%d/%d", 28-amount, 28))
|
|
if amount == 0 then
|
|
self.vb.eggsGone = true
|
|
end
|
|
elseif spellId == 376330 then
|
|
if args:IsPlayer() then
|
|
if self.Options.NPFixate then
|
|
DBM.Nameplate:Hide(true, args.sourceGUID, spellId)
|
|
end
|
|
end
|
|
elseif spellId == 396264 then
|
|
if args:IsPlayer() then
|
|
yellDetonatingStoneslamFades:Cancel()
|
|
end
|
|
end
|
|
end
|
|
mod.SPELL_AURA_REMOVED_DOSE = mod.SPELL_AURA_REMOVED
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 191225 then--Tarasek Earthreaver
|
|
timerBurrowingStrikeCD:Stop(args.destGUID)
|
|
timerTremorsCD:Stop(args.destGUID)
|
|
elseif cid == 192771 or cid == 191230 then--Dragonspawn Flamebender
|
|
timerCauterizingFlashflamesCD:Stop(args.destGUID)
|
|
timerFlameSentryCD:Stop(args.destGUID)
|
|
elseif cid == 191222 then--Juvenile Frost Proto-Dragon
|
|
timerRendingBiteCD:Stop(args.destGUID)
|
|
timerChillingTantrumCD:Stop(args.destGUID)
|
|
elseif cid == 191232 then--Drakonid Stormbringer
|
|
timerIonizingChargeCD:Stop(args.destGUID)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
if spellId == 390747 and destGUID == UnitGUID("player") and self:AntiSpam(2, 4) then
|
|
specWarnGTFO:Show(spellName)
|
|
specWarnGTFO:Play("watchfeet")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
|
|
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
|
|
if msg:find("ABILITY_WARRIOR_DRAGONROAR.BLP") then
|
|
self.vb.addsCount = self.vb.addsCount + 1
|
|
self.vb.mageIcon = 8
|
|
self.vb.StormbringerIcon = 6
|
|
specWarnPrimalistReinforcements:Show()
|
|
specWarnPrimalistReinforcements:Play("killmob")
|
|
timerPrimalistReinforcementsCD:Start(nil, self.vb.addsCount+1)
|
|
end
|
|
end
|
|
|