|
|
|
|
local mod = DBM:NewMod(551, "DBM-Party-BC", 15, 254)
|
|
|
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
|
|
|
|
|
|
if mod:IsRetail() then
|
|
|
|
|
mod.statTypes = "normal,heroic,timewalker"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
mod:SetRevision("20231014053250")
|
|
|
|
|
|
|
|
|
|
mod:SetCreatureID(20912)
|
|
|
|
|
mod:SetEncounterID(1914)
|
|
|
|
|
|
|
|
|
|
if not mod:IsRetail() then
|
|
|
|
|
mod:SetModelID(19943)
|
|
|
|
|
mod:SetModelScale(0.4)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
|
|
|
|
|
|
mod:RegisterEventsInCombat(
|
|
|
|
|
"CHAT_MSG_MONSTER_YELL",
|
|
|
|
|
"SPELL_AURA_APPLIED 39019 37162 36924 36929 39017 39021",
|
|
|
|
|
"SPELL_AURA_REMOVED 39019 37162 36924 36929 39017 39021",
|
|
|
|
|
"UNIT_HEALTH"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
local warnSplitSoon = mod:NewAnnounce("warnSplitSoon", 2)
|
|
|
|
|
local warnSplit = mod:NewAnnounce("warnSplit", 3)
|
|
|
|
|
local warnMindControl = mod:NewTargetNoFilterAnnounce(39019, 4)
|
|
|
|
|
local warnMindRend = mod:NewTargetNoFilterAnnounce(39017, 2)
|
|
|
|
|
|
|
|
|
|
local timerMindControl = mod:NewTargetTimer(6, 39019, nil, nil, nil, 3)
|
|
|
|
|
local timerMindRend = mod:NewTargetTimer(6, 39017, nil, false, 2, 3)
|
|
|
|
|
|
|
|
|
|
mod.vb.warnedSplit1 = false
|
|
|
|
|
mod.vb.warnedSplit2 = false
|
|
|
|
|
|
|
|
|
|
function mod:OnCombatStart()
|
|
|
|
|
self.vb.warnedSplit1 = false
|
|
|
|
|
self.vb.warnedSplit2 = false
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
|
|
|
if args:IsSpellID(39019, 37162) then
|
|
|
|
|
warnMindControl:Show(args.destName)
|
|
|
|
|
timerMindControl:Start(args.destName)
|
|
|
|
|
elseif args:IsSpellID(36924, 36929, 39017, 39021) then
|
|
|
|
|
warnMindRend:Show(args.destName)
|
|
|
|
|
timerMindRend:Start(args.destName)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
|
|
|
if args:IsSpellID(39019, 37162) then
|
|
|
|
|
timerMindControl:Stop(args.destName)
|
|
|
|
|
elseif args:IsSpellID(36924, 36929, 39017, 39021) then
|
|
|
|
|
timerMindRend:Stop(args.destName)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:CHAT_MSG_MONSTER_YELL(msg)
|
|
|
|
|
if msg == L.Split then
|
|
|
|
|
warnSplit:Show()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
do
|
|
|
|
|
local UnitHealth, UnitHealthMax = UnitHealth, UnitHealthMax
|
|
|
|
|
|
|
|
|
|
function mod:UNIT_HEALTH(uId)
|
|
|
|
|
if not self.vb.warnedSplit1 and self:GetUnitCreatureId(uId) == 20912 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.70 then
|
|
|
|
|
self.vb.warnedSplit1 = true
|
|
|
|
|
warnSplitSoon:Show()
|
|
|
|
|
elseif not self.vb.warnedSplit2 and self:IsHard() and self:GetUnitCreatureId(uId) == 20912 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.37 then
|
|
|
|
|
self.vb.warnedSplit2 = true
|
|
|
|
|
warnSplitSoon:Show()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|