80 lines
2.5 KiB
Lua
80 lines
2.5 KiB
Lua
local Doomwalker = DBM:NewBossMod("Doomwalker", DBM_DOOMW_NAME, DBM_DOOMW_DESCRIPTION, DBM_SHADOWMOON, DBMGUI_TAB_OTHER_BC, 5);
|
|
|
|
Doomwalker.Author = "Tandanu";
|
|
Doomwalker.Version = "1.0";
|
|
Doomwalker.LastQuake = 0;
|
|
Doomwalker.LastCharge = 0;
|
|
|
|
Doomwalker:SetCreatureID(17711)
|
|
Doomwalker:RegisterCombat("combat");
|
|
|
|
Doomwalker:AddOption("RangeCheck", true, DBM_DOOMW_OPTION_1, function()
|
|
DBM:GetMod("Doomwalker").Options.RangeCheck = not DBM:GetMod("Doomwalker").Options.RangeCheck;
|
|
|
|
if DBM:GetMod("Doomwalker").Options.RangeCheck and DBM:GetMod("Doomwalker").InCombat then
|
|
DBM_Gui_DistanceFrame_Show();
|
|
elseif not DBM:GetMod("Doomwalker").Options.RangeCheck and DBM:GetMod("Doomwalker").InCombat then
|
|
DBM_Gui_DistanceFrame_Hide();
|
|
end
|
|
end
|
|
);
|
|
Doomwalker:AddOption("QuakeWarn", true, DBM_DOOMW_OPTION_2);
|
|
Doomwalker:AddOption("ChargeWarn", true, DBM_DOOMW_OPTION_3);
|
|
|
|
Doomwalker:AddBarOption("Earthquake Cooldown")
|
|
Doomwalker:AddBarOption("Earthquake")
|
|
Doomwalker:AddBarOption("Overrun Cooldown")
|
|
|
|
Doomwalker:RegisterEvents(
|
|
"SPELL_AURA_APPLIED",
|
|
"SPELL_CAST_START",
|
|
"CHAT_MSG_MONSTER_EMOTE"
|
|
);
|
|
|
|
function Doomwalker:OnCombatStart(delay)
|
|
if self.Options.RangeCheck then
|
|
DBM_Gui_DistanceFrame_Show();
|
|
end
|
|
end
|
|
|
|
function Doomwalker:OnCombatEnd()
|
|
if self.Options.RangeCheck then
|
|
DBM_Gui_DistanceFrame_Hide();
|
|
end
|
|
end
|
|
|
|
function Doomwalker:OnEvent(event, arg1)
|
|
if event == "SPELL_AURA_APPLIED" then
|
|
if (GetTime() - self.LastQuake) > 30 and arg1.spellId == 32686 then
|
|
self.LastQuake = GetTime();
|
|
|
|
if self.Options.QuakeWarn then
|
|
self:Announce(DBM_DOOMW_QUAKE_WARN, 3);
|
|
end
|
|
self:StartStatusBarTimer(52, "Earthquake Cooldown", "Interface\\Icons\\Spell_Nature_Earthquake");
|
|
self:StartStatusBarTimer(8, "Earthquake", "Interface\\Icons\\Spell_Nature_Earthquake");
|
|
self:ScheduleSelf(52, "QuakeWarn");
|
|
end
|
|
|
|
elseif event == "QuakeWarn" and self.Options.QuakeWarn then
|
|
self:Announce(DBM_DOOMW_QUAKE_SOON, 2);
|
|
|
|
elseif event == "SPELL_CAST_START" then
|
|
if (GetTime() - self.LastCharge) > 10 and arg1.spellId == 32637 then
|
|
self.LastCharge = GetTime();
|
|
if self.Options.ChargeWarn then
|
|
self:Announce(DBM_DOOMW_CHARGE, 2);
|
|
end
|
|
|
|
self:StartStatusBarTimer(42, "Overrun Cooldown", "Interface\\Icons\\Ability_Warrior_Charge");
|
|
self:ScheduleSelf(41, "ChargeWarn");
|
|
end
|
|
|
|
elseif event == "ChargeWarn" and self.Options.ChargeWarn then
|
|
self:Announce(DBM_DOOMW_CHARGE_SOON, 1);
|
|
elseif event == "CHAT_MSG_MONSTER_EMOTE" then
|
|
if arg1 == DBM_DOOMW_EMOTE_ENRAGE then
|
|
self:Announce(DBM_DOOMW_WARN_ENRAGE, 3);
|
|
end
|
|
end
|
|
end |