local mod = DBM : NewMod ( 2082 , " DBM-Party-BfA " , 1 , 968 )
local L = mod : GetLocalizedStrings ( )
mod : SetRevision ( " 20231026101326 " )
mod : SetCreatureID ( 122967 )
mod : SetEncounterID ( 2084 )
mod : SetUsedIcons ( 8 )
mod : SetHotfixNoticeRev ( 20231023000000 )
--mod:SetMinSyncRevision(20231021000000)
mod.respawnTime = 29
mod.sendMainBossGUID = true
mod : RegisterCombat ( " combat " )
mod : RegisterEventsInCombat (
" SPELL_CAST_START 255577 " ,
" SPELL_CAST_SUCCESS 255579 255591 " ,
" SPELL_SUMMON 259209 " ,
" SPELL_AURA_APPLIED 255579 " --277072
)
--[[
ability.id = 255577 and type = " begincast "
or ( ability.id = 255579 or ability.id = 255591 ) and type = " cast "
or ability.id = 259209
or type = " dungeonencounterstart " or type = " dungeonencounterend "
--]]
local warnTransfusion = mod : NewCountAnnounce ( 255577 , 1 )
local warnMoltenGold = mod : NewCountAnnounce ( 255582 , 3 )
local specWarnTransfusion = mod : NewSpecialWarningMoveTo ( 255577 , nil , nil , nil , 3 , 2 )
local specWarnClaws = mod : NewSpecialWarningDefensive ( 255579 , " Tank " , nil , nil , 1 , 2 )
local specWarnClawsDispel = mod : NewSpecialWarningDispel ( 255579 , " MagicDispeller " , nil , nil , 1 , 2 )
local specWarnSpiritofGold = mod : NewSpecialWarningSwitchCount ( 259205 , " Dps " , nil , nil , 1 , 2 , 3 )
--local specWarnGTFO = mod:NewSpecialWarningGTFO(277072, nil, nil, nil, 1, 8)--Unclear, it seems from logs once you step in it, you don't lose debuff moving out of it
local timerTransfusionCD = mod : NewCDCountTimer ( 34 , 255577 , nil , nil , nil , 5 )
local timerGildedClawsCD = mod : NewCDCountTimer ( 34 , 255579 , nil , " Tank " , nil , 5 , nil , DBM_COMMON_L.TANK_ICON )
local timerMoltenGoldCD = mod : NewCDCountTimer ( 34 , 255582 , nil , nil , nil , 3 )
local timerSpiritofGoldCD = mod : NewCDCountTimer ( 34 , 259205 , nil , nil , nil , 1 , nil , DBM_COMMON_L.HEROIC_ICON )
mod : AddSetIconOption ( " SetIconOnSpirit " , 259205 , true , 5 , { 8 } )
local taintedBlood = DBM : GetSpellInfo ( 255558 )
mod.vb . transCount = 0
mod.vb . clawsCount = 0
mod.vb . goldCount = 0
mod.vb . spiritCount = 0
function mod : OnCombatStart ( delay )
self.vb . transCount = 0
self.vb . clawsCount = 0
self.vb . goldCount = 0
self.vb . spiritCount = 0
timerGildedClawsCD : Start ( 10.5 - delay , 1 )
timerMoltenGoldCD : Start ( 16.5 - delay , 1 )
timerTransfusionCD : Start ( 25 - delay , 1 )
if not self : IsNormal ( ) then
timerSpiritofGoldCD : Start ( 9.1 - delay , 1 )
end
end
function mod : SPELL_CAST_START ( args )
local spellId = args.spellId
if spellId == 255577 then
self.vb . transCount = self.vb . transCount + 1
timerTransfusionCD : Start ( nil , self.vb . transCount + 1 )
local _ , _ , _ , _ , _ , expireTime = DBM : UnitDebuff ( " player " , taintedBlood )
local remaining
if expireTime then
remaining = expireTime - GetTime ( )
end
--Not dead, and do not have tainted blood or do have it but it'll expire for transfusion does.
if not UnitIsDeadOrGhost ( " player " ) and ( not remaining or remaining and remaining < 9 ) then
specWarnTransfusion : Show ( taintedBlood )
specWarnTransfusion : Play ( " takedamage " )
else --Already good to go, just a positive warning
warnTransfusion : Show ( self.vb . transCount )
end
end
end
function mod : SPELL_CAST_SUCCESS ( args )
local spellId = args.spellId
if spellId == 255579 then
self.vb . clawsCount = self.vb . clawsCount + 1
if not self.Options . SpecWarn255579dispel then
specWarnClaws : Show ( )
specWarnClaws : Play ( " defensive " )
end
timerGildedClawsCD : Start ( nil , self.vb . clawsCount + 1 )
elseif spellId == 255591 then
self.vb . goldCount = self.vb . goldCount + 1
warnMoltenGold : Show ( self.vb . goldCount )
timerMoltenGoldCD : Start ( nil , self.vb . goldCount + 1 )
end
end
function mod : SPELL_SUMMON ( args )
local spellId = args.spellId
if spellId == 259209 then
self.vb . spiritCount = self.vb . spiritCount + 1
specWarnSpiritofGold : Show ( self.vb . spiritCount )
specWarnSpiritofGold : Play ( " killmob " )
timerSpiritofGoldCD : Start ( nil , self.vb . spiritCount + 1 )
if self.Options . SetIconOnSpirit then
self : ScanForMobs ( args.destGUID , 2 , 8 , 1 , nil , 12 , " SetIconOnSpirit " )
end
end
end
function mod : SPELL_AURA_APPLIED ( args )
local spellId = args.spellId
if spellId == 255579 and not args : IsDestTypePlayer ( ) then
specWarnClawsDispel : Show ( args.destName )
specWarnClawsDispel : Play ( " dispelboss " )
-- elseif spellId == 277072 and args:IsPlayer() and self:AntiSpam(3, 1) then
-- specWarnGTFO:Show(args.spellName)
-- specWarnGTFO:Play("watchfeet")
end
end