5b3b160e21
Co-authored-by: Szyler <Szyler@Szyler.com>
154 lines
4.4 KiB
Lua
154 lines
4.4 KiB
Lua
local mod = DBM:NewMod("Akilzon", "DBM-ZulAman")
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision(("$Revision: 5015 $"):sub(12, -3))
|
|
mod:SetCreatureID(23574)
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEvents(
|
|
"SPELL_AURA_APPLIED",
|
|
"SPELL_CAST_START",
|
|
"UNIT_AURA",
|
|
"UNIT_HEALTH"
|
|
)
|
|
|
|
local warnVortexSoon = mod:NewSoonAnnounce(2135733, 5, 3)
|
|
|
|
local timerNextStorm = mod:NewNextTimer(50, 2135724)
|
|
local timerStorm = mod:NewCastTimer(10, 2135724)
|
|
local nextLightningStrike = mod:NewNextTimer(10, 2135702)
|
|
local timerNextVortex = mod:NewNextTimer(10, 2135733)
|
|
local timerNextRod = mod:NewNextTimer(20, 2135700)
|
|
|
|
local timerNextTurbulentWinds = mod:NewNextTimer(3, 2135710)
|
|
local timerCastTurbulentWinds = mod:NewCastTimer(5, 2135710)
|
|
local specWarnTurbulentWinds = mod:NewSpecialWarningYou(2135710)
|
|
local warnTurbulentWindsTarget = mod:NewTargetAnnounce(2135710, 4)
|
|
local warnStorm = mod:NewTargetAnnounce(2135724, 4)
|
|
local specWarnStorm = mod:NewSpecialWarningSpell(2135724)
|
|
local specWarnRodYou = mod:NewSpecialWarningYou(2135700)
|
|
local specWarnRod = mod:NewSpecialWarningTarget(2135700, false)
|
|
local warnTalon = mod:NewTargetAnnounce(2135747)
|
|
local warnTalonStacks = mod:NewSpecialWarningStack(2135747)
|
|
|
|
local berserkTimer = mod:NewBerserkTimer(600)
|
|
|
|
local eosSpam = 0
|
|
|
|
mod:SetUsedIcons(1)
|
|
mod:AddBoolOption(L.RodYellOpt)
|
|
mod:AddBoolOption("RangeFrame", true)
|
|
mod:AddBoolOption("StormIcon")
|
|
local platform1, platform2, platform3, platform4 = true , true , true , true
|
|
|
|
function mod:LightningStrike()
|
|
self:UnscheduleMethod("LightningStrike")
|
|
nextLightningStrike:Start()
|
|
self:ScheduleMethod(10,"LightningStrike")
|
|
end
|
|
|
|
function mod:TurbulentWinds()
|
|
local target = nil
|
|
target = mod:GetBossTarget(23574)
|
|
if target == UnitName("player") then
|
|
specWarnTurbulentWinds:Show(target)
|
|
SendChatMessage(L.DBM_TURBULENT_WINDS, "YELL")
|
|
else
|
|
warnTurbulentWindsTarget:Show(target)
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
berserkTimer:Start(-delay)
|
|
timerNextStorm:Start(40)
|
|
nextLightningStrike:Start(6.5)
|
|
timerNextRod:Start(13)
|
|
self:ScheduleMethod(6.5,"LightningStrike")
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Show()
|
|
end
|
|
self.vb.phase = 1
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Hide()
|
|
end
|
|
self:UnscheduleMethod("LightningStrike")
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if args:IsSpellID(2135700) then
|
|
timerNextRod:Start()
|
|
specWarnRod:Show(args.destName)
|
|
if args:IsPlayer() then
|
|
specWarnRodYou:Show()
|
|
if self.Options.RodYellOpt and args:IsPlayer() then
|
|
SendChatMessage(L.DBM_ROD_PLAYER, "YELL")
|
|
end
|
|
end
|
|
elseif args:IsSpellID(2135747, 2135748, 2135749, 2135750) then
|
|
warnTalon:Show(args.destName)
|
|
if args.amount and args.amount > 5 then
|
|
warnTalonStacks:Show(args.amount,args.destName)
|
|
end
|
|
elseif args:IsSpellID(2135715) then
|
|
self:UnscheduleMethod("LightningStrike")
|
|
nextLightningStrike:Cancel()
|
|
timerNextRod:Cancel()
|
|
self.vb.phase = 2
|
|
timerNextTurbulentWinds:Start()
|
|
timerNextStorm:Cancel()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
if args:IsSpellID(2135710) then
|
|
timerCastTurbulentWinds:Start()
|
|
self:ScheduleMethod(0.2, "TurbulentWinds")
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_HEALTH(unit)
|
|
if (self.vb.phase == 2) and (mod:GetUnitCreatureId(unit) == 23574) then
|
|
local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100;
|
|
if (hp>60 and hp<=65) and platform1 then
|
|
warnVortexSoon:Show()
|
|
platform1 = false
|
|
timerNextTurbulentWinds:Start(6)
|
|
elseif (hp>50 and hp<=55) and platform2 then
|
|
warnVortexSoon:Show()
|
|
platform2 = false
|
|
timerNextTurbulentWinds:Start(6)
|
|
elseif (hp>40 and hp<=45) and platform3 then
|
|
warnVortexSoon:Show()
|
|
platform3 = false
|
|
timerNextTurbulentWinds:Start(6)
|
|
elseif (hp>30 and hp<=35) and platform4 then
|
|
warnVortexSoon:Show()
|
|
platform4 = false
|
|
timerNextTurbulentWinds:Start(6)
|
|
elseif (hp<=30) then
|
|
self.vb.phase = 3
|
|
timerNextVortex:Start()
|
|
nextLightningStrike:Start(21)
|
|
self:ScheduleMethod(21, "LightningStrike")
|
|
timerNextRod:Start(28)
|
|
timerNextStorm:Start(55)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_AURA(unit)
|
|
local Name = UnitName(unit)
|
|
if (UnitDebuff(unit, "Eye of the storm")) and (GetTime() - eosSpam) > 15 then
|
|
eosSpam = GetTime()
|
|
timerStorm:Start()
|
|
warnStorm:Show(Name)
|
|
specWarnStorm:Show()
|
|
timerNextStorm:Start()
|
|
if Name == UnitName("player") then
|
|
SendChatMessage(L.DBM_EOS_PLAYER, "YELL")
|
|
end
|
|
end
|
|
end |