Files
coa-dbm/DBM-Sunwell/Kalecgos.lua
T
Szyler 82a9ac0937 Update to 5.21 Sunwell (#6)
* 5.20

* Update to 5.21

---------

Co-authored-by: Szyler <Szyler@Szyler.com>
2024-09-30 20:09:41 -07:00

159 lines
5.2 KiB
Lua

local mod = DBM:NewMod("Kalecgos", "DBM-Sunwell")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 5021 $"):sub(12, -3))
mod:SetCreatureID(24850)
mod:RegisterCombat("combat")
mod:RegisterEvents(
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS",
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"UNIT_DIED"
)
local warnPortal = mod:NewAnnounce("WarnPortal", 4, 46021)
local specWarnBuffet = mod:NewSpecialWarningStack(2145512, nil, 10) -- 2145512, 2145513 SPELL_AURA_APPLIED
local timerNextBuffet = mod:NewNextTimer(8, 2145512) -- 2145512, 2145513 SPELL_AURA_APPLIED
local timerBreathCast = mod:NewCastTimer(2, 2145511) -- 2145509, 2145510, 2145511 SPELL_CAST_START
local timerNextBreath = mod:NewNextTimer(20, 2145511) -- 2145509, 2145510, 2145511 SPELL_CAST_START
local timerSpectralBlast = mod:NewCastTimer(4, 2145504) -- 2145503, 2145504 SPELL_CAST_START
local timerNextSpectralBlast = mod:NewNextTimer(25, 2145504) -- 2145503, 2145504 SPELL_CAST_START
local timerTargetSpectralBlast = mod:NewTargetTimer(4, 2145504) -- 2145503, 2145504 SPELL_CAST_START
local warnSpectralBlastYOU = mod:NewSpecialWarningYou(2145504, 4) -- 2145503, 2145504 SPELL_CAST_START
local timerNextTailSweep = mod:NewNextTimer(30, 2145506) -- 2145506 Spell_cast_success
local warnDescentIntoMadness = mod:NewSpecialWarningStack(2145501, nil, 5) -- 22145501 SPELL_AURA_APPLIED
local warnCastMindWipe = mod:NewSpellAnnounce(2145524, 2) -- 2145524 SPELL_CAST_START
local warnStackMindWipe = mod:NewSpecialWarningStack(2145524, nil, 4) -- 2145524 SPELL_CAST_START
local timerCastMindWipe = mod:NewCastTimer(2, 2145524) -- 2145524 SPELL_CAST_START
local timerNextMindWipe = mod:NewNextTimer(25, 2145524) -- 2145524 SPELL_CAST_START
local warnCorruptorsTouch = mod:NewSpellAnnounce(2145523, 2) -- 2145523 SPELL_AURA_APPLIED
local timerNextCorruptorsTouch = mod:NewNextTimer(20, 2145523) -- 2145523 SPELL_AURA_APPLIED
local berserkTimer = mod:NewBerserkTimer(600)
mod:AddBoolOption("HealthFrame", true)
mod:AddBoolOption("RangeFrame", true)
mod:AddBoolOption("ShowFrame", true)
-- mod:AddBoolOption("FrameLocked", false)
-- mod:AddBoolOption("FrameClassColor", true, nil, function()
-- mod:UpdateColors()
-- end)
-- mod:AddBoolOption("FrameUpwards", false, nil, function()
-- mod:ChangeFrameOrientation()
-- end)
-- mod:AddEditboxOption("FramePoint", "CENTER")
-- mod:AddEditboxOption("FrameX", 150)
-- mod:AddEditboxOption("FrameY", -50)
local portCount = 1
function mod:TargetSpectralBlast()
local target = nil
target = mod:GetBossTarget(24850)
if target == UnitName("player") then
warnSpectralBlastYOU:Show()
end
timerTargetSpectralBlast:Start(target)
end
function mod:OnCombatStart(delay)
portCount = 1
timerNextSpectralBlast:Start(8-delay)
timerNextBuffet:Start(10-delay)
timerNextBreath:Start(15-delay)
timerNextTailSweep:Start(21-delay)
berserkTimer:Start(-delay)
-- if self.Options.ShowFrame then
-- self:CreateFrame()
-- end
if self.Options.RangeFrame then
DBM.RangeCheck:Show()
end
if self.Options.HealthFrame then
DBM.BossHealth:Clear()
DBM.BossHealth:AddBoss(24850, L.name)
DBM.BossHealth:AddBoss(24892, L.Demon)
end
end
function mod:OnCombatEnd()
-- self:DestroyFrame()
DBM.RangeCheck:Hide()
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2145512, 2145513) and args.amount and args.amount >= 3 then
if args.destName == UnitName("Player") then
specWarnBuffet:Show(args.amount or 1)
end
timerNextBuffet:Start()
elseif args:IsSpellID(2145501, 2145502) and args.amount and args.amount >= 10 and args.amount % 5 == 0 then
warnDescentIntoMadness:Show(args.amount or 1)
elseif args:IsSpellID(2145524) then
if args.destName == UnitName("Player") then
warnStackMindWipe:Show(args.amount or 1)
end
warnStackMindWipe:Show(args.destName)
elseif args:IsSpellID(2145523) then
warnCorruptorsTouch:Show()
end
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2145509, 2145510, 2145511) then
timerBreathCast:Start()
timerNextBreath:Start()
elseif args:IsSpellID(2145503, 2145504) then
timerSpectralBlast:Start()
timerNextSpectralBlast:Start()
self:ScheduleMethod(0.2, "TargetSpectralBlast")
elseif args:IsSpellID(2145524) then
warnCastMindWipe:Show()
timerCastMindWipe:Start()
timerNextMindWipe:Start()
elseif args:IsSpellID(2145523) then
timerNextCorruptorsTouch:Start()
end
end
function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(2145506) then
timerNextTailSweep:Start()
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:UNIT_DIED(args)
if self:GetCIDFromGUID(args.destGUID) == 24892 then
DBM:EndCombat(self)
end
-- if bit.band(args.destFlags, COMBATLOG_OBJECT_TYPE_PLAYER) ~= 0 then
-- local grp
-- if GetNumRaidMembers() > 0 then
-- for i = 1, GetNumRaidMembers() do
-- local name, _, subgroup = GetRaidRosterInfo(i)
-- if name == args.destName then
-- grp = subgroup
-- break
-- end
-- end
-- else
-- grp = 0
-- end
-- self:RemoveEntry(("%s (%d)"):format(args.destName, grp or 0))
-- end
end