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.
249 lines
7.4 KiB
249 lines
7.4 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Harjatan the Bludger", 1676, 1856)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(116407)
|
|
mod.engageId = 2036
|
|
mod.respawnTime = 30
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local rageCounter = 0
|
|
local roarCounter = 0
|
|
local skipDrawIn = true
|
|
local nextDrawIn = 0
|
|
local drawInCheck = nil
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.custom_on_fixate_plates = "Fixate icon on Enemy Nameplate"
|
|
L.custom_on_fixate_plates_desc = "Show an icon on the target nameplate that is fixating on you.\nRequires the use of Enemy Nameplates. This feature is currently only supported by KuiNameplates."
|
|
L.custom_on_fixate_plates_icon = 234128
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
{231998, "TANK"}, -- Jagged Abrasion
|
|
231854, -- Unchecked Rage
|
|
232192, -- Commanding Roar
|
|
232061, -- Draw In
|
|
233429, -- Frigid Blows
|
|
232174, -- Frosty Discharge
|
|
{231729, "SAY", "FLASH"}, -- Aqueous Burst
|
|
231768, -- Drenching Waters
|
|
{234128, "SAY", "FLASH"}, -- Driven Assault
|
|
"custom_on_fixate_plates",
|
|
240319, -- Hatching
|
|
{241600, "SAY", "FLASH"}, -- Sickly Fixate
|
|
"berserk",
|
|
},{
|
|
[231998] = "general",
|
|
[231729] = -14555,
|
|
[234128] = -14722,
|
|
[240319] = "mythic",
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
-- General
|
|
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1", "boss2", "boss3", "boss4", "boss5")
|
|
self:RegisterEvent("RAID_BOSS_WHISPER")
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "GroundEffectDamage", 231768) -- Drenching Waters
|
|
self:Log("SPELL_PERIODIC_DAMAGE", "GroundEffectDamage", 231768)
|
|
self:Log("SPELL_PERIODIC_MISSED", "GroundEffectDamage", 231768)
|
|
|
|
-- Boss
|
|
self:Log("SPELL_AURA_APPLIED", "JaggedAbrasion", 231998)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "JaggedAbrasion", 231998)
|
|
self:Log("SPELL_CAST_START", "UncheckedRage", 231854)
|
|
self:Log("SPELL_AURA_APPLIED", "DrawIn", 232061)
|
|
self:Log("SPELL_AURA_REMOVED_DOSE", "FrigidBlows", 233429)
|
|
self:Log("SPELL_CAST_START", "FrostyDischarge", 232174)
|
|
|
|
-- Adds
|
|
self:Log("SPELL_AURA_APPLIED", "AqueousBurst", 231729)
|
|
self:Log("SPELL_AURA_REMOVED", "AqueousBurstRemoved", 231729)
|
|
self:Log("SPELL_AURA_APPLIED", "DrivenAssault", 234016)
|
|
self:Log("SPELL_AURA_REMOVED", "DrivenAssaultRemoved", 234016)
|
|
|
|
-- Mythic
|
|
self:Log("SPELL_AURA_APPLIED", "SicklyFixate", 241600)
|
|
self:Log("SPELL_AURA_REMOVED", "SicklyFixateRemoved", 241600)
|
|
|
|
if self:GetOption("custom_on_fixate_plates") then
|
|
self:ShowPlates()
|
|
end
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
roarCounter = 1
|
|
rageCounter = 1
|
|
skipDrawIn = true -- True until you get Drenching Waters on the floor
|
|
nextDrawIn = GetTime() + 58
|
|
|
|
self:CDBar(232192, 17.5) -- Commanding Roar
|
|
self:CDBar(231854, 20.7) -- Unchecked Rage
|
|
self:CDBar(232061, 58) -- Draw In
|
|
self:ScheduleTimer("drawInCheck", 58, self)
|
|
if self:Mythic() then
|
|
self:Bar(240319, 30) -- Hatching
|
|
end
|
|
if not self:LFR() then
|
|
self:Berserk(self:Mythic() and 360 or 480)
|
|
end
|
|
end
|
|
|
|
function mod:OnBossDisable()
|
|
if self:GetOption("custom_on_fixate_plates") then
|
|
self:HidePlates()
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
function mod:drawInCheck(self)
|
|
if skipDrawIn then
|
|
self:MessageOld(232061, "orange", "alarm", CL.interrupted:format(self:SpellName(232061))) -- Draw In Interrupted
|
|
nextDrawIn = GetTime() + 58
|
|
self:CDBar(232061, 58) -- Draw In
|
|
self:ScheduleTimer("drawInCheck", 58, self)
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
|
|
if spellId == 232192 then -- Commanding Roar
|
|
self:MessageOld(spellId, "red", "alert")
|
|
roarCounter = roarCounter + 1
|
|
if (nextDrawIn > GetTime() + 32.8) or skipDrawIn then
|
|
self:Bar(spellId, 32.8)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:RAID_BOSS_WHISPER(event, msg)
|
|
if msg:find("240319", nil, true) then -- Hatching
|
|
self:MessageOld(240319, "red", "warning")
|
|
self:CastBar(240319, 22)
|
|
if (nextDrawIn > GetTime() + 40) or skipDrawIn then
|
|
self:Bar(240319, 40)
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:GroundEffectDamage(args)
|
|
skipDrawIn = false -- Drenching Waters confirmed, no more skipping
|
|
local t = GetTime()
|
|
if self:Me(args.destGUID) and t-prev > 1.5 then
|
|
prev = t
|
|
self:MessageOld(args.spellId, "blue", "alert", CL.underyou:format(args.spellName))
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:JaggedAbrasion(args)
|
|
local amount = args.amount or 1
|
|
self:StackMessage(args.spellId, args.destName, amount, "orange", amount > 4 and "warning") -- Swap on 4~5
|
|
end
|
|
|
|
function mod:UncheckedRage(args)
|
|
self:MessageOld(args.spellId, "orange", "warning")
|
|
rageCounter = rageCounter + 1
|
|
if (nextDrawIn > GetTime() + 20.5) or skipDrawIn then
|
|
self:Bar(args.spellId, 20.5)
|
|
end
|
|
end
|
|
|
|
function mod:DrawIn(args)
|
|
self:MessageOld(args.spellId, "red", "alert", CL.casting:format(args.spellName))
|
|
self:CastBar(args.spellId, 10)
|
|
end
|
|
|
|
function mod:FrigidBlows(args)
|
|
local amount = args.amount or 1
|
|
if amount < 5 or amount % 5 == 0 then -- Every 5 stacks or when below 5.
|
|
self:StackMessage(args.spellId, args.destName, amount, "orange", amount < 4 and "alarm") -- Add sound on last 3 stacks as pre-warning that the phase is ending
|
|
end
|
|
end
|
|
|
|
function mod:FrostyDischarge(args)
|
|
roarCounter = 1
|
|
rageCounter = 1
|
|
self:MessageOld(args.spellId, "orange", "warning", args.spellName)
|
|
self:CDBar(232192, 17) -- Commanding Roar
|
|
self:CDBar(231854, 21.4) -- Unchecked Rage
|
|
if self:Mythic() then
|
|
self:Bar(240319, 32) -- Hatching
|
|
end
|
|
nextDrawIn = GetTime() + 59.1
|
|
self:CDBar(232061, 59.1) -- Draw In
|
|
end
|
|
|
|
do
|
|
local playerList = mod:NewTargetList()
|
|
function mod:AqueousBurst(args)
|
|
if self:Me(args.destGUID) then
|
|
self:Flash(args.spellId)
|
|
self:Say(args.spellId)
|
|
end
|
|
|
|
playerList[#playerList+1] = args.destName
|
|
|
|
if #playerList == 1 then
|
|
self:ScheduleTimer("TargetMessageOld", 0.3, args.spellId, playerList, "red", "alarm")
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:AqueousBurstRemoved()
|
|
skipDrawIn = false -- Drenching Waters confirmed, no more skipping
|
|
end
|
|
|
|
function mod:DrivenAssault(args)
|
|
if self:Me(args.destGUID) then
|
|
self:Flash(234128)
|
|
self:Say(234128)
|
|
if self:GetOption("custom_on_fixate_plates") then
|
|
self:AddPlateIcon(234128, args.sourceGUID, 10) -- Show the target that is fixating on you more clear
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:DrivenAssaultRemoved(args)
|
|
if self:GetOption("custom_on_fixate_plates") and self:Me(args.destGUID) then
|
|
self:RemovePlateIcon(234128, args.sourceGUID) -- Clear fixate plate incase it's removed early
|
|
end
|
|
end
|
|
|
|
function mod:SicklyFixate(args)
|
|
if self:Me(args.destGUID) then
|
|
self:Flash(args.spellId)
|
|
self:Say(args.spellId)
|
|
if self:GetOption("custom_on_fixate_plates") then
|
|
self:AddPlateIcon(args.spellId, args.sourceGUID, 10) -- Show the target that is fixating on you more clear
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SicklyFixateRemoved(args)
|
|
if self:GetOption("custom_on_fixate_plates") and self:Me(args.destGUID) then
|
|
self:RemovePlateIcon(args.spellId, args.sourceGUID) -- Clear fixate plate incase it's removed early
|
|
end
|
|
end
|
|
|