Files
coa-dbm/DBM-Naxx/MilitaryQuarter/Gothik.lua
T
Szyler dc8afd6584 5.19b (#4)
Co-authored-by: Szyler <Szyler@Szyler.com>
2024-03-03 11:23:13 -07:00

87 lines
3.1 KiB
Lua

local mod = DBM:NewMod("Gothik", "DBM-Naxx", 4)
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 2248 $"):sub(12, -3))
mod:SetCreatureID(16060)
mod:RegisterCombat("combat")
mod:RegisterEvents(
"SPELL_AURA_APPLIED", --This should allow the addon to process this Event using the scripting from Kel'Thuzad for Harvest Soul.
"SPELL_AURA_APPLIED_DOSE", --This should allow the addon to process this Event using the scripting from Kel'Thuzad for Harvest Soul.
"UNIT_DIED",
"PLAYER_ALIVE",
"UNIT_HEALTH",
"UNIT_DIED",
"CHAT_MSG_MONSTER_YELL"
)
-----ADD DEATHS-----
local warnRiderDown = mod:NewAnnounce("Unrelenting Rider Killed", 2, 36461, nil, "Show a warning when an Unrelenting Rider is killed")
local warnKnightDown = mod:NewAnnounce("Unrelenting Death Knight Killed", 2, 36461, nil, "Show a warning when an Unrelenting Rider is killed")
-----HARVEST SOUL-----
local warnHarvestSoon = mod:NewSoonAnnounce(28679, 2)
local warnHarvest = mod:NewSpellAnnounce(28679, 2)
local timerHarvest = mod:NewNextTimer(15, 28679)
-----COMBAT START----
local timerCombatStart = mod:NewTimer(25, "Combat Starts", 2457, nil, "Show timer for the start of combat")
local warnCombatStartSoon = mod:NewAnnounce("Combat Starts Soon", 2, 2457, nil, "Show pre-warning for the end of the Safety Dance")
local warnCombatStart = mod:NewAnnounce("Combat Starts Now", 2, 2457, nil, "Show warning for the end of the Safety Dance")
-----GOTHIK ARRIVES----
local timerGothik = mod:NewTimer(100, "Gothik Arrives", 46573, nil, "Show timer for the arrival of Gothik")
local warnGothikSoon = mod:NewAnnounce("Gothik Arrives Soon", 2, 46573, nil, "Show pre-warning for the arrival of Gothik")
local warnGothik = mod:NewAnnounce("Gothik Arrives Now", 2, 46573, nil, "Show warning for the arrival of Gothik")
--------MISC--------
local phase = nil
-----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay)
end
function mod:HarvestSoul()
timerHarvest:Start(20)
warnHarvestSoon:Schedule(17)
warnHarvest:Schedule(20)
self:ScheduleMethod(20, "HarvestSoul")
end
function mod:UNIT_DIED(args)
if bit.band(args.destGUID:sub(0, 5), 0x00F) == 3 then
local guid = tonumber(args.destGUID:sub(9, 12), 16)
if guid == 16126 then -- Unrelenting Rider
warnRiderDown:Show()
elseif guid == 16125 then -- Unrelenting Death Knight
warnKnightDown:Show()
end
end
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if (msg == L.yell or msg:find(L.yell)) and phase == nil then
self:ScheduleMethod(100, "HarvestSoul")
phase = 1
-----HARVEST SOUL-----
warnHarvestSoon:Schedule(115)
warnHarvest:Schedule(120)
timerHarvest:Start(120)
-----COMBAT START----
timerCombatStart:Start(25)
warnCombatStartSoon:Schedule(20)
warnCombatStart:Schedule(25)
-----GOTHIK ARRIVES----
timerGothik:Start(100)
warnGothikSoon:Schedule(95)
warnGothik:Schedule(100)
end
end
function mod:UNIT_HEALTH(uId)
if self:GetUnitCreatureId(uId) == 16060 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.11 and phase ==1 then
self:UnscheduleMethod("HarvestSoul")
timerHarvest:Stop()
phase = 2
end
end
function mod:OnCombatEnd()
self:UnscheduleMethod("HarvestSoul")
end