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