local mod = DBM : NewMod ( 2412 , " DBM-Party-Shadowlands " , 5 , 1186 )
local L = mod : GetLocalizedStrings ( )
mod : SetRevision ( " 20240426175442 " )
mod : SetCreatureID ( 162061 )
mod : SetEncounterID ( 2359 )
mod : RegisterCombat ( " combat " )
mod : RegisterEventsInCombat (
" SPELL_CAST_START 334625 322999 323943 322921 " ,
" SPELL_CAST_SUCCESS 322818 322893 322908 " ,
" SPELL_AURA_APPLIED 322818 " ,
-- "SPELL_PERIODIC_DAMAGE 322817",
-- "SPELL_PERIODIC_MISSED 322817",
" CHAT_MSG_MONSTER_YELL " ,
" UNIT_SPELLCAST_SUCCEEDED boss1 "
)
--[[
( ability.id = 322999 or ability.id = 323943 or ability.id = 334625 ) and type = " begincast "
or ( ability.id = 322818 or ability.id = 322893 or ability.id = 322908 ) and type = " cast "
--]]
--General
local warnPhase = mod : NewPhaseChangeAnnounce ( 2 , nil , nil , nil , nil , nil , nil , 2 )
--Stage 1
local warnLostConfidence = mod : NewTargetNoFilterAnnounce ( 322818 , 2 )
local warnRunThrough = mod : NewTargetNoFilterAnnounce ( 323943 , 3 )
--Stage 2
local warnSlipStream = mod : NewSpellAnnounce ( 322893 , 4 )
local warnBackdraft = mod : NewSpellAnnounce ( 322908 , 4 )
local warnSpear = mod : NewSpellAnnounce ( 322921 , 1 )
--Stage 1
local specWarnAbyssalDetonation = mod : NewSpecialWarningMoveTo ( 334625 , nil , nil , nil , 3 , 2 )
local specWarnLostConfidence = mod : NewSpecialWarningMoveAway ( 322818 , nil , nil , nil , 1 , 2 )
local yellLostConfidence = mod : NewYell ( 322818 )
local specWarnRunThrough = mod : NewSpecialWarningMoveAway ( 323943 , nil , nil , nil , 1 , 2 )
local yellRunThrough = mod : NewYell ( 323943 )
--local specWarnGTFO = mod:NewSpecialWarningGTFO(322817, nil, nil, nil, 1, 8)
--Stage 1
local timerAbyssalDetonationCD = mod : NewCDTimer ( 20.6 , 334625 , nil , nil , nil , 2 , nil , DBM_COMMON_L.DEADLY_ICON )
local timerLostConfidenceCD = mod : NewCDTimer ( 31.6 , 322818 , nil , nil , nil , 3 , nil , DBM_COMMON_L.MAGIC_ICON .. DBM_COMMON_L.HEALER_ICON )
local timerRunThroughCD = mod : NewCDTimer ( 14.3 , 323943 , nil , nil , nil , 3 ) --14.3-20.6
--Stage 2
local timerSlipstreamCD = mod : NewNextTimer ( 18.2 , 322893 , nil , nil , nil , 2 )
local timerBackdraftCD = mod : NewNextTimer ( 18.2 , 322908 , nil , nil , nil , 2 )
local shelter = DBM : GetSpellName ( 335806 )
function mod : OnCombatStart ( delay )
timerRunThroughCD : Start ( 10 - delay )
timerAbyssalDetonationCD : Start ( 20.1 - delay )
timerLostConfidenceCD : Start ( 24.6 - delay ) --SUCCESS
end
--function mod:OnCombatEnd()
--end
function mod : SPELL_CAST_START ( args )
local spellId = args.spellId
if spellId == 334625 then
specWarnAbyssalDetonation : Show ( shelter )
specWarnAbyssalDetonation : Play ( " findshelter " )
timerAbyssalDetonationCD : Start ( )
elseif spellId == 322999 then --Stage 2
warnPhase : Show ( DBM_CORE_L.AUTO_ANNOUNCE_TEXTS . stage : format ( 2 ) )
warnPhase : Play ( " phasechange " )
timerAbyssalDetonationCD : Stop ( )
timerLostConfidenceCD : Stop ( )
timerRunThroughCD : Stop ( )
timerSlipstreamCD : Start ( 10 )
elseif spellId == 323943 then
timerRunThroughCD : Start ( )
elseif spellId == 322921 then --Spear activation
warnSpear : Show ( )
end
end
function mod : SPELL_CAST_SUCCESS ( args )
local spellId = args.spellId
if spellId == 322818 then
-- timerLostConfidenceCD:Start()--Need data on in between casts, only have phase change data
elseif spellId == 322893 then
warnSlipStream : Show ( )
timerBackdraftCD : Start ( )
elseif spellId == 322908 then
warnBackdraft : Show ( )
timerSlipstreamCD : Start ( )
end
end
function mod : SPELL_AURA_APPLIED ( args )
local spellId = args.spellId
if spellId == 322818 then
if args : IsPlayer ( ) then
specWarnLostConfidence : Show ( )
specWarnLostConfidence : Play ( " scatter " )
yellLostConfidence : Yell ( )
else
warnLostConfidence : CombinedShow ( 0.5 , args.destName )
end
end
end
do
local playerName = UnitName ( " player " )
--"<1359.36 03:16:15> [CLEU] SPELL_CAST_START#Creature-0-2084-2285-28379-162061-000024ADE1#Devos##nil#323943#Run Through#nil#nil", -- [12686]
--"<1359.57 03:16:15> [CHAT_MSG_MONSTER_YELL] This spear shall pierce your heart!#Devos###Nirdail##0#0##0#303#nil#0#false#false#false#false", -- [12689]
function mod : CHAT_MSG_MONSTER_YELL ( msg , npc , _ , _ , targetname )
if ( msg == L.RunThrough or msg : find ( L.RunThrough ) ) and targetname then
self : SendSync ( " Spear " , targetname )
end
end
function mod : OnSync ( msg , targetname , sender )
if not self : IsInCombat ( ) then return end
if msg == " Spear " and sender then
targetname = Ambiguate ( targetname , " none " )
if targetname == playerName then
specWarnRunThrough : Show ( )
specWarnRunThrough : Play ( " targetyou " )
yellRunThrough : Yell ( )
else
warnRunThrough : Show ( targetname )
end
end
end
end
--[[
function mod : SPELL_PERIODIC_DAMAGE ( _ , _ , _ , _ , destGUID , _ , _ , _ , spellId , spellName )
if spellId == 322817 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_SPELLCAST_SUCCEEDED ( uId , _ , spellId )
if spellId == 330433 then --Shut Down (earlier triggers exist that kinda signal end to air phase but don't nessesarily stop timers, this is safer place to do that)
warnPhase : Show ( DBM_CORE_L.AUTO_ANNOUNCE_TEXTS . stage : format ( 1 ) )
warnPhase : Play ( " phasechange " )
timerSlipstreamCD : Stop ( )
timerBackdraftCD : Stop ( )
--Timers seem same as pull, minus 0.4 (give or take, because of landing time)
timerRunThroughCD : Start ( 9.6 )
timerAbyssalDetonationCD : Start ( 19.7 )
timerLostConfidenceCD : Start ( 24.2 ) --SUCCESS
end
end