local mod = DBM:NewMod(2430, "DBM-Shadowlands", nil, 1192) local L = mod:GetLocalizedStrings() mod:SetRevision("20211125075428") mod:SetCreatureID(167524) mod:SetEncounterID(2411) mod:SetUsedIcons(8) mod:SetReCombatTime(20) mod:EnableWBEngageSync()--Enable syncing engage in outdoors --mod:SetMinSyncRevision(11969) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 327274 327280 327262", "SPELL_CAST_SUCCESS 327256 327255 339278", "SPELL_AURA_APPLIED 327255 339278", "SPELL_AURA_APPLIED_DOSE 327255", "SPELL_AURA_REMOVED 327280", "CHAT_MSG_RAID_BOSS_EMOTE" ) --TODO, verify swap stacks count for Mark, don't know it's CD so can't assess yet --TODO, verify and adjust target scan for Charged Anima Blast --TOODO, range of Charged Anima Blast is unknown local warnVentAnima = mod:NewSpellAnnounce(327256, 3) local warnMarkofPenitence = mod:NewStackAnnounce(327255, 2, nil, "Tank") local warnLysoniasCall = mod:NewTargetAnnounce(339278, 3) local warnChargedAnimaBlast = mod:NewTargetNoFilterAnnounce(327262, 4) local specWarnUnleashedAnima = mod:NewSpecialWarningDodge(327274, nil, nil, nil, 2, 2) local specWarnMarkofPenitence = mod:NewSpecialWarningStack(327255, nil, 3, nil, nil, 1, 6) local specWarnMarkofPenitenceTaunt = mod:NewSpecialWarningTaunt(327255, nil, nil, nil, 1, 2) local specWarnLysoniasCall = mod:NewSpecialWarningYou(339278, nil, nil, nil, 1, 2) local specWarnChargedAnimaBlast = mod:NewSpecialWarningMoveAway(327262, nil, nil, nil, 3, 2) local specWarnChargedAnimaBlastNear = mod:NewSpecialWarningClose(327262, nil, nil, nil, 3, 2) local timerVentAnimaCD = mod:NewAITimer(11.6, 327256, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON) local timerUnleashedAnimaCD = mod:NewAITimer(82.0, 327274, nil, nil, nil, 3) local timerRechargeAnima = mod:NewBuffActiveTimer(30, 327274, nil, nil, nil, 6) local timerMarkofPenitenceCD = mod:NewAITimer(82.0, 327255, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON) local timerLysoniasCallCD = mod:NewAITimer(82.0, 339278, nil, nil, nil, 3) local timerChargedAnimaBlastCD = mod:NewAITimer(82.0, 327262, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON, nil, 1, 5) mod:AddRangeFrameOption(10, 327262)--TODO, update range if it's too big or too small mod:AddSetIconOption("SetIconOnAnimaBlast", 327262, true, false, {8}) function mod:OnCombatStart(delay, yellTriggered) if yellTriggered then --timerVentAnimaCD:Start(1-delay) --timerUnleashedAnimaCD:Start(1-delay) --timerMarkofPenitenceCD:Start(1-delay) --timerLysoniasCallCD:Start(1-delay)--Iffy, this might be something boss actually does during recharge --timerChargedAnimaBlastCD:Start(1-delay) end if self.Options.RangeFrame then DBM.RangeCheck:Show(10) end end function mod:OnCombatEnd() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 327274 then specWarnUnleashedAnima:Show() specWarnUnleashedAnima:Play("watchstep") timerUnleashedAnimaCD:Start() elseif spellId == 327280 then--Recharge Anima timerVentAnimaCD:Stop() timerUnleashedAnimaCD:Stop() timerMarkofPenitenceCD:Stop() timerLysoniasCallCD:Stop()--Iffy, this might be something boss actually does during recharge timerChargedAnimaBlastCD:Stop() timerRechargeAnima:Start() elseif spellId == 327262 then timerChargedAnimaBlastCD:Start() end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 327256 then warnVentAnima:Show() timerVentAnimaCD:Start() elseif spellId == 327255 then timerMarkofPenitenceCD:Start() elseif spellId == 339278 then timerLysoniasCallCD:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 327255 then local amount = args.amount or 1 if amount >= 3 then if args:IsPlayer() then specWarnMarkofPenitence:Show(amount) specWarnMarkofPenitence: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 < 12.7) then--TODO, input valid CD here specWarnMarkofPenitenceTaunt:Show(args.destName) specWarnMarkofPenitenceTaunt:Play("tauntboss") else warnMarkofPenitence:Show(args.destName, amount) end end else warnMarkofPenitence:Show(args.destName, amount) end elseif spellId == 339278 then if args:IsPlayer() then specWarnLysoniasCall:Show() specWarnLysoniasCall:Play("targetyou") else warnLysoniasCall:CombinedShow(0.5, args.destName)--TODO, verify it's more than one target end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 327280 then--Recharge Anima --Reactivate timers timerVentAnimaCD:Start(2) timerUnleashedAnimaCD:Start(2) timerMarkofPenitenceCD:Start(2) timerLysoniasCallCD:Start(2)--Iffy, this might be something boss actually does during recharge timerChargedAnimaBlastCD:Start(2) end end --"<54.60 11:04:21> [UNIT_SPELLCAST_START] Valinor(Zulrager) - Charged Anima Blast - 4s [[nameplate6:Cast-3-3883-2222-64-327262-0000EF4805:327262]]", -- [5166] --"<54.61 11:04:21> [CLEU] SPELL_CAST_START#Creature-0-3883-2222-64-167524-00006F44AB#Valinor##nil#327262#Charged Anima Blast#nil#nil", -- [5168] --"<54.72 11:04:21> [UNIT_TARGET] nameplate6#Valinor#Target: Disclaimz#TargetOfTarget: Valinor", -- [5175] --"<54.96 11:04:21> [CHAT_MSG_RAID_BOSS_EMOTE] |TInterface\\Icons\\Spell_AnimaBastion_Beam.blp:20|t Valinor targets Disclaimz with a |cFFFF0000|Hspell:327262|h[Charged Anima Blast]|h|r!#Valinor### function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg, _, _, _, target) if msg:find("spell:327262") then local targetname = DBM:GetUnitFullName(target) or target--For people not in group, GetUnitFullName fails so need to at least use blizz provided target as backup if targetname == UnitName("player") then specWarnChargedAnimaBlast:Show() specWarnChargedAnimaBlast:Play("runout") elseif self:CheckNearby(8, targetname) then specWarnChargedAnimaBlastNear:Show(targetname) specWarnChargedAnimaBlastNear:Play("runaway") else warnChargedAnimaBlast:Show(targetname) end if self.Options.SetIconOnAnimaBlast then self:SetIcon(targetname, 8, 5)--Icon clears 1 second after blast end end end