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.

575 lines
23 KiB

local mod = DBM:NewMod(2499, "DBM-VaultoftheIncarnates", nil, 1200)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20221129005435")
--mod:SetCreatureID(181224)--way too many CIDs to guess right now
mod:SetEncounterID(2607)
mod:SetUsedIcons(1, 2, 3, 4, 5, 6, 7, 8)
mod:SetHotfixNoticeRev(20221124000000)
--mod:SetMinSyncRevision(20211203000000)
--mod.respawnTime = 29
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 377612 388643 388635 377658 377594 385065 385553 397382 397468 387261 385574 389870 385068 395885 386410",
"SPELL_CAST_SUCCESS 381615 376126 396037",
"SPELL_AURA_APPLIED 381615 388631 395906 381249 388431 388115 396037 385541 397382 397387 388691 391990 394574 394576 391991 394579 394575 394582 391993 394584 377467 396734 395929 391285",
-- "SPELL_AURA_APPLIED_DOSE",
"SPELL_AURA_REMOVED 381615 388431 396037 385541 397382 397387 388691 377467 396734",
"SPELL_PERIODIC_DAMAGE 395929",
"SPELL_PERIODIC_MISSED 395929",
"UNIT_DIED"
-- "UNIT_SPELLCAST_SUCCEEDED boss1"
)
--TODO, volatile current target scan (or maybe emote/whisper/debuff?)
--TODO, warn for Volatike (388631)?
--TODO, fix lightning strikes
--TODO, speed up Lightning Devistation, i'm sure one of scripts fire earlier than channel, similar to vexiona and others coded same way
--TODO, detect intermission add spawns/add timer for spawns?
--TODO, initial CD timers for spawning in adds, if timers are used
--TODO, track and alert high stacks of https://www.wowhead.com/beta/spell=385560/windforce-strikes on Oathsworn?
--TODO, determine number adds and spawn behavior for auto marking Stormseeker Acolyte for interrupt assignments?
--TODO, use specWarnScatteredCharge once coding is verified it's being avoided for now to avoid SW spam
--TODO, add https://www.wowhead.com/beta/spell=391281/crackling-energy to intermission 2 or is it just persistent damage?
--General
local warnPhase = mod:NewPhaseChangeAnnounce(2, nil, nil, nil, nil, nil, 2)
local specWarnGTFO = mod:NewSpecialWarningGTFO(388115, nil, nil, nil, 1, 8)
--local berserkTimer = mod:NewBerserkTimer(600)
--mod:AddRangeFrameOption("8")
--Stage One: The Winds of Change
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25244))
local warnStaticCharge = mod:NewTargetNoFilterAnnounce(381615, 3)
local warnLightningStrike = mod:NewCountAnnounce(376126, 3)
local warnElectricScales = mod:NewCountAnnounce(381249, 2)
--local specWarnInfusedStrikes = mod:NewSpecialWarningStack(361966, nil, 8, nil, nil, 1, 6)
local specWarnHurricaneWing = mod:NewSpecialWarningCount(377612, nil, nil, nil, 2, 2)
local specWarnStaticCharge = mod:NewSpecialWarningYouPos(381615, nil, 37859, nil, 1, 2)
local yellStaticCharge = mod:NewShortPosYell(381615, 37859)
local yellStaticChargeFades = mod:NewIconFadesYell(381615, 37859)
local specWarnVolatileCurrent = mod:NewSpecialWarningMoveAwayCount(388643, nil, nil, nil, 2, 2)
local specWarnBurst = mod:NewSpecialWarningInterruptCount(388635, "HasInterrupt", nil, nil, 1, 2)
local specWarnElectrifiedJaws = mod:NewSpecialWarningDefensive(377658, nil, nil, nil, 1, 2)
local specWarnElectrifiedJawsOther = mod:NewSpecialWarningTaunt(377658, nil, nil, nil, 1, 2)
local specWarnLightingBreath = mod:NewSpecialWarningDodgeCount(388643, nil, nil, nil, 2, 2)
local timerHurricaneWingCD = mod:NewAITimer(35, 377612, nil, nil, nil, 2)
local timerStaticChargeCD = mod:NewAITimer(35, 381615, nil, nil, nil, 3)
local timerVolatileCurrentCD = mod:NewAITimer(35, 388643, nil, nil, nil, 3)
local timerElectrifiedJawsCD = mod:NewAITimer(35, 377658, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerLightningBreathCD = mod:NewAITimer(35, 377594, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
local timerLightningStrikesCD = mod:NewAITimer(35, 376126, nil, nil, nil, 3)
local timerElectricScalesCD = mod:NewAITimer(35, 381249, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON)
mod:AddSetIconOption("SetIconOnStaticCharge", 381615, true, 0, {1, 2, 3})
mod:AddSetIconOption("SetIconVolatileSpark", 388635, false, 5, {8, 7, 6, 5, 4})
--Intermission: The Primalist Strike
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25683))
--Raszageth
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25402))
local specWarnLightningDevastation = mod:NewSpecialWarningDodgeCount(385065, nil, nil, nil, 3, 2)
local timerLightningDevastationCD = mod:NewAITimer(35, 385065, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
--Primalist Forces
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25638))
local warnSurgingBlast = mod:NewTargetAnnounce(396037, 3)
local warnShatteringShroud = mod:NewTargetNoFilterAnnounce(397382, 4)
local warnShatteringShroudFaded = mod:NewFadedAnnounce(397382, 1)
local warnBlazingroar = mod:NewCastAnnounce(397468, 4)
local specWarnSurgingBlast = mod:NewSpecialWarningMoveAway(396037, nil, 37859, nil, 1, 2)
local yellSurgingBlast = mod:NewShortYell(396037, 37859)
local yellSurgingBlastFades = mod:NewShortFadesYell(396037, 37859)
local specWarnStormBolt = mod:NewSpecialWarningInterruptCount(385553, "HasInterrupt", nil, nil, 1, 2)
local specWarnShatteringShroud = mod:NewSpecialWarningYou(397382, nil, nil, nil, 1, 2, 4)
local specWarnFlameShield = mod:NewSpecialWarningSwitch(397387, nil, nil, nil, 1, 2, 4)
local timerSurgingBlastCD = mod:NewAITimer(35, 396037, 37859, nil, nil, 3, nil, DBM_COMMON_L.HEROIC_ICON)
local timerShatteringShroudCD = mod:NewAITimer(35, 397382, nil, nil, nil, 3, nil, DBM_COMMON_L.MYTHIC_ICON)
local timerFlameShieldCD = mod:NewAITimer(35, 397387, nil, nil, nil, 5, nil, DBM_COMMON_L.MYTHIC_ICON)
mod:AddSetIconOption("SetIconOnShatteringShroud", 397382, true, 0, {1, 2, 3})
mod:AddNamePlateOption("NPAuraOnAscension", 385541)
mod:AddNamePlateOption("NPAuraOnFlameShield", 397387)
--Stage Two: Surging Power
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25312))
local warnStormsurge = mod:NewEndAnnounce(387261, 1)
local warnInversion = mod:NewTargetAnnounce(394584, 4)
local warnFocusedCharge = mod:NewYouAnnounce(394582, 1)
local warnScatteredCharge = mod:NewYouAnnounce(394583, 4)
local warnFulminatingCharge = mod:NewTargetNoFilterAnnounce(378829, 3)
local specWarnStormsurge = mod:NewSpecialWarningMoveAwayCount(387261, nil, nil, nil, 2, 2)--Maybe shorttext 28089?
local specWarnPositiveCharge = mod:NewSpecialWarningYouPos(391990, nil, nil, nil, 1, 13)--Split warning so user can custom sounds
local specWarnNegativeCharge = mod:NewSpecialWarningYouPos(391991, nil, nil, nil, 1, 13)--between positive and negative
local yellStormCharged = mod:NewShortPosYell(391989, DBM_CORE_L.AUTO_YELL_CUSTOM_POSITION)
local specWarnInversion = mod:NewSpecialWarningMoveAway(394584, nil, nil, nil, 3, 13, 4)
local yellInversion = mod:NewShortYell(394584)
local yellInversionFades = mod:NewShortFadesYell(394584)
--local specWarnScatteredCharge = mod:NewSpecialWarningMoveAway(394583, nil, nil, nil, 1, 2)
local specWarnTempestWing = mod:NewSpecialWarningCount(385574, nil, nil, nil, 2, 2)--Dodge?
local specWarnFulminatingCharge = mod:NewSpecialWarningYouPos(378829, nil, nil, nil, 1, 2)
local yellFulminatingCharge = mod:NewShortPosYell(378829)
local yellFulminatingChargeFades = mod:NewIconFadesYell(378829)
local timerStormsurgeCD = mod:NewAITimer(35, 387261, nil, nil, nil, 2)--Maybe shorttext 28089?
local timerTempestWingCD = mod:NewAITimer(35, 385574, nil, nil, nil, 3)
local timerFulminatingChargeCD = mod:NewAITimer(35, 378829, nil, nil, nil, 3)
mod:AddSetIconOption("SetIconOnFulminatingCharge", 378829, true, 0, {1, 2, 3})
mod:AddInfoFrameOption(387261, true)
mod:GroupSpells(391989, 391990, 391991, 394584)--Group positive and negative spellIds under parent category "Stormcharged"
--Intermission: The Vault Falters
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25812))
--Colossal Stormfiend
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25816))
local specWarnStormBreak = mod:NewSpecialWarningDodge(389870, nil, nil, nil, 2, 2)
local specWarnBallLightning = mod:NewSpecialWarningDodge(385068, nil, nil, nil, 2, 2)
local timerStormBreakCD = mod:NewAITimer(35, 389870, nil, nil, nil, 3)
local timerBallLightningCD = mod:NewAITimer(35, 385068, nil, nil, nil, 3)
--Stage Three: Storm Incarnate
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25477))
local specWarnStormEater = mod:NewSpecialWarningCount(395885, nil, nil, nil, 2, 2, 4)
local specWarnThunderousBlast = mod:NewSpecialWarningDefensive(386410, nil, nil, nil, 1, 2)
local specWarnMeltedArmor = mod:NewSpecialWarningTaunt(391285, nil, nil, nil, 1, 2)
local timerStormEaterCD = mod:NewAITimer(35, 395885, nil, nil, nil, 2, nil, DBM_COMMON_L.MYTHIC_ICON)
local timerThunderousBlastCD = mod:NewAITimer(35, 386410, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
mod:GroupSpells(386410, 391285)--Thunderous Blast and associated melted armor debuff
--P1
mod.vb.energyCount = 0--Reused for the 100 energy special in stage 1/2 and mythic storm eater mechanic in stage 3
mod.vb.chargeCount = 0--Static Charge/Fulminating Charge
mod.vb.chargeIcon = 1--Static Charge/Fulminating Charge
mod.vb.currentCount = 0
mod.vb.tankCount = 0--Electrified Jaws/Thunderous Blast
mod.vb.addIcon = 8
mod.vb.breathCount = 0--Reused in P1.5 intermission
mod.vb.strikeCount = 0
mod.vb.scalesCount = 0
--P2
mod.vb.shroudIcon = 1
mod.vb.wingCount = 0
local castsPerGUID = {}
function mod:OnCombatStart(delay)
table.wipe(castsPerGUID)
self:SetStage(1)
self.vb.energyCount = 0
self.vb.chargeCount = 0
self.vb.currentCount = 0
self.vb.tankCount = 0
self.vb.breathCount = 0
self.vb.strikeCount = 0
self.vb.scalesCount = 0
timerHurricaneWingCD:Start(1-delay)
timerStaticChargeCD:Start(1-delay)
timerVolatileCurrentCD:Start(1-delay)
timerElectrifiedJawsCD:Start(1-delay)
timerLightningBreathCD:Start(1-delay)
timerLightningStrikesCD:Start(1-delay)
timerElectricScalesCD:Start(1-delay)
if self.Options.NPAuraOnAscension or self.Options.NPAuraOnFlameShield then
DBM:FireEvent("BossMod_EnableHostileNameplates")
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.NPAuraOnAscension or self.Options.NPAuraOnFlameShield then
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 377612 then
self.vb.energyCount = self.vb.energyCount + 1
specWarnHurricaneWing:Show(self.vb.energyCount)
specWarnHurricaneWing:Play("pushbackincoming")
specWarnHurricaneWing:ScheduleVoice(1.5, "movecenter")
timerHurricaneWingCD:Start()
elseif spellId == 388643 then
self.vb.addIcon = 8
self.vb.currentCount = self.vb.currentCount + 1
specWarnVolatileCurrent:Show(self.vb.currentCount)
specWarnVolatileCurrent:Play("scatter")
timerVolatileCurrentCD:Start()
elseif spellId == 388635 then
if not castsPerGUID[args.sourceGUID] then
castsPerGUID[args.sourceGUID] = 0
if self.Options.SetIconVolatileSpark and self.vb.addIcon > 3 then
self:ScanForMobs(args.sourceGUID, 2, self.vb.addIcon, 1, nil, 12, "SetIconVolatileSpark")
end
self.vb.addIcon = self.vb.addIcon - 1
end
castsPerGUID[args.sourceGUID] = castsPerGUID[args.sourceGUID] + 1
local count = castsPerGUID[args.sourceGUID]
if self:CheckInterruptFilter(args.sourceGUID, false, false) then
specWarnBurst:Show(args.sourceName, count)
if count < 6 then
specWarnBurst:Play("kick"..count.."r")
else
specWarnBurst:Play("kickcast")
end
end
elseif spellId == 385553 then
if not castsPerGUID[args.sourceGUID] then
castsPerGUID[args.sourceGUID] = 0
end
castsPerGUID[args.sourceGUID] = castsPerGUID[args.sourceGUID] + 1
local count = castsPerGUID[args.sourceGUID]
if self:CheckInterruptFilter(args.sourceGUID, false, false) then
specWarnStormBolt:Show(args.sourceName, count)
if count < 6 then
specWarnStormBolt:Play("kick"..count.."r")
else
specWarnStormBolt:Play("kickcast")
end
end
elseif spellId == 377658 then
self.vb.tankCount = self.vb.tankCount + 1
if self:IsTanking("player", "boss1", nil, true) then
specWarnElectrifiedJaws:Show()
specWarnElectrifiedJaws:Play("defensive")
end
timerElectrifiedJawsCD:Start()
elseif spellId == 377594 then
self.vb.breathCount = self.vb.breathCount + 1
specWarnLightingBreath:Show(self.vb.breathCount)
specWarnLightingBreath:Play("breathsoon")
timerLightningBreathCD:Start()
elseif spellId == 385065 then
self.vb.breathCount = self.vb.breathCount + 1
specWarnLightningDevastation:Show(self.vb.breathCount)
specWarnLightningDevastation:Play("breathsoon")
timerLightningDevastationCD:Start()
elseif spellId == 397382 then
self.vb.shroudIcon = 1
timerShatteringShroudCD:Start(nil, args.sourceGUID)
elseif spellId == 397468 then
warnBlazingroar:Show()
elseif spellId == 387261 then
self.vb.energyCount = self.vb.energyCount + 1
specWarnStormsurge:Show(self.vb.energyCount)
specWarnStormsurge:Play("scatter")
timerStormsurgeCD:Start()
if self.Options.InfoFrame then
DBM.InfoFrame:SetHeader(args.spellName)
DBM.InfoFrame:Show(2, "enemyabsorb", nil, args.amount, "boss1")
end
elseif spellId == 385574 then
self.vb.wingCount = self.vb.wingCount + 1
specWarnTempestWing:Show(self.vb.wingCount)
specWarnTempestWing:Play("watchwave")
timerTempestWingCD:Start()
elseif spellId == 389870 then
specWarnStormBreak:Show()
specWarnStormBreak:Play("watchstep")
timerStormBreakCD:Start(nil, args.sourceGUID)
elseif spellId == 385068 then
specWarnBallLightning:Show()
specWarnBallLightning:Play("watchorb")
timerBallLightningCD:Start(nil, args.sourceGUID)
elseif spellId == 395885 then
self.vb.energyCount = self.vb.energyCount + 1
specWarnStormEater:Show(self.vb.energyCount)
specWarnStormEater:Play("specialsoon")--Clarify voice when number of soakers and need to soak better understood
elseif spellId == 386410 then
self.vb.tankCount = self.vb.tankCount + 1
if self:IsTanking("player", "boss1", nil, true) then
specWarnThunderousBlast:Show()
specWarnThunderousBlast:Play("defensive")
end
timerThunderousBlastCD:Start()
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 381615 then
self.vb.chargeIcon = 1
self.vb.chargeCount = self.vb.chargeCount + 1
timerStaticChargeCD:Start()
elseif spellId == 376126 then
self.vb.strikeCount = self.vb.strikeCount + 1
warnLightningStrike:Show(self.vb.strikeCount)
timerLightningStrikesCD:Start()
elseif spellId == 396037 then
timerSurgingBlastCD:Start(nil, args.sourceGUID)
elseif spellId == 378829 then
self.vb.chargeIcon = 1
self.vb.chargeCount = self.vb.chargeCount + 1
timerFulminatingChargeCD:Start()
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 381615 then
local icon = self.vb.chargeIcon
if self.Options.SetIconOnStaticCharge then
self:SetIcon(args.destName, icon)
end
if args:IsPlayer() then
specWarnStaticCharge:Show(self:IconNumToTexture(icon))
specWarnStaticCharge:Play("mm"..icon)
yellStaticCharge:Yell(icon, icon)
yellStaticChargeFades:Countdown(spellId, nil, icon)
end
warnStaticCharge:CombinedShow(0.5, args.destName)
self.vb.chargeIcon = self.vb.chargeIcon + 1
elseif spellId == 395906 and not args:IsPlayer() then
specWarnElectrifiedJawsOther:Show(args.destName)
specWarnElectrifiedJawsOther:Play("tauntboss")
elseif spellId == 381249 then
self.vb.scalesCount = self.vb.scalesCount + 1
warnElectricScales:Show(self.vb.scalesCount)
timerElectricScalesCD:Start()
elseif (spellId == 388115 or spellId == 395929) and args:IsPlayer() and self:AntiSpam(2, 4) then
specWarnGTFO:Show(args.spellName)
specWarnGTFO:Play("watchfeet")
elseif spellId == 396037 then
if args:IsPlayer() then
specWarnSurgingBlast:Show()
specWarnSurgingBlast:Play("runout")
yellSurgingBlast:Yell()
yellSurgingBlastFades:Countdown(spellId)
end
warnSurgingBlast:CombinedShow(0.5, args.destName)
elseif spellId == 385541 then
if self.Options.NPAuraOnAscension then
DBM.Nameplate:Show(true, args.destGUID, spellId)
end
elseif spellId == 397387 then
specWarnFlameShield:Show(args.destName)
specWarnFlameShield:Play("targetchange")
timerFlameShieldCD:Start(nil, args.sourceGUID)
if self.Options.NPAuraOnFlameShield then
DBM.Nameplate:Show(true, args.destGUID, spellId)
end
elseif spellId == 397382 then
local icon = self.vb.shroudIcon
if self.Options.SetIconOnShatteringShroud then
self:SetIcon(args.destName, icon)
end
if args:IsPlayer() then
specWarnShatteringShroud:Show()
specWarnShatteringShroud:Play("targetyou")
end
warnShatteringShroud:CombinedShow(0.5, args.destName)
self.vb.shroudIcon = self.vb.shroudIcon + 1
elseif spellId == 388691 then
if self.Options.InfoFrame then
DBM.InfoFrame:SetHeader(args.spellName)
DBM.InfoFrame:Show(2, "enemyabsorb", nil, args.amount or UnitGetTotalAbsorbs("boss1"), "boss1")
end
elseif args:IsSpellID(391990, 394574, 394576) then--All variants of positive
if args:IsPlayer() then
specWarnPositiveCharge:Show()
specWarnPositiveCharge:Play("positive")
yellStormCharged:Yell(6)--Blue Square
end
elseif args:IsSpellID(391991, 394579, 394575) then--All variants of positive
if args:IsPlayer() then
specWarnNegativeCharge:Show()
specWarnNegativeCharge:Play("negative")
yellStormCharged:Yell(7)--Red X
end
elseif spellId == 394582 and args:IsPlayer() then
warnFocusedCharge:Show()
elseif spellId == 394583 and args:IsPlayer() then
warnScatteredCharge:Show()
elseif spellId == 394584 then
warnInversion:CombinedShow(0.3, args.destName)
if args:IsPlayer() then
specWarnInversion:Show()
specWarnInversion:Play("polarityshift")
yellInversion:Yell()
yellInversionFades:Countdown(spellId)
end
elseif spellId == 377467 then
local icon = self.vb.chargeIcon
if self.Options.SetIconOnFulminatingCharge then
self:SetIcon(args.destName, icon)
end
if args:IsPlayer() then
specWarnFulminatingCharge:Show(self:IconNumToTexture(icon))
specWarnFulminatingCharge:Play("mm"..icon)
yellFulminatingCharge:Yell(icon, icon)
yellFulminatingChargeFades:Countdown(spellId, nil, icon)
end
warnFulminatingCharge:CombinedShow(0.5, args.destName)
self.vb.chargeIcon = self.vb.chargeIcon + 1
elseif spellId == 391285 and not args:IsPlayer() then
specWarnMeltedArmor:Show(args.destName)
specWarnMeltedArmor:Play("tauntboss")
elseif spellId == 388431 then--Ruinous Shroud
self:SetStage(1.5)
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(1.5))
warnPhase:Play("phasechange")
self.vb.breathCount = 0--Reused for Lightning Devastation
timerHurricaneWingCD:Stop()
timerStaticChargeCD:Stop()
timerVolatileCurrentCD:Stop()
timerElectrifiedJawsCD:Stop()
timerLightningBreathCD:Stop()
timerLightningStrikesCD:Stop()
timerElectricScalesCD:Stop()
timerLightningDevastationCD:Start(2)
elseif spellId == 396734 then--Storm Shroud
self:SetStage(2.5)
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(2.5))
warnPhase:Play("phasechange")
self.vb.breathCount = 0--Reused for Lightning Devastation
timerStormsurgeCD:Stop()
timerTempestWingCD:Stop()
timerFulminatingChargeCD:Stop()
timerVolatileCurrentCD:Stop()
timerElectrifiedJawsCD:Stop()
timerLightningStrikesCD:Stop()
timerElectricScalesCD:Stop()
timerLightningDevastationCD:Start(3)
-- timerStormBreakCD:Start(3)
-- timerBallLightningCD:Start(3)
end
end
--mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
if spellId == 381615 then
if self.Options.SetIconOnStaticCharge then
self:SetIcon(args.destName, 0)
end
if args:IsPlayer() then
yellStaticChargeFades:Cancel()
end
elseif spellId == 388431 then--Ruinous Shroud
self:SetStage(2)
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(2))
warnPhase:Play("ptwo")
self.vb.energyCount = 0
self.vb.currentCount = 0
self.vb.tankCount = 0
self.vb.strikeCount = 0
self.vb.scalesCount = 0
self.vb.wingCount = 0
self.vb.chargeCount = 0
timerLightningDevastationCD:Stop()
timerStormsurgeCD:Start(2)
timerTempestWingCD:Start(2)
timerFulminatingChargeCD:Start(2)
timerVolatileCurrentCD:Start(2)
timerElectrifiedJawsCD:Start(2)
timerLightningStrikesCD:Start(2)
timerElectricScalesCD:Start(2)
elseif spellId == 396734 then--Storm Shroud
self:SetStage(3)
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(3))
warnPhase:Play("pthree")
self.vb.energyCount = 0--Used for Mythic Storm-Eater
self.vb.chargeCount = 0--Fulminating
self.vb.tankCount = 0--Thunderous Blast
self.vb.breathCount = 0--Lightning Breath
self.vb.strikeCount = 0--Lightning Strike
self.vb.scalesCount = 0--Electric Scales
self.vb.wingCount = 0
timerLightningDevastationCD:Stop()
timerStormEaterCD:Start(3)
timerTempestWingCD:Start(3)
timerFulminatingChargeCD:Start(3)
timerLightningBreathCD:Start(3)
timerThunderousBlastCD:Start(3)
timerLightningStrikesCD:Start(3)
timerElectricScalesCD:Start(3)
elseif spellId == 396037 then
if args:IsPlayer() then
yellSurgingBlastFades:Cancel()
end
elseif spellId == 385541 then
if self.Options.NPAuraOnAscension then
DBM.Nameplate:Hide(true, args.destGUID, spellId)
end
elseif spellId == 397387 then
if self.Options.NPAuraOnFlameShield then
DBM.Nameplate:Hide(true, args.destGUID, spellId)
end
elseif spellId == 397382 then
if self.Options.SetIconOnShatteringShroud then
self:SetIcon(args.destName, 0)
end
if args:IsPlayer() then
warnShatteringShroudFaded:Show()
end
elseif spellId == 388691 then
warnStormsurge:Show()
if self.Options.InfoFrame then
DBM.InfoFrame:Hide()
end
elseif spellId == 394584 then
if args:IsPlayer() then
yellInversionFades:Cancel()
end
elseif spellId == 377467 then
if self.Options.SetIconOnFulminatingCharge then
self:SetIcon(args.destName, 0)
end
if args:IsPlayer() then
yellFulminatingChargeFades:Cancel()
end
end
end
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
if spellId == 395929 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:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 194999 then--Volatile Spark
castsPerGUID[args.destGUID] = nil
elseif cid == 193760 then--Surging Ruiner
timerSurgingBlastCD:Stop(args.destGUID)
-- elseif cid == 194991 then--Oathsworn Vanguard
elseif cid == 194990 then--Stormseeker Acolyte
castsPerGUID[args.destGUID] = nil
elseif cid == 199547 then--Frostforged Zealot
timerShatteringShroudCD:Stop(args.destGUID)
elseif cid == 199549 then--Flamesworn Herald
timerFlameShieldCD:Stop(args.destGUID)
elseif cid == 197145 then--Colossal Stormfiend
timerStormBreakCD:Stop(args.destGUID)
timerBallLightningCD:Stop(args.destGUID)
end
end
--[[
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
if spellId == 353193 then
end
end
--]]