Fixes #4 - missing totems

Added formatter file, removed whitespaces, fixed issue with tremor totem missing.
This commit is contained in:
MDGitHubRepo
2024-12-08 22:35:22 -05:00
parent f68fb493a4
commit 3076660609
3 changed files with 824 additions and 799 deletions
+7
View File
@@ -0,0 +1,7 @@
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"[lua]": {
"editor.defaultFormatter": "Koihik.vscode-lua-format"
}
}
+641 -609
View File
File diff suppressed because it is too large Load Diff
+176 -190
View File
@@ -2,14 +2,10 @@
CALL OF ELEMENTS CALL OF ELEMENTS
The All-In-One Shaman Addon The All-In-One Shaman Addon
by Wyverex (2006) by Wyverex (2006)
]] ]] if (not COE) then COE = {}; end
if( not COE ) then
COE = {};
end
COE_VERSION = 2.6 COE_VERSION = 2.6
@@ -32,14 +28,13 @@ COE["EventPrintMode"] = false;
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
These variables control frame updates These variables control frame updates
UpdateInterval sets the interval in seconds after which a UpdateInterval sets the interval in seconds after which a
frame is updated frame is updated
ForceUpdate can be used as input into Update handlers to force ForceUpdate can be used as input into Update handlers to force
an update regardless of the current timer an update regardless of the current timer
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
COE["UpdateInterval"] = 0.1; COE["UpdateInterval"] = 0.1;
COE["ForceUpdate"] = COE.UpdateInterval * 2; COE["ForceUpdate"] = COE.UpdateInterval * 2;
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
The AdvisorInterval controls how often the party/raid is The AdvisorInterval controls how often the party/raid is
@@ -50,270 +45,261 @@ COE["ForceUpdate"] = COE.UpdateInterval * 2;
COE["AdvisorInterval"] = 1; COE["AdvisorInterval"] = 1;
COE["AdvisorWarningInterval"] = 7; COE["AdvisorWarningInterval"] = 7;
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:Init METHOD: COE:Init
PURPOSE: Loads submodules and initializes data PURPOSE: Loads submodules and initializes data
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:Init() function COE:Init()
COE:Message( "Call of Elements v" .. COE_VERSION ); 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" ); -- load only for shamans
this:RegisterEvent("CHAT_MSG_SPELL_SELF_BUFF"); -- ----------------------
local _, EnglishClass = UnitClass("player");
-- register shell command if (EnglishClass ~= "SHAMAN") then
-- ----------------------- COE:Message(COESTR_NOTASHAMAN);
SlashCmdList["COE"] = COEProcessShellCommand; COE.Initialized = false;
SLASH_COE1="/coe"; else
COE.Initialized = true;
end
this:RegisterEvent("VARIABLES_LOADED");
this:RegisterEvent("CHAT_MSG_SPELL_SELF_BUFF");
-- register shell command
-- -----------------------
SlashCmdList["COE"] = COEProcessShellCommand;
SLASH_COE1 = "/coe";
end
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:FindSpellId METHOD: COE:FindSpellId
PURPOSE: Utility function that can provide spell ID from name. PURPOSE: Utility function that can provide spell ID from name.
Run in client chat with '/script COE:FindSpellName("a_spell_name")'. Run in client chat with '/script COE:FindSpellName("a_spell_name")'.
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:FindSpellId(spellNameTarget) function COE:FindSpellId(spellNameTarget)
local spellName; local spellName;
for i = 1, 1000 do for i = 1, 1000 do
spellName = GetSpellName(i, BOOKTYPE_SPELL); spellName = GetSpellName(i, BOOKTYPE_SPELL);
if (spellName == spellNameTarget) then if (spellName == spellNameTarget) then
print(spellName .. "is id: " .. i); print(spellName .. "is id: " .. i);
end end
end end
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:OnEvent METHOD: COE:OnEvent
PURPOSE: Handles frame events PURPOSE: Handles frame events
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:OnEvent( event ) function COE:OnEvent(event)
if( event == "VARIABLES_LOADED" ) then if (event == "VARIABLES_LOADED") then
-- fix saved variables if this update has to do so -- fix saved variables if this update has to do so
-- ------------------------------------------------ -- ------------------------------------------------
COE:FixSavedVariables(); COE:FixSavedVariables();
elseif (event == "CHAT_MSG_SPELL_SELF_BUFF") then elseif (event == "CHAT_MSG_SPELL_SELF_BUFF") then
if (string.find(arg1, "Mana from Totemic Recall")) then if (string.find(arg1, "Mana from Totemic Recall")) then
COE:DebugMessage("Totemic Recall initiating reset of timers."); COE:DebugMessage("Totemic Recall initiating reset of timers.");
COE_Totem:ResetTimers(); COE_Totem:ResetTimers();
end end
elseif (COE.EventPrintMode) then elseif (COE.EventPrintMode) then
COE:DebugMessage(event); COE:DebugMessage(event);
end end
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:Message METHOD: COE:Message
PURPOSE: Adds a message to the default chat frame PURPOSE: Adds a message to the default chat frame
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:Message( msg ) function COE:Message(msg)
DEFAULT_CHAT_FRAME:AddMessage( "[COE] " .. msg, 0.93, 0.83, 0.45 ); DEFAULT_CHAT_FRAME:AddMessage("[COE] " .. msg, 0.93, 0.83, 0.45);
end; end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:DebugMessage METHOD: COE:DebugMessage
PURPOSE: Adds a debug message to the default chat frame if PURPOSE: Adds a debug message to the default chat frame if
debug mode is enabled debug mode is enabled
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:DebugMessage( msg ) function COE:DebugMessage(msg)
if( COE.DebugMode ) then if (COE.DebugMode) then
DEFAULT_CHAT_FRAME:AddMessage( "[COE] " .. msg, 1, 0, 0 ); DEFAULT_CHAT_FRAME:AddMessage("[COE] " .. msg, 1, 0, 0);
end end
end; end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:Notification METHOD: COE:Notification
PURPOSE: Adds a message to the error frame in the upper PURPOSE: Adds a message to the error frame in the upper
screen center screen center
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:Notification( msg, color ) function COE:Notification(msg, color)
local col; local col;
-- choose color -- choose color
-- ------------- -- -------------
if( color == COECOL_TOTEMWARNING ) then if (color == COECOL_TOTEMWARNING) then
col = { r = 0, g = 0.6, b = 1 }; col = {r = 0, g = 0.6, b = 1};
elseif( color == COECOL_TOTEMDESTROYED ) then elseif (color == COECOL_TOTEMDESTROYED) then
col = { r = 1, g = 0.4, b = 0 }; col = {r = 1, g = 0.4, b = 0};
elseif( color == COECOL_TOTEMCLEANSING ) then elseif (color == COECOL_TOTEMCLEANSING) then
col = { r = 0, g = 1, b = 0.4 }; col = {r = 0, g = 1, b = 0.4};
else else
col = { r = 1, g = 1, b = 1 }; col = {r = 1, g = 1, b = 1};
end end
-- add message -- add message
-- ------------ -- ------------
UIErrorsFrame:AddMessage( msg, col.r, col.g, col.b, 1.0, UIERRORS_HOLD_TIME ); UIErrorsFrame:AddMessage(msg, col.r, col.g, col.b, 1.0, UIERRORS_HOLD_TIME);
end;
end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:ToggleConfigFrame METHOD: COE:ToggleConfigFrame
PURPOSE: Toggles the configuration dialog PURPOSE: Toggles the configuration dialog
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:ToggleConfigFrame() function COE:ToggleConfigFrame()
if( COE_ConfigFrame:IsVisible() ) then
COE_Config:CloseDialog()
else
COE_ConfigFrame:Show();
end
PlaySound( "igMainMenuOption" ); if (COE_ConfigFrame:IsVisible()) then
COE_Config:CloseDialog()
else
COE_ConfigFrame:Show();
end
PlaySound("igMainMenuOption");
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COEProcessShellCommand METHOD: COEProcessShellCommand
PURPOSE: Executes the entered shell command PURPOSE: Executes the entered shell command
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COEProcessShellCommand( msg ) function COEProcessShellCommand(msg)
if( msg == "" or msg == "config" ) then if (msg == "" or msg == "config") then
COE:ToggleConfigFrame(); 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 elseif (msg == "list") then
COE_Totem:ThrowSet(); COE:DisplayShellCommands();
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 elseif (msg == "nextset") then
COE_Totem:ThrowAdvisedTotem(); COE_Totem:SwitchToNextSet();
elseif( msg == "resetordering" ) then
COE_DisplayedTotems = {};
COE_Totem:Rescan();
elseif( msg == "bestheal" ) then
COE_Heal:BestHeal();
elseif( msg == "battleheal" ) then
COE_Heal:BattleHeal();
else elseif (msg == "priorset") then
local _,_,arg = string.find( msg, "set (.*)" ); COE_Totem:SwitchToPriorSet();
if( arg ) then
COE_Totem:SwitchToSet( arg ); elseif (msg == "throwset") then
end COE_Totem:ThrowSet();
end
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 end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:DisplayShellCommands METHOD: COE:DisplayShellCommands
PURPOSE: Shows a list of all shell commands PURPOSE: Shows a list of all shell commands
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:DisplayShellCommands() function COE:DisplayShellCommands()
COE:Message( COESHELL_INTRO ); COE:Message(COESHELL_INTRO);
COE:Message( COESHELL_CONFIG ); COE:Message(COESHELL_CONFIG);
COE:Message( COESHELL_LIST ); COE:Message(COESHELL_LIST);
COE:Message( COESHELL_NEXTSET ); COE:Message(COESHELL_NEXTSET);
COE:Message( COESHELL_PRIORSET ); COE:Message(COESHELL_PRIORSET);
COE:Message( COESHELL_SET ); COE:Message(COESHELL_SET);
COE:Message( COESHELL_RESTARTSET ); COE:Message(COESHELL_RESTARTSET);
COE:Message( COESHELL_RESET ); COE:Message(COESHELL_RESET);
COE:Message( COESHELL_RESETFRAMES ); COE:Message(COESHELL_RESETFRAMES);
COE:Message( COESHELL_RESETORDERING ); COE:Message(COESHELL_RESETORDERING);
COE:Message( COESHELL_RELOAD ); COE:Message(COESHELL_RELOAD);
COE:Message( COESHELL_MACRONOTE ); COE:Message(COESHELL_MACRONOTE);
COE:Message( COESHELL_THROWSET ); COE:Message(COESHELL_THROWSET);
COE:Message( COESHELL_ADVISED ); COE:Message(COESHELL_ADVISED);
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:FixSavedVariables METHOD: COE:FixSavedVariables
PURPOSE: If this addon version is higher than the one in PURPOSE: If this addon version is higher than the one in
the saved variables, check if we have to fix the the saved variables, check if we have to fix the
saved variables due to fixed bugs saved variables due to fixed bugs
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:FixSavedVariables() function COE:FixSavedVariables()
-- is the version stored in the saved variables? -- is the version stored in the saved variables?
-- ---------------------------------------------- -- ----------------------------------------------
if( not COE_Config:GetSaved( COEOPT_VERSION ) ) then if (not COE_Config:GetSaved(COEOPT_VERSION)) then
-- this is version <= v1.6 -- this is version <= v1.6
-- ------------------------ -- ------------------------
COE_Config:SetOption( COEOPT_VERSION, 1.6 ); COE_Config:SetOption(COEOPT_VERSION, 1.6);
end 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 local version = COE_Config:GetSaved(COEOPT_VERSION);
-- 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 ); 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 end