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.
145 lines
5.1 KiB
145 lines
5.1 KiB
local mod = DBM:NewMod(1878, "DBM-Party-Legion", 12, 900)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20220116042005")
|
|
mod:SetCreatureID(120793)
|
|
mod:SetEncounterID(2039)
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 233155 233206 234817 233963",
|
|
"SPELL_AURA_REMOVED 233206",
|
|
"UNIT_AURA_UNFILTERED",
|
|
"UNIT_SPELLCAST_SUCCEEDED"--All available unitIDs, no bossN for shadows
|
|
)
|
|
|
|
--TODO: Can tank dodge swarm once cast starts?
|
|
--TODO, shadowfade ending and initial timers post shadow phase
|
|
--TODO, verify if more debuff spellids for Demonic Upheavel than one. determine if best place to do timer
|
|
--TODO, shadow of mephistro spawn warnings, probably 234034
|
|
--TODO, phases for mephisto
|
|
--TODO, announce who grabs shield on mephisto
|
|
--TODO, announce circles spawning on ground (watch step) on mephisto
|
|
local warnDarkSolitude = mod:NewSpellAnnounce(234817, 2)--Can't target scan so general announce
|
|
local warnShadowFade = mod:NewSpellAnnounce(233206, 2)
|
|
local warnShadowFadeEnded = mod:NewEndAnnounce(233206, 2)
|
|
local warnDemonicUpheaval = mod:NewTargetAnnounce(233963, 3)
|
|
local warnShadowAdd = mod:NewSpellAnnounce("ej14965", 2, 233206)
|
|
|
|
local specWarnCarrionSwarm = mod:NewSpecialWarningSpell(233155, "Tank", nil, nil, 1, 2)
|
|
local specWarnDemonicUpheaval = mod:NewSpecialWarningMoveAway(233963, nil, nil, nil, 1, 2)
|
|
local yellDemonicUpheaval = mod:NewYell(233963)
|
|
|
|
local timerDarkSolitudeCD = mod:NewCDTimer(8.5, 234817, nil, nil, nil, 3)
|
|
local timerCarrionSwarmCD = mod:NewCDTimer(18, 233155, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
local timerDemonicUpheavalCD = mod:NewCDTimer(32, 233963, nil, nil, nil, 3)--32-35
|
|
local timerShadowFadeCD = mod:NewCDTimer(40, 233206, nil, nil, nil, 6)
|
|
|
|
mod:AddRangeFrameOption(8, 234817)--5 yards probably too small, next lowest range on crap api is 8
|
|
mod:AddInfoFrameOption(234217, true)
|
|
|
|
local demonicUpheaval, darkSolitude = DBM:GetSpellInfo(233963), DBM:GetSpellInfo(234217)
|
|
local demonicUpheavalTable = {}
|
|
local addsTable = {}
|
|
|
|
function mod:OnCombatStart(delay)
|
|
table.wipe(addsTable)
|
|
timerDemonicUpheavalCD:Start(3.2-delay)--Cast Start
|
|
timerDarkSolitudeCD:Start(8.1-delay)
|
|
timerCarrionSwarmCD:Start(15-delay)
|
|
timerShadowFadeCD:Start(40-delay)--Cast Start
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Show(8)
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Hide()
|
|
end
|
|
if self.Options.InfoFrame then
|
|
DBM.InfoFrame:Hide()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 233155 then
|
|
specWarnCarrionSwarm:Show()
|
|
specWarnCarrionSwarm:Play("shockwave")
|
|
timerCarrionSwarmCD:Start()
|
|
elseif spellId == 233206 then--Shadow Fade
|
|
warnShadowFade:Show()
|
|
timerCarrionSwarmCD:Stop()
|
|
timerDarkSolitudeCD:Stop()
|
|
timerDemonicUpheavalCD:Stop()
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Hide()
|
|
end
|
|
elseif spellId == 234817 then
|
|
warnDarkSolitude:Show()
|
|
timerDarkSolitudeCD:Start()
|
|
if self.Options.InfoFrame then
|
|
DBM.InfoFrame:SetHeader(darkSolitude)
|
|
DBM.InfoFrame:Show(2, "enemypower", 2, ALTERNATE_POWER_INDEX)
|
|
end
|
|
elseif spellId == 233963 then
|
|
timerDemonicUpheavalCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 233206 then--Shadow Fade
|
|
warnShadowFadeEnded:Show()
|
|
timerDemonicUpheavalCD:Start(3)--3 for cast start 6 for cast finish, decide which one want to use still
|
|
timerDarkSolitudeCD:Start(7.5)
|
|
timerCarrionSwarmCD:Start(15)
|
|
--timerShadowFadeCD:Start(40)
|
|
if self.Options.InfoFrame then
|
|
DBM.InfoFrame:Hide()
|
|
end
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Show(8)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_AURA_UNFILTERED(uId)
|
|
local hasDebuff = DBM:UnitDebuff(uId, demonicUpheaval)
|
|
local name = DBM:GetUnitFullName(uId)
|
|
if not hasDebuff and demonicUpheavalTable[name] then
|
|
demonicUpheavalTable[name] = nil
|
|
elseif hasDebuff and not demonicUpheavalTable[name] then
|
|
demonicUpheavalTable[name] = true
|
|
warnDemonicUpheaval:CombinedShow(0.5, name)--Multiple targets in mythic
|
|
if UnitIsUnit(uId, "player") then
|
|
specWarnDemonicUpheaval:Show()
|
|
specWarnDemonicUpheaval:Play("runout")
|
|
yellDemonicUpheaval:Yell()
|
|
end
|
|
end
|
|
end
|
|
|
|
--TODO, syncing maybe do to size and spread in room, not all nameplates will be caught by one person
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
--"<51.81 19:21:30> [UNIT_SPELLCAST_SUCCEEDED] Unknown(??) [[nameplate1:Shadow of Mephistroth Cosmetic::3-3020-1677-21626-234034-00025D92FA:234034]]", -- [308]
|
|
if spellId == 234034 then--Only will trigger if nameplate is in range
|
|
local guid = UnitGUID(uId)
|
|
if not addsTable[guid] then
|
|
addsTable[guid] = true
|
|
warnShadowAdd:Show()
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
|
|
if spellId == 192800 and destGUID == UnitGUID("player") and self:AntiSpam(2.5, 1) then
|
|
specWarnGas:Show()
|
|
specWarnGas:Play("runaway")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
--]]
|
|
|