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.
228 lines
8.2 KiB
228 lines
8.2 KiB
|
3 years ago
|
local mod = DBM:NewMod(2399, "DBM-Party-Shadowlands", 5, 1186)
|
||
|
|
local L = mod:GetLocalizedStrings()
|
||
|
|
|
||
|
|
mod:SetRevision("20220803233609")
|
||
|
|
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, "Tank", 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 specWarnChargedSpearNear = mod:NewSpecialWarningClose(321009, nil, nil, nil, 1, 2)
|
||
|
|
|
||
|
|
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
|
||
|
|
specWarnOverheadSlash:Show()--Will be moved to fire earlier with timers
|
||
|
|
specWarnOverheadSlash:Play("defensive")
|
||
|
|
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()
|
||
|
|
elseif self:CheckNearby(5, targetname) then
|
||
|
|
specWarnChargedSpearNear:Show(targetname)
|
||
|
|
specWarnChargedSpearNear:Play("runaway")
|
||
|
|
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
|