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.
261 lines
11 KiB
261 lines
11 KiB
|
2 years ago
|
local mod = DBM:NewMod(2557, "DBM-Raids-Dragonflight", 1, 1207)
|
||
|
|
local L = mod:GetLocalizedStrings()
|
||
|
|
|
||
|
|
mod:SetRevision("20231024015835")
|
||
|
|
mod:SetCreatureID(208478)
|
||
|
|
mod:SetEncounterID(2737)
|
||
|
|
mod:SetUsedIcons(1, 2, 3, 4)
|
||
|
|
--mod:SetHotfixNoticeRev(20210126000000)
|
||
|
|
--mod:SetMinSyncRevision(20210126000000)
|
||
|
|
mod.respawnTime = 29
|
||
|
|
|
||
|
|
mod:RegisterCombat("combat")
|
||
|
|
|
||
|
|
mod:RegisterEventsInCombat(
|
||
|
|
"SPELL_CAST_START 421672 425401 425400 420933 421616 420415 423117 421703",
|
||
|
|
"SPELL_CAST_SUCCESS 421284",
|
||
|
|
"SPELL_AURA_APPLIED 421207 419054 427201",
|
||
|
|
"SPELL_AURA_APPLIED_DOSE 419054",
|
||
|
|
"SPELL_AURA_REMOVED 421207 427201",
|
||
|
|
-- "SPELL_AURA_REMOVED_DOSE",
|
||
|
|
"SPELL_PERIODIC_DAMAGE 421082 423494",
|
||
|
|
"SPELL_PERIODIC_MISSED 421082 423494",
|
||
|
|
-- "UNIT_DIED",
|
||
|
|
"UNIT_SPELLCAST_START boss1",
|
||
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1"
|
||
|
|
)
|
||
|
|
|
||
|
|
--[[
|
||
|
|
(ability.id = 421672 or ability.id = 425401 or ability.id = 425400 or ability.id = 420933 or ability.id = 421616 or ability.id = 420415 or ability.id = 423117 or ability.id = 421703) and type = "begincast"
|
||
|
|
or ability.id = 421284 and type = "cast"
|
||
|
|
--]]
|
||
|
|
--TODO, disgorge targets?
|
||
|
|
--TODO, chat bubbles for Coiling Flames
|
||
|
|
--TODO, work out right taunt timing, just swap for each jaws or on venom stacks?
|
||
|
|
--TODO, add obvious https://www.wowhead.com/ptr-2/spell=424218/combusting-rage if tanks aren't in range?
|
||
|
|
--mod:AddTimerLine(DBM:EJ_GetSectionInfo(22309))
|
||
|
|
local warnSperentsFury = mod:NewCountAnnounce(421672, 3)
|
||
|
|
local warnMoltenVenom = mod:NewStackAnnounce(419054, 2, nil, "Tank|Healer")
|
||
|
|
local warnSerpentsWrath = mod:NewSpellAnnounce(421703, 4)
|
||
|
|
local warnVolcanicDisgorge = mod:NewTargetCountAnnounce(421616, 3, nil, nil, nil, nil, nil, nil, true)
|
||
|
|
|
||
|
|
local specWarnCoilingFlames = mod:NewSpecialWarningYou(421207, nil, 7897, nil, 1, 2)
|
||
|
|
local yellCoilingFlames = mod:NewYell(421207, 7897)--Shortname Flames
|
||
|
|
local yellCoilingFlamesFades = mod:NewShortFadesYell(421207)
|
||
|
|
local specWarnCoilingEruption = mod:NewSpecialWarningYou(427201, nil, nil, nil, 1, 2)
|
||
|
|
local yellCoilingEruption = mod:NewShortYell(427201, DBM_COMMON_L.GROUPSOAK, nil, nil, "YELL")--NewShortPosYell
|
||
|
|
local yellCoilingEruptionFades = mod:NewShortFadesYell(427201, nil, nil, nil, "YELL")--NewIconFadesYell
|
||
|
|
|
||
|
|
local specWarnMoltenVenom = mod:NewSpecialWarningStack(419054, nil, 6, nil, nil, 1, 6)
|
||
|
|
--local specWarnMoltenVenomSwap = mod:NewSpecialWarningTaunt(419054, nil, nil, nil, 1, 2)--Need to evaulate whether tanks swap for this or jaws. double tank mechanic fights are redundant
|
||
|
|
local specWarnFloodoftheFirleands = mod:NewSpecialWarningSoakCount(420933, nil, nil, nil, 2, 2)
|
||
|
|
local specWarnVolcanicDisgorge = mod:NewSpecialWarningYou(421616, nil, nil, nil, 2, 2)
|
||
|
|
local yellVolcanicDisgorge = mod:NewShortYell(421616, DBM_COMMON_L.POOLS)
|
||
|
|
local specWarnScorchtailCrash = mod:NewSpecialWarningDodgeCount(420415, nil, 136870, nil, 3, 2)
|
||
|
|
local specWarnCataclysmJaws = mod:NewSpecialWarningDefensive(423117, nil, nil, nil, 1, 2)
|
||
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(421082, nil, nil, nil, 1, 8)
|
||
|
|
|
||
|
|
local timerSerpentsFuryCD = mod:NewNextCountTimer(70, 421672, 7897, nil, nil, 3)--Shortname "Flames"
|
||
|
|
local timerCoilingFlames = mod:NewCastTimer(7.5, 421672, 7897, nil, nil, 5)
|
||
|
|
local timerCoilingEruption = mod:NewCastTimer(16, 427201, L.DebuffSoaks, nil, nil, 5)
|
||
|
|
local timerFloodoftheFirelandsCD = mod:NewNextCountTimer(70, 420933, DBM_COMMON_L.GROUPSOAKS.." (%s)", nil, nil, 5)
|
||
|
|
local timerVolcanicDisgorgeCD = mod:NewNextCountTimer(10, 421616, DBM_COMMON_L.POOLS.." (%s)", nil, nil, 3)
|
||
|
|
local timerScorchtailCrashCD = mod:NewCDCountTimer(20, 420415, 136870, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)--Short name "Tail Slam"
|
||
|
|
local timerCataclysmJawsCD = mod:NewNextCountTimer(10, 423117, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
||
|
|
--local berserkTimer = mod:NewBerserkTimer(600)
|
||
|
|
|
||
|
|
--mod:AddRangeFrameOption("5/6/10")
|
||
|
|
--mod:AddInfoFrameOption(407919, true)
|
||
|
|
--mod:AddSetIconOption("SetIconOnCoilingFlames", 421207, false, false, {1, 2, 3, 4})
|
||
|
|
mod:AddSetIconOption("SetIconOnCoilingEruption", 427201, false, false, {1, 2, 3, 4})--Off by default since other mods don't use icons at all
|
||
|
|
|
||
|
|
mod.vb.flamesIcon = 1
|
||
|
|
mod.vb.furyCount = 0
|
||
|
|
mod.vb.floodCount = 0
|
||
|
|
mod.vb.volcanicCount = 0
|
||
|
|
mod.vb.tailCount = 0
|
||
|
|
mod.vb.jawsCount = 0
|
||
|
|
|
||
|
|
local allTimers = {
|
||
|
|
--Cata Jaws
|
||
|
|
[423117] = {5.0, 30.0, 30.0, 40.0, 30.0, 40.0, 30.0, 25.0, 25.0, 20.0},
|
||
|
|
--Volcanic Disgorge
|
||
|
|
[421616] = {29.9, 20.0, 40.0, 10.0, 10.0, 10.0, 10.0, 30.0, 10.0, 10.0, 10.0, 10.0, 40.0, 20.0}
|
||
|
|
}
|
||
|
|
|
||
|
|
function mod:DisgorgeTarget(targetname, uId)
|
||
|
|
if not targetname then return end
|
||
|
|
if targetname == UnitName("player") then
|
||
|
|
specWarnVolcanicDisgorge:Show()
|
||
|
|
specWarnVolcanicDisgorge:Play("targetyou")
|
||
|
|
yellVolcanicDisgorge:Yell()
|
||
|
|
else
|
||
|
|
warnVolcanicDisgorge:Show(self.vb.volcanicCount, targetname)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnCombatStart(delay)
|
||
|
|
self.vb.flamesIcon = 1
|
||
|
|
self.vb.furyCount = 0
|
||
|
|
self.vb.floodCount = 0
|
||
|
|
self.vb.volcanicCount = 0
|
||
|
|
self.vb.tailCount = 0
|
||
|
|
self.vb.jawsCount = 0
|
||
|
|
timerCataclysmJawsCD:Start(5-delay, 1)
|
||
|
|
timerSerpentsFuryCD:Start(9.9-delay, 1)
|
||
|
|
timerScorchtailCrashCD:Start(20-delay, 1)
|
||
|
|
timerVolcanicDisgorgeCD:Start(29.9-delay, 1)
|
||
|
|
timerFloodoftheFirelandsCD:Start(69.9-delay, 1)
|
||
|
|
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 == 421672 or spellId == 425401 or spellId == 425400 then--herioc, Unknown, Mythic?
|
||
|
|
self.vb.furyCount = self.vb.furyCount + 1
|
||
|
|
self.vb.flamesIcon = 1
|
||
|
|
warnSperentsFury:Show(self.vb.furyCount)
|
||
|
|
timerSerpentsFuryCD:Start(nil, self.vb.furyCount+1)
|
||
|
|
timerCoilingFlames:Start(7.5)
|
||
|
|
elseif spellId == 420933 then
|
||
|
|
self.vb.floodCount = self.vb.floodCount + 1
|
||
|
|
specWarnFloodoftheFirleands:Show(self.vb.floodCount)
|
||
|
|
specWarnFloodoftheFirleands:Play("helpsoak")
|
||
|
|
timerFloodoftheFirelandsCD:Start(nil, self.vb.floodCount+1)
|
||
|
|
elseif spellId == 421616 then
|
||
|
|
self.vb.volcanicCount = self.vb.volcanicCount + 1
|
||
|
|
-- self:BossTargetScanner(args.sourceGUID, "DisgorgeTarget", 0.1, 8, true)
|
||
|
|
specWarnVolcanicDisgorge:Show(self.vb.volcanicCount)
|
||
|
|
specWarnVolcanicDisgorge:Play("watchstep")
|
||
|
|
local timer = self:GetFromTimersTable(allTimers, false, false, spellId, self.vb.volcanicCount+1)
|
||
|
|
if timer then
|
||
|
|
timerVolcanicDisgorgeCD:Start(timer, self.vb.volcanicCount+1)
|
||
|
|
end
|
||
|
|
-- elseif spellId == 420415 then
|
||
|
|
|
||
|
|
elseif spellId == 423117 then
|
||
|
|
self.vb.jawsCount = self.vb.jawsCount + 1
|
||
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
||
|
|
specWarnCataclysmJaws:Show()
|
||
|
|
specWarnCataclysmJaws:Play("defensive")
|
||
|
|
else
|
||
|
|
--Other tank has this debuff already and it will NOT be gone when cast finishes, TAUNT NOW!
|
||
|
|
--This doesn't check TankSwapBehavior dropdown because this always validates that the player about to get hit by this, shouldn't be hit by it
|
||
|
|
--if UnitExists("boss1target") and not UnitIsUnit("player", "boss1target") then
|
||
|
|
-- local _, _, _, _, _, expireTimeTarget = DBM:UnitDebuff("boss1target", 407547)
|
||
|
|
-- if (expireTimeTarget and expireTimeTarget-GetTime() >= 2) and self:AntiSpam(1, 1) then
|
||
|
|
-- specWarnFlamingSlashTaunt:Show(UnitName("boss1target"))
|
||
|
|
-- specWarnFlamingSlashTaunt:Play("tauntboss")
|
||
|
|
-- end
|
||
|
|
--end
|
||
|
|
end
|
||
|
|
local timer = self:GetFromTimersTable(allTimers, false, false, spellId, self.vb.jawsCount+1)
|
||
|
|
if timer then
|
||
|
|
timerCataclysmJawsCD:Start(timer, self.vb.jawsCount+1)
|
||
|
|
end
|
||
|
|
elseif spellId == 421703 then
|
||
|
|
warnSerpentsWrath:Show()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_AURA_APPLIED(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if spellId == 421207 then
|
||
|
|
--local icon = self.vb.flamesIcon
|
||
|
|
--if self.Options.SetIconOnCoilingFlames then
|
||
|
|
-- self:SetIcon(args.destName, icon)
|
||
|
|
--end
|
||
|
|
if args:IsPlayer() then
|
||
|
|
specWarnCoilingFlames:Show()
|
||
|
|
specWarnCoilingFlames:Play("targetyou")
|
||
|
|
yellCoilingFlames:Yell()
|
||
|
|
yellCoilingFlamesFades:Countdown(spellId)
|
||
|
|
end
|
||
|
|
if self:IsMythic() and self:AntiSpam(5, 2) then
|
||
|
|
timerCoilingEruption:Start(16, self.vb.furyCount)--Time until mythic debuffs expire so combination of this one expiring, next one applying, and also expiring
|
||
|
|
end
|
||
|
|
elseif spellId == 427201 then
|
||
|
|
local icon = self.vb.flamesIcon
|
||
|
|
if self.Options.SetIconOnCoilingEruption then
|
||
|
|
self:SetIcon(args.destName, icon)
|
||
|
|
end
|
||
|
|
if args:IsPlayer() then
|
||
|
|
specWarnCoilingEruption:Show()
|
||
|
|
specWarnCoilingEruption:Play("targetyou")
|
||
|
|
yellCoilingEruption:Yell(icon, icon)--icon, icon
|
||
|
|
yellCoilingEruptionFades:Countdown(spellId)--, nil, icon
|
||
|
|
end
|
||
|
|
self.vb.flamesIcon = self.vb.flamesIcon + 1
|
||
|
|
elseif spellId == 419054 then
|
||
|
|
local uId = DBM:GetRaidUnitId(args.destName)
|
||
|
|
if self:IsTanking(uId) then
|
||
|
|
local amount = args.amount or 1
|
||
|
|
if amount % 3 == 0 then
|
||
|
|
if args:IsPlayer() and amount >= 6 then
|
||
|
|
specWarnMoltenVenom:Show()
|
||
|
|
specWarnMoltenVenom:Play("stackhigh")
|
||
|
|
else
|
||
|
|
-- if not DBM:UnitDebuff("player", spellId) and not UnitIsDeadOrGhost("player") and not self:IsHealer() then
|
||
|
|
-- specWarnMoltenVenomSwap:Show(args.destName)
|
||
|
|
-- specWarnMoltenVenomSwap:Play("tauntboss")
|
||
|
|
-- else
|
||
|
|
warnMoltenVenom:Show(args.destName, amount)
|
||
|
|
-- end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
||
|
|
|
||
|
|
function mod:SPELL_AURA_REMOVED(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if spellId == 421207 then
|
||
|
|
--if self.Options.SetIconOnCoilingFlames then
|
||
|
|
-- self:SetIcon(args.destName, 0)
|
||
|
|
--end
|
||
|
|
if args:IsPlayer() then
|
||
|
|
yellCoilingFlamesFades:Cancel()
|
||
|
|
end
|
||
|
|
elseif spellId == 427201 then
|
||
|
|
if self.Options.SetIconOnCoilingEruption then
|
||
|
|
self:SetIcon(args.destName, 0)
|
||
|
|
end
|
||
|
|
if args:IsPlayer() then
|
||
|
|
yellCoilingEruptionFades:Cancel()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
||
|
|
if (spellId == 423494 or spellId == 421082) and destGUID == UnitGUID("player") and self:AntiSpam(3, 4) then
|
||
|
|
specWarnGTFO:Show(spellName)
|
||
|
|
specWarnGTFO:Play("watchfeet")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
||
|
|
|
||
|
|
--"<31.18 15:55:30> [UNIT_SPELLCAST_START] Volcoross(75.6%-43.0%){Target:Nnoggie} -Volcanic Disgorge- 2.5s [[boss1:Cast-3-5773-2549-5244-421616-0099903FD1:421616]]",
|
||
|
|
--"<31.18 15:55:30> [CLEU] SPELL_CAST_START#Creature-0-5773-2549-5244-208478-0000103F2B#Volcoross(75.6%-43.0%)##nil#421616#Volcanic Disgorge#nil#nil",
|
||
|
|
--"<31.20 15:55:30> [UNIT_TARGET] boss1#Volcoross#Target: ??#TargetOfTarget: ??",
|
||
|
|
--"<31.69 15:55:30> [UNIT_TARGET] boss1#Volcoross#Target: Revvezt#TargetOfTarget: Volcoross",
|
||
|
|
function mod:UNIT_SPELLCAST_START(uId, _, spellId)
|
||
|
|
if spellId == 421616 then
|
||
|
|
self:BossUnitTargetScanner(uId, "DisgorgeTarget", 1.1, true)--Allow tank true
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
||
|
|
if spellId == 421684 then--Scorchtail Crash
|
||
|
|
self.vb.tailCount = self.vb.tailCount + 1
|
||
|
|
specWarnScorchtailCrash:Show(self.vb.tailCount)
|
||
|
|
specWarnScorchtailCrash:Play("watchstep")
|
||
|
|
timerScorchtailCrashCD:Start(nil, self.vb.tailCount+1)
|
||
|
|
end
|
||
|
|
end
|