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.

170 lines
5.8 KiB

local mod = DBM:NewMod(1216, "DBM-Party-WoD", 1, 547)
local L = mod:GetLocalizedStrings()
mod.statTypes = "normal,heroic,mythic,challenge,timewalker"
mod:SetRevision("20200912135206")
mod:SetCreatureID(75927)
mod:SetEncounterID(1678)
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 153392 153234",
"SPELL_AURA_REMOVED 153392 153764",
"SPELL_CAST_START 153764 154221 157173",
"SPELL_PERIODIC_DAMAGE 153616 153726",
"SPELL_ABSORBED 153616 153726",
"SPELL_SUMMON 164081",
"UNIT_SPELLCAST_SUCCEEDED boss1"
)
local warnCurtainOfFlame = mod:NewTargetAnnounce(153396, 4)
local warnFelLash = mod:NewTargetAnnounce(153234, 3, nil, "Tank|Healer", 2)
local warnFelPool = mod:NewSpellAnnounce(153616, 1)
local specWarnCurtainOfFlame = mod:NewSpecialWarningMoveAway(153396, nil, nil, nil, 1, 2)
local specWarnCurtainOfFlameNear = mod:NewSpecialWarningClose(153396, nil, nil, nil, 1, 2)
local yellWarnCurtainOfFlame = mod:NewYell(153396)
local specWarnFelLash = mod:NewSpecialWarningYou(153234, nil, nil, 2, 1, 2)
local specWarnFelStomp = mod:NewSpecialWarningDodge(157173, "Melee", nil, 2, 1, 2)
local specWarnClawsOfArgus = mod:NewSpecialWarningSpell(153764, nil, nil, nil, 1, 2)
local specWarnClawsOfArgusEnd = mod:NewSpecialWarningEnd(153764, nil, nil, nil, 1, 2)
local specWarnSummonFelguard = mod:NewSpecialWarningSwitch(164081, "Tank", nil, nil, 1, 2)
local specWarnFelblast = mod:NewSpecialWarningInterrupt(154221, "HasInterrupt", nil, 2, 1, 2)--Very spammy
local specWarnFelPool = mod:NewSpecialWarningMove(153616, nil, nil, nil, 1, 8)
local specWarnFelSpark = mod:NewSpecialWarningMove(153726, nil, nil, nil, 1, 8)
local timerCurtainOfFlameCD = mod:NewNextTimer(20, 153396, nil, nil, nil, 3, nil, nil, nil, 2, 4)--20sec cd but can be massively delayed by adds phases
local timerFelLash = mod:NewTargetTimer(7.5, 153234, nil, "Tank|Healer", 2, 5)
local timerClawsOfArgus = mod:NewBuffActiveTimer(20, 153764, nil, nil, nil, 6)
local timerClawsOfArgusCD = mod:NewNextTimer(70, 153764, nil, nil, nil, 6, nil, nil, nil, 1, 4)
mod:AddRangeFrameOption(5, 153396)
mod.vb.debuffCount = 0
mod.vb.flamesCast = 2
local curtainDebuff = DBM:GetSpellInfo(153396)
local debuffFilter
do
debuffFilter = function(uId)
return DBM:UnitDebuff(uId, curtainDebuff)
end
end
function mod:OnCombatStart(delay)
self.vb.debuffCount = 0
self.vb.flamesCast = 2--Set to 2 on pull to offset first argus
timerCurtainOfFlameCD:Start(16-delay)
timerClawsOfArgusCD:Start(34-delay)
specWarnClawsOfArgus:ScheduleVoice(27.5-delay, "mobsoon")
end
function mod:OnCombatEnd()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
function mod:SPELL_CAST_SUCCESS(args)
if args.spellId == 153396 then--if claws of argus is less than 20 seconds away, don't start CurtainOfFlame timer
self.vb.flamesCast = self.vb.flamesCast + 1
if self.vb.flamesCast < 3 then
timerCurtainOfFlameCD:Start()
end
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 153392 then
self.vb.debuffCount = self.vb.debuffCount + 1
local targetname = args.destName
warnCurtainOfFlame:CombinedShow(0.5, targetname)
if args:IsPlayer() then
specWarnCurtainOfFlame:Show()
yellWarnCurtainOfFlame:Yell()
specWarnCurtainOfFlame:Play("runout")
else
if self:CheckNearby(5, targetname) then
specWarnCurtainOfFlameNear:Show(targetname)
specWarnCurtainOfFlameNear:Play("runaway")
end
end
if self.Options.RangeFrame then
if DBM:UnitDebuff("player", curtainDebuff) then--You have debuff, show everyone
DBM.RangeCheck:Show(5, nil)
else--You do not have debuff, only show players who do
DBM.RangeCheck:Show(5, debuffFilter)
end
end
elseif spellId == 153234 then
timerFelLash:Start(args.destName)
if args:IsPlayer() then
specWarnFelLash:Show()
specWarnFelLash:Play("targetyou")
else
warnFelLash:Show(args.destName)
end
end
end
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
if spellId == 153392 then
self.vb.debuffCount = self.vb.debuffCount - 1
if self.Options.RangeFrame and self.vb.debuffCount == 0 then
DBM.RangeCheck:Hide()
end
elseif spellId == 153764 then--Claws of Argus ending
self.vb.flamesCast = 0
specWarnClawsOfArgusEnd:Show()
specWarnClawsOfArgusEnd:Play("phasechange")
timerCurtainOfFlameCD:Start(7)
timerClawsOfArgusCD:Start()
specWarnClawsOfArgus:ScheduleVoice(63.5, "mobsoon")
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 153764 then
specWarnClawsOfArgus:Show()
specWarnClawsOfArgus:Play("killmob")
timerClawsOfArgus:Start()
elseif spellId == 154221 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnFelblast:Show(args.sourceName)
if self:IsTank() then
specWarnFelblast:Play("kickcast")
else
specWarnFelblast:Play("helpkick")
end
elseif spellId == 157173 then
specWarnFelStomp:Show()
specWarnFelStomp:Play("shockwave")
end
end
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
if spellId == 153616 and destGUID == UnitGUID("player") and self:AntiSpam(2, 1) then
specWarnFelPool:Show()
specWarnFelPool:Play("watchfeet")
elseif spellId == 153726 and destGUID == UnitGUID("player") and self:AntiSpam(2, 2) then
specWarnFelSpark:Show()
specWarnFelSpark:Play("watchfeet")
end
end
mod.SPELL_ABSORBED = mod.SPELL_PERIODIC_DAMAGE
function mod:SPELL_SUMMON(args)
if args.spellId == 164081 then
specWarnSummonFelguard:Show()
specWarnSummonFelguard:Play("bigmob")
end
end
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
if spellId == 153500 then
warnFelPool:Show()
end
end