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
10 KiB
261 lines
10 KiB
local mod = DBM:NewMod(2612, "DBM-Raids-WarWithin", 1, 1273)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240712035451")
|
|
mod:SetCreatureID(214506)
|
|
mod:SetEncounterID(2919)
|
|
mod:SetUsedIcons(1, 2, 3, 4, 5, 6, 7, 8)
|
|
mod:SetHotfixNoticeRev(20240614000000)
|
|
--mod:SetMinSyncRevision(20230929000000)
|
|
mod.respawnTime = 29
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 442526 442432 443003 443005 446700",
|
|
-- "SPELL_CAST_SUCCESS",
|
|
"SPELL_AURA_APPLIED 446349 446694 446690 442263 442250 442250 440421",--443274
|
|
-- "SPELL_AURA_APPLIED_DOSE 443274",
|
|
"SPELL_AURA_REMOVED 446349 446694 446690 442263 442250 440421",
|
|
"SPELL_PERIODIC_DAMAGE 442799",
|
|
"SPELL_PERIODIC_MISSED 442799",
|
|
"UNIT_DIED",
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1"
|
|
)
|
|
|
|
--TODO: At this time, i don't see a practical reason to announce players that only got https://www.wowhead.com/beta/spell=442704/poisoned-blood . It's just non dispelable inactionable damage that goes out to players who didn't get black blood (private aura)
|
|
--TODO, ingest code, it seems split between two diff abilities, so probably mid rework. Transfusion might have replaced Violent Discharge (or other way around)
|
|
--TODO, is Catalyze Mutation passive effect of ingest or a hard cast?
|
|
--TODO, figure out how the nature/shadow combo works for tank mechanic. hard to add taunt warnings right now since they might be bad advice, so for now only warning for casts
|
|
--https://www.wowhead.com/beta/spell=443021/volatile-concoction and https://www.wowhead.com/beta/spell=441368/volatile-concoction used too?
|
|
--TODO, nameplate timer for https://www.wowhead.com/beta/spell=438847/web-blast ?
|
|
--TODO, add https://www.wowhead.com/beta/spell=458212/necrotic-wound stacks?
|
|
--TODO, recheck option keys to match BW for weak aura compatability before live
|
|
--[[
|
|
(ability.id = 442526 or ability.id = 442432 or ability.id = 443003 or ability.id = 443005) and type = "begincast"
|
|
or ability.id = 446349 and type = "applydebuff"
|
|
or ability.id = 442432 and type = "removebuff"
|
|
or ability.id = 446700 and type = "begincast"
|
|
--]]
|
|
local warnExperimentalDosage = mod:NewTargetCountAnnounce(442526, 3, nil, nil, 143340)--Shortname "Injection"
|
|
|
|
local specWarnExperimentalDosage = mod:NewSpecialWarningMoveTo(442526, nil, 143340, nil, 1, 2)--Shortname "Injection"
|
|
local specWarnIngestBlackBlood = mod:NewSpecialWarningCount(442432, nil, 325225, nil, 2, 2)--Shortname "Container Breach"
|
|
local specWarnUnstableWeb = mod:NewSpecialWarningMoveAway(446349, nil, 389280, nil, 1, 2)--Shortname "Web"
|
|
local yellUnstableWeb = mod:NewShortYell(446349, 389280)
|
|
local specWarnVolatileConcoction = mod:NewSpecialWarningDefensive(441362, nil, nil, nil, 1, 2)
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(442799, nil, nil, nil, 1, 8)
|
|
|
|
local timerExperimentalDosageCD = mod:NewCDCountTimer(50, 442526, 143340, nil, nil, 3)--Shortname "Injection"
|
|
local timerIngestBlackBloodCD = mod:NewCDCountTimer(170, 442432, 325225, nil, nil, 3)--Shortname "Container Breach"
|
|
local timerUnstableWebCD = mod:NewCDCountTimer(30, 446349, 157317, nil, nil, 3, nil, DBM_COMMON_L.HEROIC_ICON..DBM_COMMON_L.MAGIC_ICON)--Shortname "Webs"
|
|
local timerVolatileConcoctionCD = mod:NewCDCountTimer(20, 441362, DBM_COMMON_L.TANKDEBUFF.." (%s)", "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
|
|
mod:AddSetIconOption("SetIconOnEggBreaker", 442526, false, 0, {1, 2, 3, 4, 5, 6, 7, 8})--Egg Breaker auto assign strat
|
|
--Colossal Spider
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(28996))
|
|
local specWarnPoisonBurst = mod:NewSpecialWarningInterrupt(446700, "HasInterrupt", nil, nil, 1, 2)
|
|
|
|
local timerPoisonBurstCD = mod:NewCDNPTimer(16.7, 446700, nil, nil, nil, 4)--16.7-23.4
|
|
|
|
mod:AddNamePlateOption("NPAuraOnNecrotic", 446694, true)
|
|
--Voracious Worm
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(28999))
|
|
|
|
mod:AddNamePlateOption("NPAuraOnRavenous", 446690, true)
|
|
--Blood Parasite
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(29003))
|
|
local specWarnFixate = mod:NewSpecialWarningYou(442250, nil, nil, nil, 1, 2)
|
|
|
|
mod:AddNamePlateOption("NPAuraOnAccelerated", 442263, true)
|
|
mod:AddNamePlateOption("NPFixate", 442250, true)
|
|
|
|
--mod:AddInfoFrameOption(407919, true)
|
|
--mod:AddPrivateAuraSoundOption(426010, true, 425885, 4)
|
|
|
|
mod.vb.dosageCount = 0
|
|
mod.vb.ingestCount = 0
|
|
mod.vb.dosageIcon = 0
|
|
mod.vb.webCount = 0
|
|
mod.vb.tankCount = 0
|
|
local eggBreak = DBM:GetSpellName(177853)
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self.vb.dosageCount = 0
|
|
self.vb.ingestCount = 0
|
|
self.vb.webCount = 0
|
|
self.vb.tankCount = 0
|
|
timerVolatileConcoctionCD:Start(1.9, 1)
|
|
timerIngestBlackBloodCD:Start(17, 1)--19 now?
|
|
-- timerExperimentalDosageCD:Start(33, 1)--Started by Injest black Blood
|
|
if self:IsHard() then
|
|
timerUnstableWebCD:Start(15, 1)
|
|
end
|
|
if self.Options.NPAuraOnNecrotic or self.Options.NPAuraOnRavenous or self.Options.NPAuraOnAccelerated or self.Options.NPFixate then
|
|
DBM:FireEvent("BossMod_EnableHostileNameplates")
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
if self.Options.NPAuraOnNecrotic or self.Options.NPAuraOnRavenous or self.Options.NPAuraOnAccelerated or self.Options.NPFixate then
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 442526 then
|
|
self.vb.dosageIcon = 0
|
|
self.vb.dosageCount = self.vb.dosageCount + 1
|
|
timerExperimentalDosageCD:Start(nil, self.vb.dosageCount+1)--50
|
|
elseif spellId == 442432 and self:AntiSpam(5, 1) then
|
|
self.vb.ingestCount = self.vb.ingestCount + 1
|
|
specWarnIngestBlackBlood:Show(self.vb.ingestCount)
|
|
specWarnIngestBlackBlood:Play("specialsoon")
|
|
timerIngestBlackBloodCD:Start(nil, self.vb.ingestCount+1)
|
|
timerUnstableWebCD:Stop()
|
|
timerVolatileConcoctionCD:Stop()
|
|
timerExperimentalDosageCD:Stop()
|
|
--Timers that restart here
|
|
timerExperimentalDosageCD:Start(16, self.vb.dosageCount+1)
|
|
timerVolatileConcoctionCD:Start(18, self.vb.tankCount+1)
|
|
if self:IsHard() then
|
|
timerUnstableWebCD:Start(31, self.vb.webCount+1)
|
|
end
|
|
-- elseif spellId == 446349 then
|
|
-- self.vb.webCount = self.vb.webCount + 1
|
|
-- timerUnstableWebCD:Start()
|
|
elseif spellId == 443003 then--Nature (confirmed ID)
|
|
self.vb.tankCount = self.vb.tankCount + 1
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
specWarnVolatileConcoction:Show()
|
|
specWarnVolatileConcoction:Play("defensive")
|
|
end
|
|
timerVolatileConcoctionCD:Start(nil, self.vb.tankCount+1)--20
|
|
elseif spellId == 443005 then--Shadow (unconfirmed it's even used)
|
|
self.vb.tankCount = self.vb.tankCount + 1
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
specWarnVolatileConcoction:Show()
|
|
specWarnVolatileConcoction:Play("defensive")
|
|
end
|
|
timerVolatileConcoctionCD:Start(nil, self.vb.tankCount+1)--20
|
|
elseif spellId == 446700 then
|
|
if not self:IsMythic() then--On mythic, they're basically change cast after spell lockout
|
|
timerPoisonBurstCD:Start(16.7, args.sourceGUID)
|
|
end
|
|
if self:CheckInterruptFilter(args.sourceGUID, nil, true) then
|
|
specWarnPoisonBurst:Show(args.sourceName)
|
|
specWarnPoisonBurst:Play("kickcast")
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 442430 and self:AntiSpam(5, 1) then
|
|
self.vb.ingestCount = self.vb.ingestCount + 1
|
|
specWarnIngestBlackBlood:Show()
|
|
specWarnIngestBlackBlood:Play("specialsoon")
|
|
timerIngestBlackBloodCD:Start()
|
|
end
|
|
end
|
|
--]]
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 446349 then
|
|
if args:IsPlayer() then
|
|
specWarnUnstableWeb:Show()
|
|
specWarnUnstableWeb:Play("runout")
|
|
yellUnstableWeb:Yell()
|
|
end
|
|
elseif spellId == 446694 then
|
|
if self.Options.NPAuraOnNecrotic then
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId)
|
|
end
|
|
elseif spellId == 446690 then
|
|
if self.Options.NPAuraOnRavenous then
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId)
|
|
end
|
|
elseif spellId == 442263 then
|
|
if self.Options.NPAuraOnAccelerated then
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId)
|
|
end
|
|
elseif spellId == 442250 then
|
|
if args:IsPlayer() then
|
|
if self:AntiSpam(3, 2) then
|
|
specWarnFixate:Show()
|
|
specWarnFixate:Play("targetyou")
|
|
end
|
|
if self.Options.NPFixate then
|
|
DBM.Nameplate:Show(true, args.sourceGUID, spellId)
|
|
end
|
|
end
|
|
elseif spellId == 440421 then
|
|
self.vb.dosageIcon = self.vb.dosageIcon + 1
|
|
warnExperimentalDosage:CombinedShow(0.5, self.vb.dosageCount+1, args.destName)
|
|
if args:IsPlayer() then
|
|
specWarnExperimentalDosage:Show(eggBreak)
|
|
specWarnExperimentalDosage:Play("movetoegg")
|
|
end
|
|
if self.Options.SetIconOnEggBreaker then
|
|
self:SetIcon(args.destName, self.vb.dosageIcon)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 446694 then
|
|
if self.Options.NPAuraOnNecrotic then
|
|
DBM.Nameplate:Hide(true, args.destGUID, spellId)
|
|
end
|
|
elseif spellId == 446690 then
|
|
if self.Options.NPAuraOnRavenous then
|
|
DBM.Nameplate:Hide(true, args.destGUID, spellId)
|
|
end
|
|
elseif spellId == 442263 then
|
|
if self.Options.NPAuraOnAccelerated then
|
|
DBM.Nameplate:Hide(true, args.destGUID, spellId)
|
|
end
|
|
elseif spellId == 442250 then
|
|
if args:IsPlayer() then
|
|
if self.Options.NPFixate then
|
|
DBM.Nameplate:Hide(true, args.sourceGUID, spellId)
|
|
end
|
|
end
|
|
elseif spellId == 440421 then
|
|
if self.Options.SetIconOnEggBreaker then
|
|
self:SetIcon(args.destName, 0)
|
|
end
|
|
-- elseif spellId == 446349 then
|
|
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
if spellId == 442799 and destGUID == UnitGUID("player") and self:AntiSpam(3, 3) then
|
|
specWarnGTFO:Show(spellName)
|
|
specWarnGTFO:Play("watchfeet")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 219045 then--Colossal Spider
|
|
timerPoisonBurstCD:Stop(args.destGUID)
|
|
--elseif cid == 219046 then--Voracious WOrm
|
|
|
|
--elseif cid == 220626 then--Blood Parasite
|
|
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if spellId == 446344 then--Unstable Web
|
|
self.vb.webCount = self.vb.webCount + 1
|
|
timerUnstableWebCD:Start(nil, self.vb.webCount+1)
|
|
end
|
|
end
|
|
|