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.
194 lines
6.4 KiB
194 lines
6.4 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- TODO List:
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Ursoc", 1520, 1667)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(100497)
|
|
mod.engageId = 1841
|
|
mod.respawnTime = 40
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local cacophonyCount = 1
|
|
local focusedGazeCount = 1
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.custom_on_gaze_assist = "Focused Gaze Assist"
|
|
L.custom_on_gaze_assist_desc = "Show raid icons in bars and messages for Focused Gaze. Using {rt4} for odd, {rt6} for even soaks. Requires promoted or leader."
|
|
L.custom_on_gaze_assist_icon = 4
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
{197943, "TANK"}, -- Overwhelm
|
|
{204859, "TANK_HEALER"}, -- Rend Flesh
|
|
{198006, "ICON", "FLASH", "PULSE", "SAY"}, -- Focused Gaze
|
|
"custom_on_gaze_assist",
|
|
198108, -- Momentum
|
|
197969, -- Roaring Cacophony
|
|
205611, -- Miasma
|
|
198388, -- Blood Frenzy
|
|
"berserk",
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:Log("SPELL_CAST_START", "RoaringCacophony", 197969)
|
|
self:Log("SPELL_CAST_SUCCESS", "RoaringCacophonySuccess", 197969)
|
|
self:Log("SPELL_AURA_APPLIED", "Overwhelm", 197943)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "Overwhelm", 197943)
|
|
self:Log("SPELL_CAST_START", "RendFleshCast", 197942)
|
|
self:Log("SPELL_AURA_APPLIED", "RendFlesh", 204859)
|
|
self:Log("SPELL_AURA_APPLIED", "FocusedGaze", 198006)
|
|
self:Log("SPELL_AURA_REMOVED", "FocusedGazeRemoved", 198006)
|
|
self:Log("SPELL_AURA_APPLIED", "Momentum", 198108)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "Momentum", 198108)
|
|
self:Log("SPELL_AURA_APPLIED", "BloodFrenzy", 198388)
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "MiasmaDamage", 205611)
|
|
self:Log("SPELL_DAMAGE", "MiasmaDamage", 212238)
|
|
self:Log("SPELL_MISSED", "MiasmaDamage", 212238)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
cacophonyCount = 1
|
|
focusedGazeCount = 1
|
|
|
|
self:Bar(197943, 10) -- Overwhelm
|
|
self:Bar(204859, 15) -- Rend Flesh, time to _applied
|
|
if not self:LFR() and self:GetOption("custom_on_gaze_assist") then
|
|
self:Bar(198006, 19, CL.count_icon:format(self:SpellName(198006), focusedGazeCount, 4)) -- Focused Gaze, green
|
|
else
|
|
self:Bar(198006, 19, CL.count:format(self:SpellName(198006), focusedGazeCount)) -- Focused Gaze
|
|
end
|
|
self:Bar(197969, self:Mythic() and 20 or 40, CL.count:format(self:SpellName(197969), cacophonyCount)) -- Roaring Cacophony
|
|
self:Berserk(300)
|
|
|
|
self:RegisterUnitEvent("UNIT_HEALTH", nil, "boss1")
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
function mod:RoaringCacophony(args)
|
|
self:MessageOld(args.spellId, "orange", nil, CL.casting:format(CL.count:format(args.spellName, cacophonyCount)))
|
|
end
|
|
|
|
function mod:RoaringCacophonySuccess(args)
|
|
local text = CL.count:format(args.spellName, cacophonyCount)
|
|
if self:Mythic() and cacophonyCount > 2 and cacophonyCount % 2 == 1 then
|
|
text = text.." - ".. CL.spawning:format(CL.add)
|
|
end
|
|
self:MessageOld(args.spellId, "orange", "alarm", text)
|
|
|
|
cacophonyCount = cacophonyCount + 1
|
|
|
|
local next = cacophonyCount % 2 == 0 and 10 or 30
|
|
if self:Mythic() then
|
|
next = cacophonyCount == 2 and 20 or cacophonyCount % 2 == 0 and 30 or 10
|
|
end
|
|
self:Bar(args.spellId, next, CL.count:format(args.spellName, cacophonyCount))
|
|
end
|
|
|
|
function mod:Overwhelm(args)
|
|
local amount = args.amount or 1
|
|
self:StackMessage(args.spellId, args.destName, amount, "red")
|
|
if amount > 1 then
|
|
self:PlaySound(args.spellId, self:Me(args.destGUID) and "alarm" or "warning") -- Warning = taunt
|
|
end
|
|
self:Bar(args.spellId, self:LFR() and 20 or 10)
|
|
end
|
|
|
|
function mod:RendFleshCast(args)
|
|
self:MessageOld(204859, "yellow", nil, CL.casting:format(args.spellName))
|
|
if self:Tank() and not self:Tanking("boss1") then
|
|
local _, _, _, expiration = self:UnitDebuff("player", self:SpellName(197943)) -- Overwhelm
|
|
if not expiration or expiration-GetTime() < 2.5 then
|
|
self:PlaySound(204859, "warning") -- Warning = taunt
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:RendFlesh(args)
|
|
self:TargetMessageOld(args.spellId, args.destName, "yellow", "info")
|
|
self:Bar(args.spellId, 20)
|
|
end
|
|
|
|
function mod:FocusedGaze(args)
|
|
local icon = focusedGazeCount % 2 == 0 and 6 or 4 -- blue (even), green (odd)
|
|
local countSay = CL.count:format(args.spellName, focusedGazeCount)
|
|
local countMessage = countSay
|
|
local showingIcons = false
|
|
|
|
if not self:LFR() and self:GetOption("custom_on_gaze_assist") then
|
|
showingIcons = true
|
|
countSay = CL.count_rticon:format(args.spellName, focusedGazeCount, icon)
|
|
countMessage = CL.count_icon:format(args.spellName, focusedGazeCount, icon)
|
|
end
|
|
|
|
if self:Me(args.destGUID) then
|
|
self:Flash(args.spellId, showingIcons and icon)
|
|
self:Say(args.spellId, countSay)
|
|
end
|
|
|
|
self:PrimaryIcon(args.spellId, args.destName)
|
|
self:TargetMessageOld(args.spellId, args.destName, "red", "warning", countMessage, args.spellId, true)
|
|
self:TargetBar(args.spellId, 6, args.destName, countMessage)
|
|
focusedGazeCount = focusedGazeCount + 1
|
|
if showingIcons then
|
|
self:Bar(args.spellId, 40, CL.count_icon:format(args.spellName, focusedGazeCount, focusedGazeCount % 2 == 0 and 6 or 4))
|
|
else
|
|
self:Bar(args.spellId, 40, CL.count:format(args.spellName, focusedGazeCount))
|
|
end
|
|
end
|
|
|
|
function mod:FocusedGazeRemoved(args)
|
|
self:StopBar(args.spellId, args.destName)
|
|
self:PrimaryIcon(args.spellId, nil)
|
|
end
|
|
|
|
function mod:Momentum(args)
|
|
if self:Me(args.destGUID) then
|
|
self:TargetBar(args.spellId, 50, args.destName)
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:MiasmaDamage(args)
|
|
local t = GetTime()
|
|
if self:Me(args.destGUID) and t-prev > 1.5 then
|
|
prev = t
|
|
self:MessageOld(205611, "blue", "alert", CL.underyou:format(args.spellName))
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_HEALTH(event, unit)
|
|
local hp = UnitHealth(unit) / UnitHealthMax(unit)
|
|
if hp < 0.35 then -- Blood Frenzy at 30%
|
|
self:UnregisterUnitEvent(event, unit)
|
|
self:MessageOld(198388, "cyan", "info", CL.soon:format(self:SpellName(198388))) -- Blood Frenzy
|
|
end
|
|
end
|
|
|
|
function mod:BloodFrenzy(args)
|
|
self:MessageOld(args.spellId, "orange", "long", "30% - ".. args.spellName)
|
|
end
|
|
|