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.

110 lines
3.9 KiB

local mod = DBM:NewMod(341, "DBM-Party-Cataclysm", 14, 186)
local L = mod:GetLocalizedStrings()
mod.statTypes = "heroic,timewalker"
mod:SetRevision("20240426175442")
mod:SetCreatureID(54938)
mod:SetEncounterID(1339)
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_SUCCESS 103151 103565 103677 103680 103681 103363 103767 103782 103783 103784",
"SPELL_AURA_APPLIED 103754",
"SPELL_DAMAGE 103653 103775",
"SPELL_MISSED 103653 103775",
"UNIT_HEALTH boss1"
)
mod:RegisterEvents(
"CHAT_MSG_MONSTER_SAY"
)
local warnRighteousShear = mod:NewTargetNoFilterAnnounce(103151, 2, nil, "Healer", 2)
local warnPurifyingLight = mod:NewSpellAnnounce(103565, 3)
local prewarnPhase2 = mod:NewPrePhaseAnnounce(2, 2)
local warnTwilightShear = mod:NewTargetNoFilterAnnounce(103363, 2, nil, "Healer", 2)
local warnCorruptingTwilight = mod:NewSpellAnnounce(103767, 3)
local specwarnPurified = mod:NewSpecialWarningMove(103653, nil, nil, nil, 1, 8)
local specwarnWaveVirtue = mod:NewSpecialWarningMoveTo(103678, nil, nil, nil, 2)
local specwarnTwilight = mod:NewSpecialWarningMove(103775, nil, nil, nil, 1, 8)
local specwarnWaveTwilight = mod:NewSpecialWarningMoveTo(103780, nil, nil, nil, 2, 2)
local timerCombatStart = mod:NewCombatTimer(51.5)
local timerWaveVirtueCD = mod:NewNextTimer(30, 103678, nil, nil, nil, 2)--Will he do it more then once? if you are terrible and take > 30 sec to push him?
local timerWaveTwilightCD = mod:NewNextTimer(30, 103780, nil, nil, nil, 2)--^
mod.vb.warnedP2 = false
local waterShellName = DBM:GetSpellName(103744)
function mod:OnCombatStart(delay)
self.vb.warnedP2 = false
timerWaveVirtueCD:Start(-delay)
end
function mod:SPELL_CAST_SUCCESS(args)
if args.spellId == 103151 then
warnRighteousShear:Show(args.destName)
elseif args.spellId == 103565 then
warnPurifyingLight:Show()
elseif args:IsSpellID(103677, 103680, 103681) then--Spellids are locationsal. So figure out which one is switch could announce wave direction?
specwarnWaveVirtue:Show(waterShellName)
specwarnWaveVirtue:Play("findshelter")
elseif args.spellId == 103363 then
warnTwilightShear:Show(args.destName)
elseif args.spellId == 103767 then
warnCorruptingTwilight:Show()
elseif args:IsSpellID(103782, 103783, 103784) then--Same as virtue
specwarnWaveTwilight:Show(waterShellName)
specwarnWaveTwilight:Play("findshelter")
end
end
function mod:SPELL_AURA_APPLIED(args)
if args.spellId == 103754 then--Phase change from holy to shadow.
timerWaveVirtueCD:Cancel()--Cancel this timer if he was pushed before he got to do it, which is entirely possible.
timerWaveTwilightCD:Start(35)--Is this cast more then once?
end
end
function mod:SPELL_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
if spellId == 103653 and destGUID == UnitGUID("player") and self:AntiSpam(5) then
specwarnPurified:Show()
specwarnPurified:Play("watchfeet")
elseif spellId == 103775 and destGUID == UnitGUID("player") and self:AntiSpam(5) then
specwarnTwilight:Show()
specwarnTwilight:Play("watchfeet")
end
end
mod.SPELL_MISSED = mod.SPELL_DAMAGE
function mod:UNIT_HEALTH(uId)
if self:GetUnitCreatureId(uId) == 54938 then
local h = UnitHealth(uId) / UnitHealthMax(uId) * 100
if h > 80 and self.vb.warnedP2 then
self.vb.warnedP2 = false
elseif not self.vb.warnedP2 and h > 63 and h < 67 then
self.vb.warnedP2 = true
prewarnPhase2:Show()
end
end
end
--: 14:05:48.764
-- Timers from 2 logs so they most likely are incorrect :) (?? = unknown, didnt happen)
-- "Holy" timers: X secs after combat start
-- 1st Purifying Light after [4 or 5] secs
-- "Shadow" timers: X secs after SPELL_AURA_APPLIED event for Twilight Epiphany
-- 1st Twilight Shear after [15 or 12] secs
-- 1st Corrupting Twilight after [17 or 17] secs
function mod:CHAT_MSG_MONSTER_SAY(msg)
if msg == L.Event or msg:find(L.Event) then
timerCombatStart:Start()
end
end