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.

131 lines
4.0 KiB

local mod = DBM:NewMod(1770, "DBM-BrokenIsles", 1, 822)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20220116041824")
mod:SetCreatureID(108879)
mod:SetEncounterID(1917)
mod:SetReCombatTime(20)
mod:EnableWBEngageSync()--Enable syncing engage in outdoors
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 216428 216430 216432",
"SPELL_CAST_SUCCESS 216817",
"SPELL_AURA_APPLIED 216467 216817",
"SPELL_AURA_REMOVED 216817"
)
--TODO, evaluate severity of some warnings and promote/demote between warn/specwarn as needed
local warnIceFist = mod:NewTargetAnnounce(216432, 3)
local warnSnow = mod:NewSpellAnnounce(216467, 3)
local warnFireBoom = mod:NewTargetAnnounce(216428, 2)
local specWarnFireBoom = mod:NewSpecialWarningMoveAway(216428, nil, nil, nil, 1, 2)
local specWarnFireBoomNear = mod:NewSpecialWarningClose(216428, nil, nil, nil, 1, 2)
local specWarnIceFist = mod:NewSpecialWarningMoveAway(216432, nil, nil, nil, 1, 2)
local specWarnStomp = mod:NewSpecialWarningSpell(216430, nil, nil, nil, 2, 2)
local specWarnGoBangYou = mod:NewSpecialWarningMoveAway(216817, nil, nil, nil, 3, 2)
local specWarnGoBangSwap = mod:NewSpecialWarningTaunt(216817, nil, nil, nil, 1, 2)
local timerFireBoomCD = mod:NewCDTimer(14, 216428, nil, nil, nil, 3)
local timerStompCD = mod:NewCDTimer(28.8, 216430, nil, nil, nil, 2)--28-37
local timerIceFistCD = mod:NewCDTimer(29, 216432, nil, nil, nil, 2)--29-37
local timerSnowCD = mod:NewCDTimer(35, 216467, nil, nil, nil, 2)
local timerGoBangCD = mod:NewCDTimer(24.4, 216817, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerGoBangStarts = mod:NewTargetTimer(12, 216817, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
--mod:AddReadyCheckOption(37460, false)
mod:AddRangeFrameOption(8, 216432)
function mod:BoomTarget(targetname, uId)
if not targetname then return end
if targetname == UnitName("player") then
specWarnFireBoom:Show()
specWarnFireBoom:Play("runout")
elseif self:CheckNearby(10, targetname) then
specWarnFireBoomNear:Show(targetname)
specWarnFireBoomNear:Play("watchstep")
else
warnFireBoom:Show(targetname)
end
end
function mod:IceFists(targetname, uId)
if not targetname then return end
if targetname == UnitName("player") then
specWarnIceFist:Show()
specWarnIceFist:Play("runout")
else
warnIceFist:Show(targetname)
end
end
function mod:OnCombatStart(delay, yellTriggered)
if yellTriggered then
end
if self.Options.RangeFrame then
DBM.RangeCheck:Show(8)
end
end
function mod:OnCombatEnd()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 216428 then
timerFireBoomCD:Start()
self:BossTargetScanner(args.sourceGUID, "BoomTarget", 0.1, 14, nil, nil, nil, nil, true)
elseif spellId == 216430 then
specWarnStomp:Show()
specWarnStomp:Play("carefly")
timerStompCD:Start()
elseif spellId == 216432 then
self:BossTargetScanner(args.sourceGUID, "IceFists", 0.1, 9, nil, nil, nil, nil, true)
timerIceFistCD:Start()
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 216817 then
timerGoBangCD:Start()
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 216467 then
warnSnow:Show()
timerSnowCD:Start()
elseif spellId == 216817 then
timerGoBangStarts:Start(args.destName)
if args:IsPlayer() then
specWarnGoBangYou:Show()
specWarnGoBangYou:Play("runout")
if self.Options.RangeFrame then
DBM.RangeCheck:Show(25)
end
else
specWarnGoBangSwap:Show(args.destName)
specWarnGoBangSwap:Play("tauntboss")
end
end
end
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
if spellId == 216817 then
timerGoBangStarts:Stop(args.destName)
if args:IsPlayer() then
if self.Options.RangeFrame then
DBM.RangeCheck:Show(8)
end
end
end
end