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.
164 lines
6.5 KiB
164 lines
6.5 KiB
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
|
|
|