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.
171 lines
5.8 KiB
171 lines
5.8 KiB
|
3 years ago
|
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
|