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.

226 lines
8.0 KiB

local mod = DBM:NewMod(2399, "DBM-Party-Shadowlands", 5, 1186)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240106080507")
mod:SetCreatureID(162059, 163077)--162059 Kin-Tara, 163077 Azules
mod:SetEncounterID(2357)
mod:SetBossHPInfoToHighest()
mod:SetUsedIcons(1)
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 320966 327481 317623 324368",
"SPELL_CAST_SUCCESS 323636",
"SPELL_AURA_APPLIED 323828",
"SPELL_PERIODIC_DAMAGE 317626",
"SPELL_PERIODIC_MISSED 317626",
"UNIT_DIED",
"CHAT_MSG_MONSTER_YELL",
"CHAT_MSG_RAID_BOSS_EMOTE"
-- "UNIT_SPELLCAST_SUCCEEDED boss1 boss2"
)
--TODO, Verify new and improved flight detection
--TODO, the entire enrage mechanic seems to be gone? All logs havev bosses die together and none of enraged abilities ever used
--[[
(ability.id = 321009 or ability.id = 320966 or ability.id = 317623) and type = "begincast"
or ability.id = 323636 and type = "cast"
or ability.id = 323828 or ability.id = 331249
or (target.id = 162059 or target.id = 163077 or target.id = 174212) and type = "death"
or (ability.id = 324368 or ability.id = 317661) and type = "begincast"
--]]
--Kin-Tara
local KinTara = DBM:EJ_GetSectionInfo(21637)
mod:AddTimerLine(KinTara)
local warnChargedSpear = mod:NewTargetNoFilterAnnounce(321009, 4)
local specWarnOverheadSlash = mod:NewSpecialWarningDefensive(320966, nil, nil, nil, 1, 2)
local specWarnDarkLance = mod:NewSpecialWarningInterrupt(327481, "HasInterrupt", nil, nil, 1, 2)
local specWarnChargedSpear = mod:NewSpecialWarningMoveAway(321009, nil, nil, nil, 1, 2)
local yellChargedSpear = mod:NewYell(321009)
local timerOverheadSlashCD = mod:NewCDTimer(6.3, 320966, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)--6.3-11
local timerFlightCD = mod:NewCDTimer(145, 313606, nil, nil, nil, 6)
local timerChargedSpearCD = mod:NewCDTimer(15.8, 321009, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
--Azules
mod:AddTimerLine(DBM:EJ_GetSectionInfo(21639))
local specBarrage = mod:NewSpecialWarningDodge(324368, nil, nil, nil, 2, 6)
local specWarnGTFO = mod:NewSpecialWarningGTFO(317626, nil, nil, nil, 1, 8)
local timerInsidiousVenomCD = mod:NewCDTimer(11.4, 317661, nil, nil, nil, 2)
local timerMawTouchedVenomCD = mod:NewCDTimer(15.8, 317655, nil, nil, nil, 3)
mod.vb.Enraged = false
mod.vb.flightActive = false
mod.vb.spearCount = 0
function mod:OnCombatStart(delay)
self.vb.Enraged = false
self.vb.spearCount = 0
self.vb.flightActive = false
--Kin-Tara
timerOverheadSlashCD:Start(8.3-delay)
timerFlightCD:Start(30.5-delay)
end
function mod:OnCombatEnd()
self:UnregisterShortTermEvents()
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 320966 then
if self.vb.flightActive then
self.vb.flightActive = false
self:UnregisterShortTermEvents()
end
if self:IsTanking("player", "boss1", nil, true) then
specWarnOverheadSlash:Show()--Will be moved to fire earlier with timers
specWarnOverheadSlash:Play("defensive")
end
timerOverheadSlashCD:Start()
elseif spellId == 327481 then
if self.vb.flightActive then
self.vb.flightActive = false
self:UnregisterShortTermEvents()
end
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnDarkLance:Show(args.sourceName)
specWarnDarkLance:Play("kickcast")
end
-- elseif spellId == 317623 then
-- timerMawTouchedVenomCD:Start()
elseif spellId == 324368 and self:AntiSpam(6, 1) then
specBarrage:Show()
specBarrage:Play("watchorb")
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 323636 then
timerInsidiousVenomCD:Start()
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 323828 and not self.vb.Enraged then
self.vb.Enraged = true--Enraged will fire again when 2nd one dies, even though it's a win, don't want to fire alerts/timers on combat end
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 163077 or cid == 174212 then--Azules/Azoras
timerInsidiousVenomCD:Start(3)
timerMawTouchedVenomCD:Start(8.4)
elseif cid == 162059 then--Kin-Tara
self.vb.spearCount = 0
timerChargedSpearCD:Stop()
timerOverheadSlashCD:Stop()
timerOverheadSlashCD:Start(4.5)
timerChargedSpearCD:Start(8, 1)
end
end
end
--Yell possibly using bosses name possible, or yell using string, and on mythic and above deep connection can be used foor flight detection
--"<246.11 02:57:42> [CHAT_MSG_MONSTER_YELL] Your doom takes flight!#Kin-Tara###Kin-Tara##0#0##0#251#nil#0#false#false#false#false", -- [2110]
--"<227.02 19:43:08> [CLEU] SPELL_AURA_REMOVED#Creature-0-2085-2285-7016-163077-000026CDCA#Azules#Creature-0-2085-2285-7016-162059-000026CDCA#Kin-Tara#331249#Deep Connection#DEBUFF#nil", -- [2470]
--"<227.24 19:43:08> [CHAT_MSG_MONSTER_YELL] Fear the skies!#Kin-Tara###Kin-Tara##0#0##0#67#nil#0#false#false#false#false", -- [2475]
function mod:CHAT_MSG_MONSTER_YELL(msg, _, _, _, targetname)
if targetname == KinTara then--I believe only time she target herself in a yell is flight yell
-- if msg == L.Flight or msg:find(L.Flight) or msg == L.Flight2 or msg:find(L.Flight2) then--Backup solution ready to apply if more data reveals she can yell at herself other times
-- self:SendSync("Flight")
self.vb.flightActive = true
self.vb.spearCount = 0
timerOverheadSlashCD:Stop()
timerChargedSpearCD:Stop()
timerChargedSpearCD:Start(3.6, 1)
--Only reliable way to detect air phase ending on non mythic
--Mythic can use Deep Connection but this mod has to encompass normal/heroic as well
self:RegisterShortTermEvents(
"UNIT_POWER_UPDATE boss1"
)
end
end
--[[
function mod:OnSync(msg)
if not self:IsInCombat() then return end
if msg == "Flight" then
self.vb.flightActive = true
self.vb.spearCount = 0
timerOverheadSlashCD:Stop()
timerChargedSpearCD:Stop()
timerChargedSpearCD:Start(3.6, 1)
--Only reliable way to detect air phase ending on non mythic
--Mythic can use Deep Connection but this mod has to encompass normal/heroic as well
self:RegisterShortTermEvents(
"UNIT_POWER_UPDATE boss1"
)
end
end
--]]
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg, _, _, _, target)
if msg:find("spell:321009") then
self.vb.spearCount = self.vb.spearCount + 1
if self.vb.flightActive then
if self.vb.spearCount == 1 then
timerChargedSpearCD:Start(11, 2)
elseif self.vb.Enraged then--Boss will still cast it when landing
timerChargedSpearCD:Start(46.1, 1)
end
else--Casting it when on ground because enraged
timerChargedSpearCD:Start(23.1, self.vb.spearCount+1)
end
local targetname = DBM:GetUnitFullName(target)
if targetname then
if targetname == UnitName("player") then
specWarnChargedSpear:Show()
specWarnChargedSpear:Play("runout")
yellChargedSpear:Yell()
else
warnChargedSpear:Show(targetname)
end
end
end
end
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
if spellId == 317626 and destGUID == UnitGUID("player") and self:AntiSpam(2, 2) then
specWarnGTFO:Show(spellName)
specWarnGTFO:Play("watchfeet")
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 163077 or cid == 174212 then--Azules/Azoras
timerInsidiousVenomCD:Stop()
timerMawTouchedVenomCD:Stop()
elseif cid == 162059 then--Kin-Tara
timerOverheadSlashCD:Stop()
timerFlightCD:Stop()
timerChargedSpearCD:Stop()
end
end
--[[
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
if spellId == 321088 then--Charged Spear
-- timerChargedSpearCD:Start()
end
end
--]]
function mod:UNIT_POWER_UPDATE()
local bossPower = UnitPower("boss1")--Get Boss Power
if self.vb.flightActive and bossPower == 0 then--Boss does a hard energy reset to 0 when she lands (flight phase ends)
self.vb.flightActive = false
self:UnregisterShortTermEvents()
timerOverheadSlashCD:Start(7.2)
timerFlightCD:Start(30.4)
end
end