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.

167 lines
6.5 KiB

local mod = DBM:NewMod(133, "DBM-Party-Cataclysm", 3, 71)
local L = mod:GetLocalizedStrings()
if not mod:IsCata() then
mod.statTypes = "normal,heroic,challenge,timewalker"
mod.upgradedMPlus = true
else
mod.statTypes = "normal,heroic"
end
mod:SetRevision("20240812045014")
mod:SetCreatureID(40319)
mod:SetEncounterID(1048)
mod:SetHotfixNoticeRev(20240812000000)
--mod:SetMinSyncRevision(20230929000000)
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 90950 448013 456751 450095 448105",
-- "SPELL_SUMMON",
"SPELL_AURA_APPLIED 75328 75317",
"CHAT_MSG_MONSTER_YELL",
"CHAT_MSG_RAID_BOSS_EMOTE",
"UNIT_AURA_UNFILTERED"
)
--shredding? Disabled since it seemed utterly useless in my limited testing
--local warnShredding = mod:NewSpellAnnounce(75271, 3)
--TODO, recheck phasing timers and add timers with transcriptor
--[[
(ability.id = 90950 or ability.id = 448013 or ability.id = 456751 or ability.id = 450095 or ability.id = 448105) and type = "begincast"
or ability.id = 75328 and type = "applybuff"
or type = "dungeonencounterstart" or type = "dungeonencounterend"
or (source.type = "NPC" and source.firstSeen = timestamp) or (target.type = "NPC" and target.firstSeen = timestamp)
--]]
local warnFlamingFixate = mod:NewTargetNoFilterAnnounce(82850, 4)
local specWarnAdds = mod:NewSpecialWarningSwitchCount(90949, "Dps", nil, nil, 1, 2)
local specWarnFlamingFixate = mod:NewSpecialWarningRun(82850, nil, nil, nil, 4, 2)
local specWarnDevouring = mod:NewSpecialWarningDodgeCount(DBM:IsPostCata() and 448105 or 90950, nil, nil, nil, 2, 2)
local specWarnSeepingTwilight = mod:NewSpecialWarningGTFO(75317, nil, nil, nil, 2, 8)
local timerAddCD = mod:NewCDCountTimer(20.6, 90949, nil, nil, nil, 1, nil, DBM_COMMON_L.DAMAGE_ICON)--20.6-27. 24 is the average
local timerDevouringCD = mod:NewCDCountTimer(40, DBM:IsPostCata() and 448105 or 90950, nil, nil, nil, 3)
local timerDevouring = mod:NewBuffActiveTimer(5, DBM:IsPostCata() and 448105 or 90950, nil, nil, nil, 3)
--local timerShredding = mod:NewBuffActiveTimer(20, 75271)
--Add TWW unique stuff
local warnTwilightBuffet, timerTwilightBuffetCD, warnCurseofEntropy, timerCurseofEntropyCD
if not mod:IsCata() then
warnTwilightBuffet = mod:NewCountAnnounce(456751, 3)
warnCurseofEntropy = mod:NewCountAnnounce(450095, 3)
timerTwilightBuffetCD = mod:NewCDCountTimer(35, 456751, nil, nil, nil, 2)
timerCurseofEntropyCD = mod:NewCDCountTimer(26, 450095, nil, nil, nil, 3, nil, DBM_COMMON_L.CURSE_ICON)
end
local fixateWarned = {}
local Valiona = DBM:EJ_GetSectionInfo(3369)
mod.vb.addCount = 0
mod.vb.devourCount = 0
mod.vb.buffetCount = 0
mod.vb.curseCount = 0
function mod:OnCombatStart(delay)
self:SetStage(1)
table.wipe(fixateWarned)
self.vb.addCount = 0
self.vb.devourCount = 0
self.vb.buffetCount = 0
self.vb.curseCount = 0
if not self:IsCata() then
timerAddCD:Start(8, 1)--Maybe also true in cata?
timerCurseofEntropyCD:Start(17, 1)
end
end
function mod:SPELL_CAST_START(args)
if args.spellId == 90950 or args.spellId == 448105 then--Cata version, TWW version
self.vb.devourCount = self.vb.devourCount + 1
specWarnDevouring:Show(self.vb.devourCount)
specWarnDevouring:Play("breathsoon")
timerDevouring:Start()
timerDevouringCD:Start(self:IsCata() and 40 or 35, self.vb.devourCount+1)
elseif args.spellId == 448013 then--Invocation of Shadowflame (New add summon spell trigger in TWW)
self.vb.addCount = self.vb.addCount + 1
specWarnAdds:Show(self.vb.addCount)
timerAddCD:Start(self:GetStage(2) and 35 or 26, self.vb.addCount+1)
elseif args.spellId == 456751 then
self.vb.buffetCount = self.vb.buffetCount + 1
warnTwilightBuffet:Show(self.vb.buffetCount)
timerTwilightBuffetCD:Start(nil, self.vb.buffetCount+1)
elseif args.spellId == 450095 then
self.vb.curseCount = self.vb.curseCount + 1
warnCurseofEntropy:Show(self.vb.curseCount)
timerCurseofEntropyCD:Start(self:GetStage(2) and 35 or 26, self.vb.curseCount+1)
end
end
function mod:SPELL_AURA_APPLIED(args)
if args.spellId == 75328 then--Twilight Shift (Valiona running away)
timerDevouringCD:Cancel()
timerDevouring:Cancel()
if not self:IsCata() then
timerTwilightBuffetCD:Stop()
end
elseif args.spellId == 75317 and args:IsPlayer() then
specWarnSeepingTwilight:Show(args.spellName)
specWarnSeepingTwilight:Play("watchfeet")
end
end
--[[
function mod:SPELL_SUMMON(args)
if args.spellId == 75271 then
warnShredding:Show()
timerShredding:Start()
end
end--]]
--"<78.70 00:51:47> [CHAT_MSG_MONSTER_YELL] If they do not kill you, I will do it myself!#Valiona###Drahga Shadowburner##0#0##0#2916#nil#0#f
--"<93.66 00:52:02> [CLEU] SPELL_CAST_START#Creature-0-2085-670-19236-40319-00006A7386#Drahga Shadowburner(0.0%-100.0%)##nil#448013#Invocation of Shadowflame#nil#nil",
--"<101.62 00:52:10> [CLEU] SPELL_CAST_START#Vehicle-0-2085-670-19236-40320-00006A7386#Valiona(87.8%-0.0%)##nil#456751#Twilight Buffet#nil#nil",
--"<103.60 00:52:12> [CLEU] SPELL_CAST_START#Creature-0-2085-670-19236-40319-00006A7386#Drahga Shadowburner(0.0%-100.0%)##nil#450095#Curse of Entropy#nil#nil",
--"<107.30 00:52:16> [CLEU] SPELL_CAST_START#Vehicle-0-2085-670-19236-40320-00006A7386#Valiona(83.1%-0.0%)##nil#90950#Devouring Flames#nil#nil",
function mod:CHAT_MSG_MONSTER_YELL(msg, npc)
if npc == Valiona and self:GetStage(1) then
self:SetStage(2)
timerDevouringCD:Start(29, 1)
if not self:IsCata() then
timerAddCD:Stop()
timerCurseofEntropyCD:Stop()
timerAddCD:Start(14.9, self.vb.addCount+1)--Maybe also restarts in cata?
timerTwilightBuffetCD:Start(22.9, 1)
timerCurseofEntropyCD:Start(24.9, self.vb.curseCount+1)
end
end
end
--Cata version of add spawn
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg:find("spell:75218") then--Add spawning
self.vb.addCount = self.vb.addCount + 1
specWarnAdds:Show(self.vb.addCount)
timerAddCD:Start(nil, self.vb.addCount+1)
end
end
do
--Still not in the combat log in TWW
local flamingFixate = DBM:GetSpellName(82850)
function mod:UNIT_AURA_UNFILTERED(uId)
local isFixate = DBM:UnitDebuff(uId, flamingFixate)
local name = DBM:GetUnitFullName(uId) or "UNKNOWN"
if not isFixate and fixateWarned[name] then
fixateWarned[name] = nil
elseif isFixate and not fixateWarned[name] then
fixateWarned[name] = true
if UnitIsUnit(uId, "player") then
specWarnFlamingFixate:Show()
specWarnFlamingFixate:Play("justrun")
else
warnFlamingFixate:Show(name)
end
end
end
end