Files
Andrew6810 39c0ed874e init
2022-10-21 06:50:13 -07:00

106 lines
2.6 KiB
Lua

local mod = DBM:NewMod("Huhuran", "DBM-AQ40", 1)
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 185 $"):sub(12, -3))
mod:SetCreatureID(15509)
mod:RegisterCombat("combat")
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_AURA_REMOVED",
"UNIT_HEALTH",
"PLAYER_ALIVE"
)
local warnSoon = mod:NewAnnounce("Adds Soon", 2, 1002077)
local warnSpawn = mod:NewAnnounce("Adds Spawned", 3, 1002077)
local prewarnSoftEnrage = mod:NewAnnounce("Soft Enrage Soon", 2, 1002304)
local warnSoftEnrage = mod:NewAnnounce("Soft Enrage Now", 3, 1002304)
local timerSpawn = mod:NewTimer(60, "Adds", 1002077)
local warnSting = mod:NewTargetAnnounce(26180, 2)
local warnAcid = mod:NewAnnounce("WarnAcid", 3)
local timerSting = mod:NewBuffActiveTimer(12, 26180)
local timerStingCD = mod:NewCDTimer(20, 26180)
local timerAcid = mod:NewTargetTimer(30, 26050)
local specWarnAcid = mod:NewSpecialWarningStack(26050, nil, 10)
local berserkTimer = mod:NewBerserkTimer(420)
local StingTargets = {}
local check1
local check2
function mod:OnCombatStart(delay)
berserkTimer:Start(-delay)
self:ScheduleMethod(0-delay, "initialSpawn")
table.wipe(StingTargets)
check1 = 0
check2 = 0
end
function mod:Soon()
warnSoon:Show()
end
function mod:Spawn()
warnSpawn:Show()
end
function mod:initialSpawn()
timera = 10
timerSpawn:Start(timera)
self:ScheduleMethod(timera-5,"Soon")
self:ScheduleMethod(timera, "Spawn")
self:ScheduleMethod(timera, "reSpawn")
end
function mod:reSpawn()
timerb = 30
timerSpawn:Start(timerb)
self:ScheduleMethod(timerb-5,"Soon")
self:ScheduleMethod(timerb, "Spawn")
self:ScheduleMethod(timerb, "reSpawn")
end
local function warnStingTargets()
warnSting:Show(table.concat(StingTargets, "<, >"))
timerSting:Start()
table.wipe(StingTargets)
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(26180) then
StingTargets[#StingTargets + 1] = args.destName
self:Unschedule(warnStingTargets)
self:Schedule(0.3, warnStingTargets)
elseif args:IsSpellID(26050) then
warnAcid:Show(args.spellName, args.destName, args.amount or 1)
timerAcid:Start(args.destName)
if args:IsPlayer() and (args.amount or 1) >= 10 then
specWarnAcid:Show()
end
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:SPELL_AURA_REMOVED(args)
if args:IsSpellID(26180) then
timerSting:Cancel()
end
end
function mod:UNIT_HEALTH(args)
huhuranHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100;
if huhuranHealth < 35 and check1 == 0 then
check1 = 1
prewarnSoftEnrage:Show()
elseif skeramHealth < 30 and check2 == 0 then
check2 = 1
warnSoftEnrage:Show()
end
end