3076660609
Added formatter file, removed whitespaces, fixed issue with tremor totem missing.
306 lines
9.4 KiB
Lua
306 lines
9.4 KiB
Lua
--[[
|
|
|
|
CALL OF ELEMENTS
|
|
The All-In-One Shaman Addon
|
|
|
|
by Wyverex (2006)
|
|
|
|
]] if (not COE) then COE = {}; end
|
|
|
|
COE_VERSION = 2.6
|
|
|
|
COECOL_TOTEMWARNING = 1;
|
|
COECOL_TOTEMDESTROYED = 2;
|
|
COECOL_TOTEMCLEANSING = 3;
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
When DebugMode is set to true, all DebugMessage calls will
|
|
write a debug message into the chat frame
|
|
-------------------------------------------------------------------]]
|
|
COE["DebugMode"] = false;
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
When EventPrintMode is set to true, all event calls not caught
|
|
will write to a debug message into the chat frame. Requires
|
|
DebugMode enabled
|
|
-------------------------------------------------------------------]]
|
|
COE["EventPrintMode"] = false;
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
These variables control frame updates
|
|
UpdateInterval sets the interval in seconds after which a
|
|
frame is updated
|
|
ForceUpdate can be used as input into Update handlers to force
|
|
an update regardless of the current timer
|
|
-------------------------------------------------------------------]]
|
|
COE["UpdateInterval"] = 0.1;
|
|
COE["ForceUpdate"] = COE.UpdateInterval * 2;
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
The AdvisorInterval controls how often the party/raid is
|
|
scanned for debuffs that are curable by totems
|
|
The AdvisorWarningInterval controls how often the player is
|
|
notified about existing debuffs
|
|
-------------------------------------------------------------------]]
|
|
COE["AdvisorInterval"] = 1;
|
|
COE["AdvisorWarningInterval"] = 7;
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COE:Init
|
|
|
|
PURPOSE: Loads submodules and initializes data
|
|
-------------------------------------------------------------------]]
|
|
function COE:Init()
|
|
COE:Message("Call of Elements v" .. COE_VERSION);
|
|
|
|
-- load only for shamans
|
|
-- ----------------------
|
|
local _, EnglishClass = UnitClass("player");
|
|
if (EnglishClass ~= "SHAMAN") then
|
|
COE:Message(COESTR_NOTASHAMAN);
|
|
COE.Initialized = false;
|
|
else
|
|
COE.Initialized = true;
|
|
|
|
this:RegisterEvent("VARIABLES_LOADED");
|
|
this:RegisterEvent("CHAT_MSG_SPELL_SELF_BUFF");
|
|
|
|
-- register shell command
|
|
-- -----------------------
|
|
SlashCmdList["COE"] = COEProcessShellCommand;
|
|
SLASH_COE1 = "/coe";
|
|
|
|
end
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COE:FindSpellId
|
|
|
|
PURPOSE: Utility function that can provide spell ID from name.
|
|
Run in client chat with '/script COE:FindSpellName("a_spell_name")'.
|
|
-------------------------------------------------------------------]]
|
|
function COE:FindSpellId(spellNameTarget)
|
|
local spellName;
|
|
for i = 1, 1000 do
|
|
spellName = GetSpellName(i, BOOKTYPE_SPELL);
|
|
if (spellName == spellNameTarget) then
|
|
print(spellName .. "is id: " .. i);
|
|
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COE:OnEvent
|
|
|
|
PURPOSE: Handles frame events
|
|
-------------------------------------------------------------------]]
|
|
function COE:OnEvent(event)
|
|
|
|
if (event == "VARIABLES_LOADED") then
|
|
-- fix saved variables if this update has to do so
|
|
-- ------------------------------------------------
|
|
COE:FixSavedVariables();
|
|
|
|
elseif (event == "CHAT_MSG_SPELL_SELF_BUFF") then
|
|
if (string.find(arg1, "Mana from Totemic Recall")) then
|
|
COE:DebugMessage("Totemic Recall initiating reset of timers.");
|
|
COE_Totem:ResetTimers();
|
|
end
|
|
|
|
elseif (COE.EventPrintMode) then
|
|
COE:DebugMessage(event);
|
|
|
|
end
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COE:Message
|
|
|
|
PURPOSE: Adds a message to the default chat frame
|
|
-------------------------------------------------------------------]]
|
|
function COE:Message(msg)
|
|
DEFAULT_CHAT_FRAME:AddMessage("[COE] " .. msg, 0.93, 0.83, 0.45);
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COE:DebugMessage
|
|
|
|
PURPOSE: Adds a debug message to the default chat frame if
|
|
debug mode is enabled
|
|
-------------------------------------------------------------------]]
|
|
function COE:DebugMessage(msg)
|
|
if (COE.DebugMode) then
|
|
DEFAULT_CHAT_FRAME:AddMessage("[COE] " .. msg, 1, 0, 0);
|
|
end
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COE:Notification
|
|
|
|
PURPOSE: Adds a message to the error frame in the upper
|
|
screen center
|
|
-------------------------------------------------------------------]]
|
|
function COE:Notification(msg, color)
|
|
|
|
local col;
|
|
|
|
-- choose color
|
|
-- -------------
|
|
if (color == COECOL_TOTEMWARNING) then
|
|
col = {r = 0, g = 0.6, b = 1};
|
|
elseif (color == COECOL_TOTEMDESTROYED) then
|
|
col = {r = 1, g = 0.4, b = 0};
|
|
elseif (color == COECOL_TOTEMCLEANSING) then
|
|
col = {r = 0, g = 1, b = 0.4};
|
|
else
|
|
col = {r = 1, g = 1, b = 1};
|
|
end
|
|
|
|
-- add message
|
|
-- ------------
|
|
UIErrorsFrame:AddMessage(msg, col.r, col.g, col.b, 1.0, UIERRORS_HOLD_TIME);
|
|
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COE:ToggleConfigFrame
|
|
|
|
PURPOSE: Toggles the configuration dialog
|
|
-------------------------------------------------------------------]]
|
|
function COE:ToggleConfigFrame()
|
|
|
|
if (COE_ConfigFrame:IsVisible()) then
|
|
COE_Config:CloseDialog()
|
|
else
|
|
COE_ConfigFrame:Show();
|
|
end
|
|
|
|
PlaySound("igMainMenuOption");
|
|
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COEProcessShellCommand
|
|
|
|
PURPOSE: Executes the entered shell command
|
|
-------------------------------------------------------------------]]
|
|
function COEProcessShellCommand(msg)
|
|
|
|
if (msg == "" or msg == "config") then
|
|
COE:ToggleConfigFrame();
|
|
|
|
elseif (msg == "list") then
|
|
COE:DisplayShellCommands();
|
|
|
|
elseif (msg == "nextset") then
|
|
COE_Totem:SwitchToNextSet();
|
|
|
|
elseif (msg == "priorset") then
|
|
COE_Totem:SwitchToPriorSet();
|
|
|
|
elseif (msg == "throwset") then
|
|
COE_Totem:ThrowSet();
|
|
|
|
elseif (msg == "restartset") then
|
|
COE_Totem:ResetSetCycle();
|
|
|
|
elseif (msg == "reset") then
|
|
COE_Totem:ResetTimers();
|
|
|
|
elseif (msg == "reload") then
|
|
COE_Totem:Rescan();
|
|
|
|
elseif (msg == "resetframes") then
|
|
COE_Totem:ResetFrames();
|
|
|
|
elseif (msg == "advised") then
|
|
COE_Totem:ThrowAdvisedTotem();
|
|
|
|
elseif (msg == "resetordering") then
|
|
COE_DisplayedTotems = {};
|
|
COE_Totem:Rescan();
|
|
|
|
elseif (msg == "bestheal") then
|
|
COE_Heal:BestHeal();
|
|
|
|
elseif (msg == "battleheal") then
|
|
COE_Heal:BattleHeal();
|
|
|
|
else
|
|
local _, _, arg = string.find(msg, "set (.*)");
|
|
if (arg) then COE_Totem:SwitchToSet(arg); end
|
|
end
|
|
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COE:DisplayShellCommands
|
|
|
|
PURPOSE: Shows a list of all shell commands
|
|
-------------------------------------------------------------------]]
|
|
function COE:DisplayShellCommands()
|
|
|
|
COE:Message(COESHELL_INTRO);
|
|
COE:Message(COESHELL_CONFIG);
|
|
COE:Message(COESHELL_LIST);
|
|
COE:Message(COESHELL_NEXTSET);
|
|
COE:Message(COESHELL_PRIORSET);
|
|
COE:Message(COESHELL_SET);
|
|
COE:Message(COESHELL_RESTARTSET);
|
|
COE:Message(COESHELL_RESET);
|
|
COE:Message(COESHELL_RESETFRAMES);
|
|
COE:Message(COESHELL_RESETORDERING);
|
|
COE:Message(COESHELL_RELOAD);
|
|
COE:Message(COESHELL_MACRONOTE);
|
|
COE:Message(COESHELL_THROWSET);
|
|
COE:Message(COESHELL_ADVISED);
|
|
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------
|
|
METHOD: COE:FixSavedVariables
|
|
|
|
PURPOSE: If this addon version is higher than the one in
|
|
the saved variables, check if we have to fix the
|
|
saved variables due to fixed bugs
|
|
-------------------------------------------------------------------]]
|
|
function COE:FixSavedVariables()
|
|
|
|
-- is the version stored in the saved variables?
|
|
-- ----------------------------------------------
|
|
if (not COE_Config:GetSaved(COEOPT_VERSION)) then
|
|
-- this is version <= v1.6
|
|
-- ------------------------
|
|
COE_Config:SetOption(COEOPT_VERSION, 1.6);
|
|
end
|
|
|
|
local version = COE_Config:GetSaved(COEOPT_VERSION);
|
|
|
|
if (version == 1.6) then
|
|
-- fix localized cast order in 1.7
|
|
-- --------------------------------
|
|
COE:Fix_CastOrderLocalization();
|
|
|
|
COE:Message(COESTR_UDATEDSAVED .. "1.7");
|
|
COE_Config:SetOption(COEOPT_VERSION, 1.7);
|
|
version = COE_Config:GetSaved(COEOPT_VERSION);
|
|
end
|
|
|
|
if (version == 1.7) then
|
|
-- fix cast order again to due to a typo
|
|
-- --------------------------------------
|
|
COE:Fix_CastOrderLocalization();
|
|
|
|
COE:Message(COESTR_UDATEDSAVED .. "1.8");
|
|
COE_Config:SetOption(COEOPT_VERSION, 1.8);
|
|
version = COE_Config:GetSaved(COEOPT_VERSION);
|
|
end
|
|
|
|
-- fix totem set element strings
|
|
-- ------------------------------
|
|
COE:Fix_CastOrderLocalization2();
|
|
|
|
COE_Config:SetOption(COEOPT_VERSION, 2.1);
|
|
end
|