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.
124 lines
3.8 KiB
124 lines
3.8 KiB
local mod = DBM:NewMod(1138, "DBM-Party-WoD", 3, 536)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod.statTypes = "normal,heroic,mythic,challenge,timewalker"
|
|
mod.upgradedMPlus = true
|
|
|
|
mod:SetRevision("20221016002954")
|
|
mod:SetCreatureID(77803, 77816)
|
|
mod:SetEncounterID(1715)
|
|
mod:SetBossHPInfoToHighest()
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 162500 162407 161090 162617",
|
|
"SPELL_AURA_APPLIED 163947",
|
|
"UNIT_DIED"
|
|
)
|
|
|
|
local warnVX18B = mod:NewCountAnnounce(162500, 2)--Cast twice, 3rd cast is X2101, then repeats
|
|
|
|
local specWarnX2101AMissile = mod:NewSpecialWarningSpell(162407, nil, nil, nil, 2, 2)--Large AOE damage
|
|
local specWarnMadDash = mod:NewSpecialWarningSpell(161090, nil, nil, nil, 2, 2)--DPS version of this warning
|
|
local specWarnMadDashInterrupt = mod:NewSpecialWarningMoveTo(161090, nil, nil, nil, 3, 1)--It's actually an interrupt warning for OTHER boss, not caster of this spell
|
|
local specWarnSlam = mod:NewSpecialWarningCast(162617, "SpellCaster", nil, nil, 1, 2)
|
|
|
|
local timerVX18BCD = mod:NewCDTimer(33, 162500, nil, nil, nil, 3)
|
|
local timerX2101AMissileCD = mod:NewCDTimer(40, 162407, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON..DBM_COMMON_L.TANK_ICON)
|
|
local timerMadDashCD = mod:NewCDTimer(40, 161090, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
local timerSlamCD = mod:NewCDTimer(15, 162617, nil, "SpellCaster", nil, 5)
|
|
local timerSlam = mod:NewCastTimer(1.5, 162617, nil, "SpellCaster", nil, 5)
|
|
local timerRecovering = mod:NewBuffActiveTimer(6, 163947, nil, nil, nil, 5)
|
|
|
|
local rocketsName = DBM:EJ_GetSectionInfo(9430)
|
|
local borkaID = nil
|
|
mod.vb.VXCast = 0
|
|
mod.vb.SlamCast = 0
|
|
|
|
local function getBorkaID(self)
|
|
for i = 1, 2 do
|
|
local uId = "boss"..i
|
|
if self:GetUnitCreatureId(uId) == 77816 then
|
|
borkaID = uId
|
|
return
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
borkaID = nil
|
|
self.vb.VXCast = 0
|
|
self.vb.SlamCast = 0
|
|
timerSlamCD:Start(9-delay)
|
|
timerX2101AMissileCD:Start(18.5-delay)
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 162500 then
|
|
self.vb.VXCast = self.vb.VXCast + 1
|
|
warnVX18B:Show(self.vb.VXCast)
|
|
--Probably won't actually fix bug but I caused be arsed to figure out how shit actually works
|
|
--when this dungeon stops being relevent in 1 week anyways
|
|
if self:AntiSpam(20, 1) then
|
|
timerVX18BCD:Start()
|
|
end
|
|
elseif spellId == 162407 then
|
|
self.vb.VXCast = 0
|
|
specWarnX2101AMissile:Show()
|
|
specWarnX2101AMissile:Play("aesoon")
|
|
timerX2101AMissileCD:Start()
|
|
elseif spellId == 161090 then
|
|
self.vb.SlamCast = 0
|
|
if not borkaID then
|
|
getBorkaID(self)
|
|
end
|
|
if borkaID and self:IsTanking("player", borkaID, nil, true) then--failsafe 2
|
|
specWarnMadDashInterrupt:Show(rocketsName)
|
|
specWarnMadDashInterrupt:Play("targetyou")--bleh voice choice
|
|
else
|
|
specWarnMadDash:Show()
|
|
specWarnMadDash:Play("farfromline")
|
|
end
|
|
timerMadDashCD:Start()
|
|
elseif spellId == 162617 then
|
|
self.vb.SlamCast = self.vb.SlamCast + 1
|
|
specWarnSlam:Show()
|
|
timerSlam:Start()
|
|
specWarnSlam:Play("stopcast")
|
|
if self.vb.SlamCast == 2 then
|
|
timerSlamCD:Start(30)
|
|
else
|
|
timerSlamCD:Start()
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 163947 then
|
|
local unitid
|
|
for i = 1, 2 do
|
|
if UnitGUID("boss"..i) == args.destGUID then
|
|
unitid = "boss"..i
|
|
end
|
|
end
|
|
if unitid then
|
|
local _, _, _, _, duration, expires, _, _ = DBM:UnitBuff(unitid, args.spellName)
|
|
if expires then
|
|
timerRecovering:Start(expires-GetTime())
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
--Maybe both cancel if either one dies?
|
|
if cid == 77816 then
|
|
timerMadDashCD:Cancel()
|
|
elseif cid == 77803 then
|
|
timerX2101AMissileCD:Cancel()
|
|
end
|
|
end
|
|
|