local mod = DBM : NewMod ( 1209 , " DBM-Party-WoD " , 5 , 556 )
local L = mod : GetLocalizedStrings ( )
mod.statTypes = " normal,heroic,mythic,challenge,timewalker "
mod : SetRevision ( " 20230907220903 " )
mod : SetCreatureID ( 84550 )
mod : SetEncounterID ( 1752 ) --TODO: VERIFY, "Boss 4" isn't descriptive enough
mod : SetReCombatTime ( 120 , 3 ) --this boss can quickly re-enter combat if boss reset occurs.
mod.sendMainBossGUID = true
mod : RegisterCombat ( " combat_emotefind " , L.Pull )
mod : RegisterEventsInCombat (
" SPELL_CAST_START 169248 169233 169382 " ,
" SPELL_PERIODIC_DAMAGE 169223 " ,
" SPELL_ABSORBED 169223 " ,
" UNIT_DIED " ,
" UNIT_TARGETABLE_CHANGED "
)
--TODO, figure out why the hell emote pull doesn't work. Text is correct.
local warnToxicSpiderling = mod : NewAddsLeftAnnounce ( - 10492 , 2 , " 136113 " )
--local warnVenomCrazedPaleOne = mod:NewSpellAnnounce("ej10502", 3)--I can't find a way to detect these, at least not without flat out scanning all DAMAGE events but that's too much work.
local warnInhale = mod : NewSpellAnnounce ( 169233 , 3 )
local warnPhase2 = mod : NewPhaseAnnounce ( 2 , 2 , nil , nil , nil , nil , nil , 2 )
local specWarnVenomCrazedPaleOne = mod : NewSpecialWarningSwitch ( - 10502 , " -Healer " , nil , nil , 1 , 2 )
local specWarnGaseousVolley = mod : NewSpecialWarningSpell ( 169382 , nil , nil , nil , 2 , 2 )
local specWarnToxicGas = mod : NewSpecialWarningMove ( 169223 , nil , nil , nil , 1 , 8 )
mod.vb . spiderlingCount = 4
function mod : OnCombatStart ( delay )
self.vb . spiderlingCount = 4
self : SetStage ( 1 )
end
function mod : SPELL_CAST_START ( args )
local spellId = args.spellId
if spellId == 169233 then
warnInhale : Show ( )
elseif spellId == 169248 then
specWarnVenomCrazedPaleOne : Show ( )
specWarnVenomCrazedPaleOne : Play ( " killmob " )
elseif spellId == 169382 then
specWarnGaseousVolley : Show ( )
specWarnGaseousVolley : Play ( " watchstep " )
end
end
function mod : SPELL_PERIODIC_DAMAGE ( _ , _ , _ , _ , destGUID , _ , _ , _ , spellId )
if spellId == 169223 and destGUID == UnitGUID ( " player " ) and self : AntiSpam ( 2 ) then
specWarnToxicGas : Show ( )
specWarnToxicGas : Play ( " watchfeet " )
end
end
mod.SPELL_ABSORBED = mod.SPELL_PERIODIC_DAMAGE
function mod : UNIT_DIED ( args )
local cid = self : GetCIDFromGUID ( args.destGUID )
if cid == 84552 then
self.vb . spiderlingCount = self.vb . spiderlingCount - 1
if self.vb . spiderlingCount > 0 then --Don't need to warn 0, phase 2 kind of covers that 1.4 seconds later.
warnToxicSpiderling : Show ( self.vb . spiderlingCount )
end
end
end
function mod : UNIT_TARGETABLE_CHANGED ( )
if self : GetStage ( 1 ) then
self : SetStage ( 2 )
warnPhase2 : Show ( )
warnPhase2 : Play ( " ptwo " )
end
end