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.
193 lines
6.6 KiB
193 lines
6.6 KiB
if not IsTestBuild() then return end
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Halondrus the Reclaimer", 2481, 2463)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(180906) -- Halondrus
|
|
mod:SetEncounterID(2529)
|
|
mod:SetRespawnTime(30)
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local obeliskCount = 1
|
|
local scanCount = 1
|
|
local misslesCount = 1
|
|
local lanceCount = 1
|
|
local beamCount = 1
|
|
local prismCount = 1
|
|
local reclamationFormCount = 1
|
|
local relocationFormCount = 1
|
|
local detonationCount = 1
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
local crushingPrismMarker = mod:AddMarkerOption(false, "player", 1, 365297, 1, 2, 3, 4) -- Crushing Prism
|
|
function mod:GetOptions()
|
|
return {
|
|
367079, -- Subterranean Scan
|
|
365976, -- Ephemeral Burst
|
|
361676, -- Earthbreaker Missiles
|
|
360977, -- Lightshatter Beam
|
|
365297, -- Crushing Prism
|
|
crushingPrismMarker,
|
|
359235, -- Reclamation Form
|
|
359236, -- Relocation Form
|
|
362056, -- Detonation
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:Log("SPELL_CAST_START", "SubterraneanScan", 367079)
|
|
self:Log("SPELL_AURA_APPLIED", "EphemeralBurstApplied", 365976)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "EphemeralBurstApplied", 365976)
|
|
self:Log("SPELL_CAST_START", "EarthbreakerMissiles", 361676)
|
|
self:Log("SPELL_CAST_SUCCESS", "LightshatterBeam", 360977)
|
|
self:Log("SPELL_AURA_APPLIED", "LightshatterBeamApplied", 361309)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "LightshatterBeamApplied", 361309)
|
|
self:Log("SPELL_AURA_APPLIED", "CrushingPrismApplied", 365297)
|
|
self:Log("SPELL_AURA_REMOVED", "CrushingPrismRemoved", 365297)
|
|
self:Log("SPELL_CAST_START", "ReclamationForm", 359235)
|
|
self:Log("SPELL_CAST_START", "RelocationForm", 359236)
|
|
self:Log("SPELL_CAST_START", "Detonation", 362056)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
obeliskCount = 1
|
|
scanCount = 1
|
|
misslesCount = 1
|
|
lanceCount = 1
|
|
beamCount = 1
|
|
prismCount = 1
|
|
reclamationFormCount = 1
|
|
relocationFormCount = 1
|
|
detonationCount = 1
|
|
|
|
self:Bar(367079, 17.5, CL.count:format(self:SpellName(367079), scanCount))
|
|
self:Bar(360977, 11.8, CL.count:format(self:SpellName(360977), beamCount))
|
|
self:CDBar(361676, 35, CL.count:format(self:SpellName(361676), misslesCount))
|
|
self:Bar(365297, 45.5, CL.count:format(self:SpellName(365297), prismCount))
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
function mod:SubterraneanScan(args)
|
|
self:StopBar(CL.count:format(args.spellName, scanCount))
|
|
self:Message(args.spellId, "yellow", CL.count:format(args.spellName, scanCount))
|
|
self:PlaySound(args.spellId, "alert")
|
|
scanCount = scanCount + 1
|
|
self:Bar(args.spellId, 35, CL.count:format(args.spellName, scanCount))
|
|
end
|
|
|
|
function mod:EphemeralBurstApplied(args)
|
|
if self:Me(args.destGUID) then
|
|
self:NewStackMessage(args.spellId, "blue", args.destName, args.amount)
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
|
|
function mod:EarthbreakerMissiles(args)
|
|
self:StopBar(CL.count:format(args.spellName, misslesCount))
|
|
self:Message(args.spellId, "yellow", CL.count:format(args.spellName, misslesCount))
|
|
self:PlaySound(args.spellId, "alert")
|
|
misslesCount = misslesCount + 1
|
|
self:CDBar(args.spellId, 35, CL.count:format(args.spellName, misslesCount))
|
|
end
|
|
|
|
function mod:LightshatterBeam(args)
|
|
self:StopBar(CL.count:format(args.spellName, beamCount))
|
|
self:Message(args.spellId, "purple", CL.count:format(args.spellName, beamCount))
|
|
self:PlaySound(args.spellId, "alert")
|
|
beamCount = beamCount + 1
|
|
self:Bar(args.spellId, 15.8, CL.count:format(args.spellName, beamCount))
|
|
end
|
|
|
|
function mod:LightshatterBeamApplied(args)
|
|
if self:Tank() and self:Tank(args.destName) then
|
|
self:NewStackMessage(360977, "purple", args.destName)
|
|
if not self:Me(args.destGUID) and not self:Tanking("boss1") then
|
|
self:PlaySound(360977, "warning")
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
do
|
|
local playerList = {}
|
|
local prev = 0
|
|
function mod:CrushingPrismApplied(args)
|
|
local t = args.time
|
|
if t-prev > 5 then
|
|
prev = t
|
|
playerList = {}
|
|
prismCount = prismCount + 1
|
|
self:Bar(args.spellId, 42.7, CL.count:format(args.spellName, prismCount))
|
|
end
|
|
local count = #playerList+1
|
|
playerList[count] = args.destName
|
|
playerList[args.destName] = count -- Set raid marker
|
|
if self:Me(args.destGUID) then
|
|
self:PlaySound(args.spellId, "warning")
|
|
end
|
|
self:NewTargetsMessage(args.spellId, "yellow", playerList, nil, CL.count:format(args.spellName, prismCount-1))
|
|
self:CustomIcon(crushingPrismMarker, args.destName, count)
|
|
end
|
|
|
|
function mod:CrushingPrismRemoved(args)
|
|
if self:Me(args.destGUID) then
|
|
self:Message(args.spellId, "green", CL.removed:format(args.spellName))
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
self:CustomIcon(crushingPrismMarker, args.destName, 0)
|
|
end
|
|
end
|
|
|
|
function mod:ReclamationForm(args)
|
|
self:StopBar(CL.count:format(args.spellName, reclamationFormCount))
|
|
self:Message(args.spellId, "yellow", CL.count:format(args.spellName, reclamationFormCount))
|
|
self:PlaySound(args.spellId, "long")
|
|
reclamationFormCount = reclamationFormCount + 1
|
|
|
|
scanCount = 1
|
|
beamCount = 1
|
|
|
|
--self:Bar(367079, 17.5, CL.count:format(self:SpellName(367079), scanCount))
|
|
--self:Bar(360977, 11.8, CL.count:format(self:SpellName(360977), beamCount))
|
|
--self:Bar(365297, 45.5, CL.count:format(self:SpellName(365297), prismCount))
|
|
end
|
|
|
|
function mod:RelocationForm(args)
|
|
self:StopBar(CL.count:format(args.spellName, relocationFormCount))
|
|
self:Message(args.spellId, "yellow", CL.count:format(args.spellName, relocationFormCount))
|
|
self:PlaySound(args.spellId, "long")
|
|
self:Bar(args.spellId, relocationFormCount == 1 and 63 or 80, CL.count:format(CL.intermission, detonationCount))
|
|
relocationFormCount = relocationFormCount + 1
|
|
|
|
self:StopBar(CL.count:format(self:SpellName(367079), scanCount))
|
|
self:StopBar(CL.count:format(self:SpellName(360977), beamCount))
|
|
self:StopBar(CL.count:format(self:SpellName(365297), prismCount))
|
|
end
|
|
|
|
function mod:Detonation(args)
|
|
self:StopBar(CL.count:format(args.spellName, detonationCount))
|
|
self:Message(args.spellId, "yellow", CL.count:format(args.spellName, detonationCount))
|
|
self:PlaySound(args.spellId, "long")
|
|
detonationCount = detonationCount + 1
|
|
--self:Bar(args.spellId, 30, CL.count:format(args.spellName, detonationCount))
|
|
end
|
|
|
|
|