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.

323 lines
12 KiB

4 years ago
--------------------------------------------------------------------------------
-- WCL Queries:
--
--
-- Normal: X
-- Heroic: ✓
-- Mythic: X
--
-- Mote on you warning?
--
4 years ago
--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Lihuvim, Principal Architect", 2481, 2461)
if not mod then return end
mod:RegisterEnableMob(182169) -- Lihuvim
mod:SetEncounterID(2539)
mod:SetRespawnTime(30)
--------------------------------------------------------------------------------
-- Locals
--
local protoformCascadeCount = 1
local cosmicShiftCount = 1
local unstableMoteCount = 1
local deconstructingEnergyCount = 1
local syntesizeCount = 1
4 years ago
local resonanceCount = 1
local shiftOnMe = nil
4 years ago
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
4 years ago
L.protoform_cascade = "Circle"
4 years ago
L.cosmic_shift = "Pushback"
L.cosmic_shift_mythic = "Shift: %s"
4 years ago
L.unstable_mote = "Motes"
L.mote = "Mote"
L.custom_on_nameplate_fixate = "Fixate Nameplate Icon"
L.custom_on_nameplate_fixate_desc = "Show an icon on the nameplate on Acquisitions Automa that are fixed on you.\n\nRequires the use of Enemy Nameplates and a supported nameplate addon (KuiNameplates, Plater)."
L.custom_on_nameplate_fixate_icon = 210130
L.harmonic = "Push"
L.melodic = "Pull"
4 years ago
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
4 years ago
"berserk",
368027, -- Resonance
4 years ago
364652, -- Protoform Cascade
363088, -- Cosmic Shift
{362622, "SAY", "SAY_COUNTDOWN"}, -- Unstable Mote
360159, -- Unstable Mote (Ground Effect)
4 years ago
{363795, "SAY", "SAY_COUNTDOWN"}, -- Deconstructing Energy
363130, -- Synthesize
360869, -- Requisitioned
"custom_on_nameplate_fixate",
{366012, "SAY", "SAY_COUNTDOWN"}, -- Terminal Mote
362659, -- Alignment Shift
4 years ago
},{
[366012] = "mythic",
},{
4 years ago
[368027] = CL.tank_combo, -- Resonance (Tank Combo)
[364652] = L.protoform_cascade, -- Protoform Cascade (Circle)
4 years ago
[363088] = L.cosmic_shift, -- Cosmic Shift (Pushback)
[362601] = L.unstable_mote, -- Unstable Mote (Motes)
[363795] = CL.bombs, -- Deconstructing Energy (Bombs)
[360869] = CL.fixate, -- Requisitioned (Fixate)
}
end
function mod:OnBossEnable()
4 years ago
self:Log("SPELL_CAST_START", "Resonance", 368027)
4 years ago
self:Log("SPELL_CAST_START", "ProtoformCascade", 364652)
self:Log("SPELL_CAST_START", "CosmicShift", 363088)
self:Log("SPELL_CAST_START", "UnstableMote", 362601)
self:Log("SPELL_AURA_APPLIED", "MoteApplied", 362622, 366012) -- Unstable Mote, Terminal Mote
self:Log("SPELL_AURA_REMOVED", "MoteRemoved", 362622, 366012)
self:Log("SPELL_CAST_SUCCESS", "DeconstructingEnergy", 363676)
self:Log("SPELL_AURA_APPLIED", "DeconstructingEnergyApplied", 363795, 363676) -- DPS, TANK
4 years ago
self:Log("SPELL_AURA_REMOVED", "DeconstructingEnergyRemoved", 363795, 363676)
self:Log("SPELL_CAST_START", "Synthesize", 363130)
self:Log("SPELL_AURA_REMOVED", "SynthesizeRemoved", 363130)
self:Log("SPELL_AURA_APPLIED", "FixateApplied", 360869) -- Requisitioned
self:Log("SPELL_AURA_REMOVED", "FixateRemoved", 360869) -- Requisitioned
self:Log("SPELL_AURA_APPLIED", "GroundDamage", 360159) -- Unstable Mote
self:Log("SPELL_PERIODIC_DAMAGE", "GroundDamage", 360159)
self:Log("SPELL_PERIODIC_MISSED", "GroundDamage", 360159)
-- Mythic
self:Log("SPELL_AURA_APPLIED", "AlignmentApplied", 368738, 368740) -- Harmonic, Melodic
4 years ago
end
function mod:OnEngage()
protoformCascadeCount = 1
cosmicShiftCount = 1
unstableMoteCount = 1
deconstructingEnergyCount = 1
syntesizeCount = 1
4 years ago
resonanceCount = 1
4 years ago
self:Bar(364652, 5.5, CL.count:format(L.protoform_cascade, protoformCascadeCount)) -- Protoform Cascade
4 years ago
self:Bar(362622, 13, CL.count:format(L.unstable_mote, unstableMoteCount)) -- Unstable Mote
self:Bar(363795, 20.5, CL.count:format(CL.bombs, deconstructingEnergyCount)) -- Deconstructing Energy
self:Bar(363130, self:Mythic() and 27.5 or 46, CL.count:format(self:SpellName(363130), syntesizeCount)) -- Synthesize
if not self:Mythic() then
self:Bar(363088, 30, CL.count:format(L.cosmic_shift, cosmicShiftCount)) -- Cosmic Shift
if self:Heroic() then
self:Bar(368027, 38.5, CL.count:format(CL.tank_combo, resonanceCount)) -- Resonance
end
end
self:Berserk(600)
4 years ago
end
--------------------------------------------------------------------------------
-- Event Handlers
--
4 years ago
function mod:Resonance(args)
self:StopBar(CL.count:format(CL.tank_combo, resonanceCount))
self:Message(args.spellId, "yellow", CL.count:format(CL.tank_combo, resonanceCount))
self:PlaySound(args.spellId, "alert")
resonanceCount = resonanceCount + 1
if syntesizeCount > 1 and resonanceCount < 3 then -- 2 casts per rotation
self:Bar(args.spellId, 44.9, CL.count:format(CL.tank_combo, resonanceCount))
4 years ago
end
end
4 years ago
function mod:ProtoformCascade(args)
self:StopBar(CL.count:format(L.protoform_cascade, protoformCascadeCount))
self:Message(args.spellId, "yellow", CL.count:format(L.protoform_cascade, protoformCascadeCount))
self:PlaySound(args.spellId, "alert")
protoformCascadeCount = protoformCascadeCount + 1
if self:Easy() then
if (syntesizeCount > 1 and protoformCascadeCount < 5) or (syntesizeCount == 1 and protoformCascadeCount < 3) then -- 4 casts per rotation, 2 on first
local cd = protoformCascadeCount == 2 and 32.8 or protoformCascadeCount == 3 and 30.3 or 14.5
self:Bar(args.spellId, cd, CL.count:format(L.protoform_cascade, protoformCascadeCount))
end
else
if syntesizeCount > 1 and protoformCascadeCount < 3 then -- 2 casts per rotation
self:Bar(args.spellId, 71.6, CL.count:format(L.protoform_cascade, protoformCascadeCount))
end
4 years ago
end
end
function mod:CosmicShift(args)
self:StopBar(CL.count:format(L.cosmic_shift_mythic:format(L.melodic), cosmicShiftCount))
self:StopBar(CL.count:format(L.cosmic_shift_mythic:format(L.harmonic), cosmicShiftCount))
4 years ago
self:StopBar(CL.count:format(L.cosmic_shift, cosmicShiftCount))
local messageText = CL.count:format(L.cosmic_shift, cosmicShiftCount)
if self:Mythic() then
local text = shiftOnMe == 368738 and L.harmonic or L.melodic
messageText = CL.count:format(L.cosmic_shift_mythic:format(text), cosmicShiftCount)
end
self:Message(args.spellId, "orange", messageText)
4 years ago
self:PlaySound(args.spellId, "alarm")
cosmicShiftCount = cosmicShiftCount + 1
local barText = CL.count:format(L.cosmic_shift, cosmicShiftCount)
if self:Mythic() then
local text = shiftOnMe == 368738 and L.melodic or L.harmonic
barText = CL.count:format(L.cosmic_shift_mythic:format(text), cosmicShiftCount) -- Cosmic Shift
end
if syntesizeCount > 1 and cosmicShiftCount < 3 then -- 2 casts per rotation
self:Bar(args.spellId, self:Easy() and 23.1 or 38.8 , barText)
4 years ago
end
end
function mod:UnstableMote(args)
self:StopBar(CL.count:format(L.unstable_mote, unstableMoteCount))
self:Message(362622, "orange", CL.count:format(L.unstable_mote, unstableMoteCount))
self:PlaySound(362622, "alarm")
unstableMoteCount = unstableMoteCount + 1
if self:Easy() then
if (syntesizeCount > 1 and unstableMoteCount < 4) or (syntesizeCount == 1 and unstableMoteCount < 3) then -- 3 casts per rotation, 2 on firt
self:Bar(362622, unstableMoteCount == 2 and 32.8 or 30.3, CL.count:format(L.unstable_mote, unstableMoteCount))
end
else
if syntesizeCount > 1 and unstableMoteCount < 3 then -- 2 casts per rotation
self:Bar(362622, 38.8, CL.count:format(L.unstable_mote, unstableMoteCount))
4 years ago
end
4 years ago
end
end
do
function mod:MoteApplied(args)
if self:Me(args.destGUID) then
self:PersonalMessage(args.spellId)
self:PlaySound(args.spellId, "warning")
self:Say(args.spellId, L.mote)
self:SayCountdown(args.spellId, 4)
4 years ago
end
end
function mod:MoteRemoved(args)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
end
do
local playerList = {}
function mod:DeconstructingEnergy(args)
playerList = {}
self:StopBar(CL.count:format(CL.bombs, deconstructingEnergyCount))
deconstructingEnergyCount = deconstructingEnergyCount + 1
if syntesizeCount > 1 and deconstructingEnergyCount < 3 then -- 2 casts per rotation
self:Bar(363795, 38.8, CL.count:format(CL.bombs, deconstructingEnergyCount))
4 years ago
end
end
function mod:DeconstructingEnergyApplied(args)
playerList[#playerList+1] = args.destName
if self:Me(args.destGUID) then
self:PlaySound(363795, "warning")
self:Say(363795, CL.bomb)
self:SayCountdown(363795, 6)
else
self:PlaySound(363795, "alert", nil, args.destName)
4 years ago
end
self:NewTargetsMessage(363795, "orange", playerList, nil, CL.count:format(CL.bomb, deconstructingEnergyCount-1))
4 years ago
end
function mod:DeconstructingEnergyRemoved(args)
if self:Me(args.destGUID) then
self:CancelSayCountdown(363795)
end
end
end
function mod:Synthesize(args)
-- Incase of fuckups
self:StopBar(CL.count:format(L.protoform_cascade, protoformCascadeCount)) -- Protoform Cascade
self:StopBar(CL.count:format(L.unstable_mote, unstableMoteCount)) -- Unstable Mote
self:StopBar(CL.count:format(CL.bombs, deconstructingEnergyCount)) -- Deconstructing Energy
self:StopBar(CL.count:format(L.cosmic_shift, cosmicShiftCount)) -- Cosmic Shift
self:StopBar(CL.count:format(L.cosmic_shift_mythic:format(L.melodic), cosmicShiftCount)) -- Cosmic Shift (Mythic)
self:StopBar(CL.count:format(L.cosmic_shift_mythic:format(L.harmonic), cosmicShiftCount)) -- Cosmic Shift (Mythic)
4 years ago
self:StopBar(CL.count:format(args.spellName, syntesizeCount))
self:Message(args.spellId, "cyan", CL.count:format(args.spellName, syntesizeCount))
self:PlaySound(args.spellId, "long")
self:CastBar(args.spellId, 19.5, CL.count:format(args.spellName, syntesizeCount))
syntesizeCount = syntesizeCount + 1
4 years ago
end
function mod:SynthesizeRemoved(args)
self:Message(args.spellId, "cyan", CL.over:format(CL.count:format(args.spellName, syntesizeCount-1)))
4 years ago
self:PlaySound(args.spellId, "long")
protoformCascadeCount = 1
cosmicShiftCount = 1
unstableMoteCount = 1
deconstructingEnergyCount = 1
4 years ago
resonanceCount = 1
4 years ago
self:Bar(364652, 36.7, CL.count:format(L.protoform_cascade, protoformCascadeCount)) -- Protoform Cascade
self:Bar(362622, 42.8, CL.count:format(L.unstable_mote, unstableMoteCount)) -- Unstable Mote
4 years ago
self:Bar(363795, 51.4, CL.count:format(CL.bombs, deconstructingEnergyCount)) -- Deconstructing Energy
if not self:Easy() then
self:Bar(368027, 69.6, CL.count:format(CL.tank_combo, resonanceCount)) -- Resonance
end
if self:Mythic() then
local text = shiftOnMe == 368738 and L.melodic or L.harmonic
self:Bar(363088, 61.1, CL.count:format(L.cosmic_shift_mythic:format(text), cosmicShiftCount)) -- Cosmic Shift
else
self:Bar(363088, 61.1, CL.count:format(L.cosmic_shift, cosmicShiftCount)) -- Cosmic Shift
end
self:Bar(363130, 121.9, CL.count:format(args.spellName, syntesizeCount)) -- Synthesize
4 years ago
end
function mod:FixateApplied(args)
if self:Me(args.destGUID) then
self:PersonalMessage(args.spellId, nil, CL.fixate)
self:PlaySound(args.spellId, "alarm")
if self:GetOption("custom_on_nameplate_fixate") then
self:AddPlateIcon(210130, args.sourceGUID) -- 210130 = ability_fixated_state_red
end
end
end
function mod:FixateRemoved(args)
if self:Me(args.destGUID) and self:GetOption("custom_on_nameplate_fixate") then
self:RemovePlateIcon(210130, args.sourceGUID)
end
end
do
local prev = 0
function mod:GroundDamage(args)
if self:Me(args.destGUID) then
local t = args.time
if t-prev > 2 then
prev = t
self:PlaySound(args.spellId, "underyou")
self:PersonalMessage(args.spellId, "underyou")
end
end
end
end
-- Mythic
function mod:AlignmentApplied(args)
if self:Me(args.destGUID) then
local text = args.spellId == 368738 and L.harmonic or L.melodic
shiftOnMe = args.spellId
self:PersonalMessage(362659, nil, L.cosmic_shift_mythic:format(text), args.spellId)
self:PlaySound(362659, "info")
end
end