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"
}
}
+226 -194
View File
@@ -8,24 +8,20 @@
Totem Module Data Totem Module Data
]] ]] --[[ ----------------------------------------------------------------
--[[ ----------------------------------------------------------------
COE.TotemData contains a list of totem classes that are COE.TotemData contains a list of totem classes that are
returned by COE:CreateTotem returned by COE:CreateTotem
For every available totem the player has, one object is For every available totem the player has, one object is
added to this list added to this list
-------------------------------------------------------------------]] -------------------------------------------------------------------]] COE["TotemData"] =
COE["TotemData"] = {}; {};
COE["TotemCount"] = 0; COE["TotemCount"] = 0;
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
COE.MaxTotems stores the maximum number of totems per element COE.MaxTotems stores the maximum number of totems per element
This is taken right from the current game content This is taken right from the current game content
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
COE["MaxTotems"] = { Earth = 5, Fire = 5, Water = 7, Air = 7 }; COE["MaxTotems"] = {Earth = 5, Fire = 5, Water = 7, Air = 7};
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
COE.TotemsAvailable contains the number of totems available COE.TotemsAvailable contains the number of totems available
@@ -37,7 +33,6 @@ COE.TotemsAvailable["Fire"] = 0;
COE.TotemsAvailable["Water"] = 0; COE.TotemsAvailable["Water"] = 0;
COE.TotemsAvailable["Air"] = 0; COE.TotemsAvailable["Air"] = 0;
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
COE.ActiveTotems contains a pointer to the active totem of COE.ActiveTotems contains a pointer to the active totem of
each element each element
@@ -50,9 +45,8 @@ COE.TotemsAvailable["Air"] = 0;
to prevent actions that trigger SPELLCAST_STOP and are not to prevent actions that trigger SPELLCAST_STOP and are not
hooked from activating the timer accidentally hooked from activating the timer accidentally
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
COE["ActiveTotems"] = { Earth = nil, Fire = nil, Water = nil, Air = nil }; COE["ActiveTotems"] = {Earth = nil, Fire = nil, Water = nil, Air = nil};
COE["TotemPending"] = { Totem = nil, UseRank = 0, Timeout = 0.75 }; COE["TotemPending"] = {Totem = nil, UseRank = 0, Timeout = 0.75};
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
COE.CleansingTotems stores pointers to the buttons and totems COE.CleansingTotems stores pointers to the buttons and totems
@@ -60,33 +54,39 @@ COE["TotemPending"] = { Totem = nil, UseRank = 0, Timeout = 0.75 };
or fear effects or fear effects
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
COE["CleansingTotems"] = { COE["CleansingTotems"] = {
Poison = { Totem = nil, Button = nil, Warn = false }, Poison = {Totem = nil, Button = nil, Warn = false},
Disease = { Totem = nil, Button = nil, Warn = false }, Disease = {Totem = nil, Button = nil, Warn = false},
Tremor = { Totem = nil, Button = nil, Warn = false } }; Tremor = {Totem = nil, Button = nil, Warn = false}
};
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
COE.TotemSets contains the totem pointers for each set and COE.TotemSets contains the totem pointers for each set and
element element
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
COE["TotemSetCount"] = 0; COE["TotemSetCount"] = 0;
COE["TotemSets"] = { } COE["TotemSets"] = {}
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
COE.SetCycle stores which totem of the active set have COE.SetCycle stores which totem of the active set have
already been thrown already been thrown
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
COE["SetCycle"] = { Earth = false, Fire = false, Water = false, Air = false }; COE["SetCycle"] = {Earth = false, Fire = false, Water = false, Air = false};
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
COE.NoTotem is a placeholder for an empty anchor button COE.NoTotem is a placeholder for an empty anchor button
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
COE["NoTotem"] = { SpellName = "", Element = "", Texture = "Interface\\Icons\\INV_Misc_Idol_03.blp", COE["NoTotem"] = {
ToolPresent = false, Ranks = { SpellID = 0, Mana = 0, Duration = 0, Health = 0, Cooldown = 0 }, SpellName = "",
MaxRank = 1, isActive = false, CurDuration = 0, CurHealth = 0, CurCooldown = 0 }; Element = "",
Texture = "Interface\\Icons\\INV_Misc_Idol_03.blp",
ToolPresent = false,
Ranks = {SpellID = 0, Mana = 0, Duration = 0, Health = 0, Cooldown = 0},
MaxRank = 1,
isActive = false,
CurDuration = 0,
CurHealth = 0,
CurCooldown = 0
};
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:CreateTotem METHOD: COE:CreateTotem
@@ -94,23 +94,31 @@ COE["NoTotem"] = { SpellName = "", Element = "", Texture = "Interface\\Icons\\IN
PURPOSE: Returns the totem class for a new totem PURPOSE: Returns the totem class for a new totem
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:CreateTotem() function COE:CreateTotem()
return { SpellName = "", Element = "", Texture = "", return {
ToolPresent = false, Ranks = {}, MaxRank = 0, isActive = false, SpellName = "",
CurDuration = 0, CurHealth = 0, CurCooldown = 0, Element = "",
isTrinket = false, TrinketSlot = nil }; Texture = "",
ToolPresent = false,
Ranks = {},
MaxRank = 0,
isActive = false,
CurDuration = 0,
CurHealth = 0,
CurCooldown = 0,
isTrinket = false,
TrinketSlot = nil
};
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:CreateTotemRank METHOD: COE:CreateTotemRank
PURPOSE: Returns the class for a new totem rank PURPOSE: Returns the class for a new totem rank
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:CreateTotemRank() function COE:CreateTotemRank()
return { SpellID = 0, Mana = 0, Duration = 0, Health = 0, Cooldown = 0 }; return {SpellID = 0, Mana = 0, Duration = 0, Health = 0, Cooldown = 0};
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:ElementFromTool METHOD: COE:ElementFromTool
@@ -118,7 +126,7 @@ end
This is needed for the french version to work. In the This is needed for the french version to work. In the
english and german versions it just returns the input english and german versions it just returns the input
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:ElementFromTool( element ) function COE:ElementFromTool(element)
if element == COESTR_TOTEMTOOLS_EARTH then if element == COESTR_TOTEMTOOLS_EARTH then
return COESTR_ELEMENT_EARTH; return COESTR_ELEMENT_EARTH;
@@ -132,27 +140,25 @@ function COE:ElementFromTool( element )
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:LocalizedElement METHOD: COE:LocalizedElement
PURPOSE: Translates a localized element name into english PURPOSE: Translates a localized element name into english
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:LocalizedElement( element ) function COE:LocalizedElement(element)
if( element == COESTR_ELEMENT_EARTH ) then if (element == COESTR_ELEMENT_EARTH) then
return "Earth"; return "Earth";
elseif( element == COESTR_ELEMENT_FIRE ) then elseif (element == COESTR_ELEMENT_FIRE) then
return "Fire"; return "Fire";
elseif( element == COESTR_ELEMENT_WATER ) then elseif (element == COESTR_ELEMENT_WATER) then
return "Water"; return "Water";
elseif( element == COESTR_ELEMENT_AIR ) then elseif (element == COESTR_ELEMENT_AIR) then
return "Air"; return "Air";
end end
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:ScanTotems METHOD: COE:ScanTotems
@@ -161,7 +167,7 @@ end
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:ScanTotems() function COE:ScanTotems()
COE:DebugMessage( "Scanning Totems..." ); COE:DebugMessage("Scanning Totems...");
-- delete existing totem objects -- delete existing totem objects
-- ------------------------------ -- ------------------------------
@@ -174,49 +180,48 @@ function COE:ScanTotems()
-- iterate over all spells in the spellbook -- iterate over all spells in the spellbook
-- ----------------------------------------- -- -----------------------------------------
local i, k = 1; local i = 1;
while true do while true do
local SpellName, SpellRank = GetSpellName( i, BOOKTYPE_SPELL ); local SpellName, SpellRank = GetSpellName(i, BOOKTYPE_SPELL);
if not SpellName or SpellName == "Totemic Recall" then if not SpellName then do break end end
do break end;
end
-- is this a totem? -- is this a totem?
-- ----------------- -- -----------------
if( string.find( SpellName, COESTR_SCANTOTEMS ) ~= nil ) then if (SpellName ~= "Totemic Recall" and
string.find(SpellName, COESTR_SCANTOTEMS) ~= nil) then
local newtotem = true; local newtotem = true;
local totem = nil; local totem = nil;
-- get the rank value -- get the rank value
-- ------------------- -- -------------------
local _,_,rank = string.find( SpellRank, COESTR_TOTEMRANK ); local _, _, rank = string.find(SpellRank, COESTR_TOTEMRANK);
if( not rank ) then if (not rank) then
rank = 1; rank = 1;
else else
rank = tonumber( rank ); rank = tonumber(rank);
end end
-- ======================================================================= -- =======================================================================
-- check if totem already exists with another rank in the list -- check if totem already exists with another rank in the list
-- ======================================================================= -- =======================================================================
for k = 1, COE.TotemCount do for k = 1, COE.TotemCount do
if( SpellName == COE.TotemData[k].SpellName ) then if (SpellName == COE.TotemData[k].SpellName) then
-- use existing totem object -- use existing totem object
-- -------------------------- -- --------------------------
totem = COE.TotemData[k]; totem = COE.TotemData[k];
newtotem = false; newtotem = false;
break; break
end end
end end
COETotemTT:SetSpell( i, BOOKTYPE_SPELL ); COETotemTT:SetSpell(i, BOOKTYPE_SPELL);
-- ======================================================================= -- =======================================================================
-- create new totem object if not found -- create new totem object if not found
-- ======================================================================= -- =======================================================================
if( not totem ) then if (not totem) then
totem = COE:CreateTotem(); totem = COE:CreateTotem();
-- set totem spell name -- set totem spell name
@@ -226,44 +231,46 @@ function COE:ScanTotems()
-- get totem school from tooltip -- get totem school from tooltip
-- ------------------------------ -- ------------------------------
local text = COETotemTTTextLeft4; local text = COETotemTTTextLeft4;
if( text and text:GetText() ) then if (text and text:GetText()) then
local _,_, element = string.find( text:GetText(), COESTR_TOTEMTOOLS ); local _, _, element =
if( element ) then string.find(text:GetText(), COESTR_TOTEMTOOLS);
if (element) then
-- if element starts with a |, the player does -- if element starts with a |, the player does
-- not possess the needed totem for this spell -- not possess the needed totem for this spell
-- extract the color code before using the element -- extract the color code before using the element
-- ------------------------------------------------ -- ------------------------------------------------
if( string.sub( element, 1, 1 ) == "|" ) then if (string.sub(element, 1, 1) == "|") then
element = string.sub( element, 11 ); element = string.sub(element, 11);
end end
-- get element from tool -- get element from tool
-- ---------------------- -- ----------------------
element = COE:ElementFromTool( element ); element = COE:ElementFromTool(element);
-- translate element to english -- translate element to english
-- ----------------------------- -- -----------------------------
element = COE:LocalizedElement( element ); element = COE:LocalizedElement(element);
-- valid element? -- valid element?
-- --------------- -- ---------------
if( COE.TotemsAvailable[element] ~= nil ) then if (COE.TotemsAvailable[element] ~= nil) then
totem.Element = element; totem.Element = element;
COE.TotemsAvailable[element] = COE.TotemsAvailable[element] + 1; COE.TotemsAvailable[element] =
COE.TotemsAvailable[element] + 1;
else else
COE:Message( COESTR_INVALIDELEMENT .. SpellName ); COE:Message(COESTR_INVALIDELEMENT .. SpellName);
end end
end end
end end
-- get totem texture -- get totem texture
-- ------------------ -- ------------------
totem.Texture = GetSpellTexture( i, BOOKTYPE_SPELL ); totem.Texture = GetSpellTexture(i, BOOKTYPE_SPELL);
-- get tool presence -- get tool presence
-- ------------------ -- ------------------
totem.ToolPresent = COE:IsToolPresent( i ); totem.ToolPresent = COE:IsToolPresent(i);
end end
-- ======================================================================= -- =======================================================================
@@ -278,56 +285,56 @@ function COE:ScanTotems()
-- get totem mana cost from tooltip -- get totem mana cost from tooltip
-- --------------------------------- -- ---------------------------------
text = COETotemTTTextLeft2; text = COETotemTTTextLeft2;
if( text and text:GetText() ) then if (text and text:GetText()) then
local _,_, mana = string.find( text:GetText(), COESTR_TOTEMMANA ); local _, _, mana = string.find(text:GetText(), COESTR_TOTEMMANA);
if( mana ) then if (mana) then totemrank.Mana = tonumber(mana); end
totemrank.Mana = tonumber( mana );
end
end end
-- get totem duration and health -- get totem duration and health
-- ------------------------------ -- ------------------------------
totemrank.Duration, totemrank.Health, totemrank.Cooldown = COE:GetTotemDurationAndHealth( i ); totemrank.Duration, totemrank.Health, totemrank.Cooldown =
COE:GetTotemDurationAndHealth(i);
-- store rank in totem -- store rank in totem
-- -------------------- -- --------------------
totem.Ranks[rank] = totemrank; totem.Ranks[rank] = totemrank;
if( rank > totem.MaxRank ) then if (rank > totem.MaxRank) then totem.MaxRank = rank; end
totem.MaxRank = rank;
end
-- is this a new totem? -- is this a new totem?
-- --------------------- -- ---------------------
if( newtotem ) then if (newtotem) then
-- store totem -- store totem
-- ------------ -- ------------
COE.TotemCount = COE.TotemCount + 1; COE.TotemCount = COE.TotemCount + 1;
COE.TotemData[COE.TotemCount] = totem; COE.TotemData[COE.TotemCount] = totem;
-- check if it's a cleansing totem -- check if it's a cleansing totem
-- -------------------------------- -- --------------------------------
if( SpellName == COESTR_TOTEMPOISON ) then if (SpellName == COESTR_TOTEMPOISON) then
COE.CleansingTotems.Poison.Totem = totem; COE.CleansingTotems.Poison.Totem = totem;
elseif( SpellName == COESTR_TOTEMDISEASE ) then elseif (SpellName == COESTR_TOTEMDISEASE) then
COE.CleansingTotems.Disease.Totem = totem; COE.CleansingTotems.Disease.Totem = totem;
elseif( SpellName == COESTR_TOTEMTREMOR ) then elseif (SpellName == COESTR_TOTEMTREMOR) then
COE.CleansingTotems.Tremor.Totem = totem; COE.CleansingTotems.Tremor.Totem = totem;
end end
COE:DebugMessage( "Found totem: " .. SpellName ); COE:DebugMessage("Found totem: " .. SpellName);
end end
-- ======================================================================= -- =======================================================================
-- check visibility options -- check visibility options
-- ======================================================================= -- =======================================================================
if( COE_DisplayedTotems[SpellName] == nil ) then if (COE_DisplayedTotems[SpellName] == nil) then
-- perhaps a new totem. set it to default visible -- perhaps a new totem. set it to default visible
-- and reorder it when the element count is known -- and reorder it when the element count is known
-- ----------------------------------------------- -- -----------------------------------------------
COE_DisplayedTotems[SpellName] = { Order = 0, Element = totem.Element, Visible = true }; COE_DisplayedTotems[SpellName] = {
Order = 0,
Element = totem.Element,
Visible = true
};
else else
-- update old saved variables versions by adding the element -- update old saved variables versions by adding the element
-- ---------------------------------------------------------- -- ----------------------------------------------------------
@@ -347,7 +354,7 @@ function COE:ScanTotems()
-- to make it invisible anyway -- to make it invisible anyway
-- the player needs to have at least one water totem though -- the player needs to have at least one water totem though
-- -------------------------------------------------------------- -- --------------------------------------------------------------
if( COE.TotemsAvailable.Water > 0 ) then if (COE.TotemsAvailable.Water > 0) then
local trinket = COE:CreateTotem(); local trinket = COE:CreateTotem();
trinket.SpellName = "Trinket"; trinket.SpellName = "Trinket";
trinket.Element = "Water"; trinket.Element = "Water";
@@ -365,11 +372,11 @@ function COE:ScanTotems()
COE.TotemCount = COE.TotemCount + 1; COE.TotemCount = COE.TotemCount + 1;
COE.TotemData[COE.TotemCount] = trinket; COE.TotemData[COE.TotemCount] = trinket;
if( COE_DisplayedTotems[trinket.SpellName] == nil ) then if (COE_DisplayedTotems[trinket.SpellName] == nil) then
-- perhaps a new totem. set it to default visible -- perhaps a new totem. set it to default visible
-- and reorder it when the element count is known -- and reorder it when the element count is known
-- ----------------------------------------------- -- -----------------------------------------------
COE_DisplayedTotems[trinket.SpellName] = { Order = 0, Visible = true }; COE_DisplayedTotems[trinket.SpellName] = {Order = 0, Visible = true};
end end
end end
@@ -377,10 +384,11 @@ function COE:ScanTotems()
-- Finish -- Finish
-- =================================== -- ===================================
COE:DebugMessage( "Found " .. COE.TotemCount .. " totems in spellbook" .. COE:DebugMessage(
"(" .. COE.TotemsAvailable.Earth .. " Earth, " .. "Found " .. COE.TotemCount .. " totems in spellbook" .. "(" ..
COE.TotemsAvailable.Fire .. " Fire, " .. COE.TotemsAvailable.Water .. " Water, " .. COE.TotemsAvailable.Earth .. " Earth, " .. COE.TotemsAvailable.Fire ..
COE.TotemsAvailable.Air .. " Air)" ); " Fire, " .. COE.TotemsAvailable.Water .. " Water, " ..
COE.TotemsAvailable.Air .. " Air)");
-- reorder new totems -- reorder new totems
-- ------------------- -- -------------------
@@ -388,7 +396,6 @@ function COE:ScanTotems()
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:GetTotemDurationAndHealth METHOD: COE:GetTotemDurationAndHealth
@@ -398,14 +405,14 @@ end
totem duration then totem duration then
Also the health and the cooldown of the totem are returned Also the health and the cooldown of the totem are returned
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:GetTotemDurationAndHealth( spellid ) function COE:GetTotemDurationAndHealth(spellid)
COETotemTTTextRight3:SetText( nil ); COETotemTTTextRight3:SetText(nil);
COETotemTT:SetSpell( spellid, BOOKTYPE_SPELL ); COETotemTT:SetSpell(spellid, BOOKTYPE_SPELL);
text = COETotemTTTextLeft5:GetText(); text = COETotemTTTextLeft5:GetText();
if( not text ) then if (not text) then
COE:DebugMessage( "nil text with id: " .. spellid ); COE:DebugMessage("nil text with id: " .. spellid);
return 0, 0; return 0, 0;
end end
@@ -420,33 +427,34 @@ function COE:GetTotemDurationAndHealth( spellid )
-- first search for a minute specification -- first search for a minute specification
-- if we find one it is surely the totem duration -- if we find one it is surely the totem duration
-- ----------------------------------------------- -- -----------------------------------------------
local _,_,minutetext = string.find( text, COESTR_MINUTEDURATION ); local _, _, minutetext = string.find(text, COESTR_MINUTEDURATION);
if( minutetext ) then if (minutetext) then
-- calculate the duration in seconds -- calculate the duration in seconds
-- ---------------------------------- -- ----------------------------------
local min = tonumber( string.sub( minutetext, 1, 1 ) ); local min = tonumber(string.sub(minutetext, 1, 1));
local sec = tonumber( string.sub( minutetext, 3, 4 ) ) / 100 * 60; local sec = tonumber(string.sub(minutetext, 3, 4)) / 100 * 60;
duration = min * 60 + sec; duration = min * 60 + sec;
else else
_,_,minutetext = string.find( text, COESTR_MINUTEDURATION_INT ); _, _, minutetext = string.find(text, COESTR_MINUTEDURATION_INT);
if( minutetext ) then if (minutetext) then
duration = tonumber( minutetext ) * 60; duration = tonumber(minutetext) * 60;
else else
-- now test for a duration in seconds -- now test for a duration in seconds
-- ----------------------------------- -- -----------------------------------
local _,b,sectext1 = string.find( text, COESTR_SECDURATION ); local _, b, sectext1 = string.find(text, COESTR_SECDURATION);
if( sectext1 ) then if (sectext1) then
-- look if there are two second specifications -- look if there are two second specifications
-- if so, take the greate one -- if so, take the greate one
-- -------------------------------------------- -- --------------------------------------------
local _,_,sectext2 = string.find( string.sub( text, b ), COESTR_SECDURATION ); local _, _, sectext2 = string.find(string.sub(text, b),
COESTR_SECDURATION);
if( sectext2 ) then if (sectext2) then
duration = math.max( tonumber( sectext1 ), tonumber( sectext2 ) ); duration = math.max(tonumber(sectext1), tonumber(sectext2));
else else
duration = tonumber( sectext1 ); duration = tonumber(sectext1);
end end
end end
end end
@@ -457,11 +465,11 @@ function COE:GetTotemDurationAndHealth( spellid )
-- =============================================================== -- ===============================================================
for num, regex in COESTR_TOTEMHEALTH do for num, regex in COESTR_TOTEMHEALTH do
local match = { string.gfind( text, regex )() }; local match = {string.gfind(text, regex)()};
if ( table.getn(match) >= 1 ) then if (table.getn(match) >= 1) then
health = tonumber( match[1] ); health = tonumber(match[1]);
break; break
end end
end end
@@ -471,16 +479,16 @@ function COE:GetTotemDurationAndHealth( spellid )
text = COETotemTTTextRight3:GetText(); text = COETotemTTTextRight3:GetText();
if( not text ) then if (not text) then
cooldown = 0; cooldown = 0;
else else
_,_,cooldown = string.find( text, COESTR_SECDURATION ); _, _, cooldown = string.find(text, COESTR_SECDURATION);
if( cooldown ) then if (cooldown) then
cooldown = tonumber( cooldown ); cooldown = tonumber(cooldown);
else else
_,_,cooldown = string.find( text, COESTR_MINUTEDURATION_INT ); _, _, cooldown = string.find(text, COESTR_MINUTEDURATION_INT);
if( cooldown ) then if (cooldown) then
cooldown = tonumber( cooldown ) * 60; cooldown = tonumber(cooldown) * 60;
else else
cooldown = 0; cooldown = 0;
end end
@@ -491,7 +499,6 @@ function COE:GetTotemDurationAndHealth( spellid )
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:IsToolPresent METHOD: COE:IsToolPresent
@@ -501,33 +508,30 @@ end
This is done by testing the color of the "Tools:" section This is done by testing the color of the "Tools:" section
in the totem tooltip in the totem tooltip
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:IsToolPresent( spellid ) function COE:IsToolPresent(spellid)
-- get totem tooltip -- get totem tooltip
-- ------------------ -- ------------------
COETotemTT:SetSpell( spellid, BOOKTYPE_SPELL ); COETotemTT:SetSpell(spellid, BOOKTYPE_SPELL);
-- test for presence of the totem tool -- test for presence of the totem tool
-- ------------------------------------ -- ------------------------------------
local text = COETotemTTTextLeft4; local text = COETotemTTTextLeft4;
if( text and text:GetText() ) then if (text and text:GetText()) then
local _,_, element = string.find( text:GetText(), COESTR_TOTEMTOOLS ); local _, _, element = string.find(text:GetText(), COESTR_TOTEMTOOLS);
if( element ) then if (element) then
-- if element doesn't start with a |, the player -- if element doesn't start with a |, the player
-- possesses the needed totem for this spell -- possesses the needed totem for this spell
-- ------------------------------------------------ -- ------------------------------------------------
if( string.sub( element, 1, 1 ) ~= "|" ) then if (string.sub(element, 1, 1) ~= "|") then return true; end
return true;
end
end end
end end
return false; return false;
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:IsTrinketPresent METHOD: COE:IsTrinketPresent
@@ -539,12 +543,12 @@ end
function COE:IsTrinketPresent() function COE:IsTrinketPresent()
for i = 0, 1 do for i = 0, 1 do
local slot = GetInventorySlotInfo( "Trinket" .. i .. "Slot" ); local slot = GetInventorySlotInfo("Trinket" .. i .. "Slot");
local item = GetInventoryItemLink( "player", slot ); local item = GetInventoryItemLink("player", slot);
if( item ) then if (item) then
local itemname = string.find( item, COESTR_TRINKET ); local itemname = string.find(item, COESTR_TRINKET);
if( itemname ) then if (itemname) then
-- trinket is equipped -- trinket is equipped
-- -------------------- -- --------------------
return true, slot; return true, slot;
@@ -556,7 +560,6 @@ function COE:IsTrinketPresent()
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:ReorderNewTotems METHOD: COE:ReorderNewTotems
@@ -565,32 +568,50 @@ end
totems in this element totems in this element
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:ReorderNewTotems() function COE:ReorderNewTotems()
COE:DebugMessage("Executing ReorderNewTotems");
local nextslot = { Earth = COE.TotemsAvailable.Earth, Fire = COE.TotemsAvailable.Fire, local nextslot = {
Water = COE.TotemsAvailable.Water, Air = COE.TotemsAvailable.Air }; Earth = COE.TotemsAvailable.Earth,
Fire = COE.TotemsAvailable.Fire,
Water = COE.TotemsAvailable.Water,
Air = COE.TotemsAvailable.Air
};
local used = { Earth = {}, Fire = {}, Water = {}, Air = {} }; local used = {Earth = {}, Fire = {}, Water = {}, Air = {}};
local bError = false; local bError = false;
local k; COE:DebugMessage("ReorderNewTotems COE.TotemCount: " .. COE.TotemCount);
for k = 1, COE.TotemCount do for k = 1, COE.TotemCount do
local totem = COE.TotemData[k]; local totem = COE.TotemData[k];
if( COE_DisplayedTotems[totem.SpellName] ~= nil ) then COE:DebugMessage(
if( COE_DisplayedTotems[totem.SpellName].Order == 0 ) then "ReorderNewTotems processing totem: " .. totem.Element .. " " ..
totem.SpellName);
if (COE_DisplayedTotems[totem.SpellName] ~= nil) then
if (COE_DisplayedTotems[totem.SpellName].Order == 0) then
-- this totem has just been added -- this totem has just been added
-- assign the currently free slot -- assign the currently free slot
-- ------------------------------- -- -------------------------------
COE_DisplayedTotems[totem.SpellName].Order = nextslot[totem.Element]; if (not nextslot[totem.Element]) then
COE:DebugMessage(
"ReorderNewTotems nextslot[totem.Element] is nil");
end
COE_DisplayedTotems[totem.SpellName].Order =
nextslot[totem.Element];
nextslot[totem.Element] = nextslot[totem.Element] - 1; nextslot[totem.Element] = nextslot[totem.Element] - 1;
end end
-- register that this slot of the element is now in use -- register that this slot of the element is now in use
-- mark as error if already in use -- mark as error if already in use
-- ----------------------------------------------------- -- -----------------------------------------------------
if( used[totem.Element][COE_DisplayedTotems[totem.SpellName].Order] == nil ) then if (used[totem.Element][COE_DisplayedTotems[totem.SpellName].Order] ==
used[totem.Element][COE_DisplayedTotems[totem.SpellName].Order] = true; nil) then
used[totem.Element][COE_DisplayedTotems[totem.SpellName].Order] =
true;
else else
bError = true; bError = true;
end end
@@ -599,14 +620,14 @@ function COE:ReorderNewTotems()
-- are there multiple entries for one slot? -- are there multiple entries for one slot?
-- ----------------------------------------- -- -----------------------------------------
if( bError ) then if (bError) then
-- there is something wrong with the saved variables -- there is something wrong with the saved variables
-- reset all ordering and reassign it -- reset all ordering and reassign it
-- -------------------------------------------------- -- --------------------------------------------------
for k = 1, COE.TotemCount do for k = 1, COE.TotemCount do
local totem = COE.TotemData[k]; local totem = COE.TotemData[k];
if( COE_DisplayedTotems[totem.SpellName] ~= nil ) then if (COE_DisplayedTotems[totem.SpellName] ~= nil) then
COE_DisplayedTotems[totem.SpellName].Order = 0; COE_DisplayedTotems[totem.SpellName].Order = 0;
end end
end end
@@ -617,7 +638,6 @@ function COE:ReorderNewTotems()
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:InitTotemSets METHOD: COE:InitTotemSets
@@ -626,30 +646,34 @@ end
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:InitTotemSets() function COE:InitTotemSets()
local indices = { "Earth", "Fire", "Water", "Air" }; local indices = {"Earth", "Fire", "Water", "Air"};
COE.TotemSets = {}; COE.TotemSets = {};
-- for each standard set -- for each standard set
-- ---------------------- -- ----------------------
local set; for set = 1, table.getn(COE_SavedTotemSets) do
for set = 1, table.getn( COE_SavedTotemSets ) do
COE.TotemSets[set] = { Earth = nil, Fire = nil, Water = nil, Air = nil, COE.TotemSets[set] = {
CastOrder = COE_SavedTotemSets[set].CastOrder }; Earth = nil,
Fire = nil,
Water = nil,
Air = nil,
CastOrder = COE_SavedTotemSets[set].CastOrder
};
-- for each element -- for each element
-- ----------------- -- -----------------
local k, totem; for k = 1, 4 do
for k = 1,4 do
if( COE_SavedTotemSets[set][indices[k]] ~= "" ) then if (COE_SavedTotemSets[set][indices[k]] ~= "") then
-- iterate over all totems -- iterate over all totems
-- ------------------------ -- ------------------------
for totem in COE.TotemData do for totem in COE.TotemData do
if( COE.TotemData[totem].SpellName == COE_SavedTotemSets[set][indices[k]] ) then if (COE.TotemData[totem].SpellName ==
COE_SavedTotemSets[set][indices[k]]) then
COE.TotemSets[set][indices[k]] = COE.TotemData[totem]; COE.TotemSets[set][indices[k]] = COE.TotemData[totem];
end end
end end
@@ -659,35 +683,41 @@ function COE:InitTotemSets()
-- for each custom set -- for each custom set
-- -------------------- -- --------------------
for set = 1, table.getn( COE_CustomTotemSets ) do for set = 1, table.getn(COE_CustomTotemSets) do
COE.TotemSets[COESET_DEFAULT + set] = { Earth = nil, Fire = nil, Water = nil, Air = nil, COE.TotemSets[COESET_DEFAULT + set] = {
CastOrder = COE_CustomTotemSets[set].CastOrder }; Earth = nil,
Fire = nil,
Water = nil,
Air = nil,
CastOrder = COE_CustomTotemSets[set].CastOrder
};
-- for each element -- for each element
-- ----------------- -- -----------------
local k, totem; local k, totem;
for k = 1,4 do for k = 1, 4 do
if( COE_CustomTotemSets[set][indices[k]] ~= "" ) then if (COE_CustomTotemSets[set][indices[k]] ~= "") then
-- iterate over all totems -- iterate over all totems
-- ------------------------ -- ------------------------
for totem in COE.TotemData do for totem in COE.TotemData do
if( COE.TotemData[totem].SpellName == COE_CustomTotemSets[set][indices[k]] ) then if (COE.TotemData[totem].SpellName ==
COE.TotemSets[COESET_DEFAULT + set][indices[k]] = COE.TotemData[totem]; COE_CustomTotemSets[set][indices[k]]) then
COE.TotemSets[COESET_DEFAULT + set][indices[k]] =
COE.TotemData[totem];
end end
end end
end end
end end
end end
COE.TotemSetCount = table.getn( COE.TotemSets ); COE.TotemSetCount = table.getn(COE.TotemSets);
end end
--[[ ============================================================================================= --[[ =============================================================================================
F I X E S F I X E S
@@ -705,19 +735,19 @@ function COE:Fix_CastOrderLocalization()
-- for each standard set -- for each standard set
-- ---------------------- -- ----------------------
local set, k; local set, k;
for set = 1, table.getn( COE_SavedTotemSets ) do for set = 1, table.getn(COE_SavedTotemSets) do
for k = 1, 4 do for k = 1, 4 do
if( COE_SavedTotemSets[set].CastOrder[k] == "Earth" ) then if (COE_SavedTotemSets[set].CastOrder[k] == "Earth") then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_EARTH; COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_EARTH;
elseif( COE_SavedTotemSets[set].CastOrder[k] == "Fire" ) then elseif (COE_SavedTotemSets[set].CastOrder[k] == "Fire") then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_FIRE; COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_FIRE;
elseif( COE_SavedTotemSets[set].CastOrder[k] == "Water" ) then elseif (COE_SavedTotemSets[set].CastOrder[k] == "Water") then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_WATER; COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_WATER;
elseif( COE_SavedTotemSets[set].CastOrder[k] == "Air" ) then elseif (COE_SavedTotemSets[set].CastOrder[k] == "Air") then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_AIR; COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_AIR;
end end
end end
@@ -725,11 +755,10 @@ function COE:Fix_CastOrderLocalization()
-- notify user -- notify user
-- ------------ -- ------------
COE:Message( COESTR_FIXEDSETS ); COE:Message(COESTR_FIXEDSETS);
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:Fix_DisplayedTotems METHOD: COE:Fix_DisplayedTotems
@@ -739,41 +768,38 @@ function COE:Fix_DisplayedTotems()
local i; local i;
local fixed = false; local fixed = false;
foreach( COE_DisplayedTotems, function( index, value ) foreach(COE_DisplayedTotems, function(index, value)
-- is this an old-style entry? -- is this an old-style entry?
-- ---------------------------- -- ----------------------------
if( type( value ) == "boolean" ) then if (type(value) == "boolean") then
COE_DisplayedTotems[index] = { Order = 0, Visible = value }; COE_DisplayedTotems[index] = {Order = 0, Visible = value};
fixed = true; fixed = true;
elseif( type( value ) == "table" ) then elseif (type(value) == "table") then
if( COE_DisplayedTotems[index].Visible == nil ) then if (COE_DisplayedTotems[index].Visible == nil) then
COE_DisplayedTotems[index].Visible = true; COE_DisplayedTotems[index].Visible = true;
fixed = true; fixed = true;
end end
if( COE_DisplayedTotems[index].Order == nil ) then if (COE_DisplayedTotems[index].Order == nil) then
COE_DisplayedTotems[index].Order = 0; COE_DisplayedTotems[index].Order = 0;
fixed = true; fixed = true;
end end
else else
COE_DisplayedTotems[index] = { Order = 0, Visible = value }; COE_DisplayedTotems[index] = {Order = 0, Visible = value};
fixed = true; fixed = true;
end end
end ); end);
-- notify user -- notify user
-- ------------ -- ------------
if( fixed ) then if (fixed) then COE:Message(COESTR_FIXEDDISPLAY); end
COE:Message( COESTR_FIXEDDISPLAY );
end
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:Fix_CastOrderLocalization2 METHOD: COE:Fix_CastOrderLocalization2
@@ -785,19 +811,22 @@ function COE:Fix_CastOrderLocalization2()
-- for each standard set -- for each standard set
-- ---------------------- -- ----------------------
local set, k; local set, k;
for set = 1, table.getn( COE_SavedTotemSets ) do for set = 1, table.getn(COE_SavedTotemSets) do
for k = 1, 4 do for k = 1, 4 do
if( COE_SavedTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_EARTH ) then if (COE_SavedTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_EARTH) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_EARTH; COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_EARTH;
elseif( COE_SavedTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_FIRE ) then elseif (COE_SavedTotemSets[set].CastOrder[k] ==
COESTR_TOTEMTOOLS_FIRE) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_FIRE; COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_FIRE;
elseif( COE_SavedTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_WATER ) then elseif (COE_SavedTotemSets[set].CastOrder[k] ==
COESTR_TOTEMTOOLS_WATER) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_WATER; COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_WATER;
elseif( COE_SavedTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_AIR ) then elseif (COE_SavedTotemSets[set].CastOrder[k] ==
COESTR_TOTEMTOOLS_AIR) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_AIR; COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_AIR;
end end
end end
@@ -805,19 +834,22 @@ function COE:Fix_CastOrderLocalization2()
-- for each custom set -- for each custom set
-- -------------------- -- --------------------
for set = 1, table.getn( COE_CustomTotemSets ) do for set = 1, table.getn(COE_CustomTotemSets) do
for k = 1, 4 do for k = 1, 4 do
if( COE_CustomTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_EARTH ) then if (COE_CustomTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_EARTH) then
COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_EARTH; COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_EARTH;
elseif( COE_CustomTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_FIRE ) then elseif (COE_CustomTotemSets[set].CastOrder[k] ==
COESTR_TOTEMTOOLS_FIRE) then
COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_FIRE; COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_FIRE;
elseif( COE_CustomTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_WATER ) then elseif (COE_CustomTotemSets[set].CastOrder[k] ==
COESTR_TOTEMTOOLS_WATER) then
COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_WATER; COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_WATER;
elseif( COE_CustomTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_AIR ) then elseif (COE_CustomTotemSets[set].CastOrder[k] ==
COESTR_TOTEMTOOLS_AIR) then
COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_AIR; COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_AIR;
end end
end end
+70 -84
View File
@@ -5,11 +5,7 @@
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
@@ -40,7 +36,6 @@ COE["EventPrintMode"] = false;
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
scanned for debuffs that are curable by totems scanned for debuffs that are curable by totems
@@ -50,31 +45,30 @@ 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 -- load only for shamans
-- ---------------------- -- ----------------------
local _, EnglishClass = UnitClass( "player" ); local _, EnglishClass = UnitClass("player");
if( EnglishClass ~= "SHAMAN" ) then if (EnglishClass ~= "SHAMAN") then
COE:Message( COESTR_NOTASHAMAN ); COE:Message(COESTR_NOTASHAMAN);
COE.Initialized = false; COE.Initialized = false;
else else
COE.Initialized = true; COE.Initialized = true;
this:RegisterEvent( "VARIABLES_LOADED" ); this:RegisterEvent("VARIABLES_LOADED");
this:RegisterEvent("CHAT_MSG_SPELL_SELF_BUFF"); this:RegisterEvent("CHAT_MSG_SPELL_SELF_BUFF");
-- register shell command -- register shell command
-- ----------------------- -- -----------------------
SlashCmdList["COE"] = COEProcessShellCommand; SlashCmdList["COE"] = COEProcessShellCommand;
SLASH_COE1="/coe"; SLASH_COE1 = "/coe";
end end
end end
@@ -101,9 +95,9 @@ end
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();
@@ -125,10 +119,9 @@ end
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
@@ -136,12 +129,11 @@ end;
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
@@ -149,28 +141,27 @@ end;
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
@@ -179,74 +170,70 @@ end;
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
function COE:ToggleConfigFrame() function COE:ToggleConfigFrame()
if( COE_ConfigFrame:IsVisible() ) then if (COE_ConfigFrame:IsVisible()) then
COE_Config:CloseDialog() COE_Config:CloseDialog()
else else
COE_ConfigFrame:Show(); COE_ConfigFrame:Show();
end end
PlaySound( "igMainMenuOption" ); 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 elseif (msg == "list") then
COE:DisplayShellCommands(); COE:DisplayShellCommands();
elseif( msg == "nextset" ) then elseif (msg == "nextset") then
COE_Totem:SwitchToNextSet(); COE_Totem:SwitchToNextSet();
elseif( msg == "priorset" ) then elseif (msg == "priorset") then
COE_Totem:SwitchToPriorSet(); COE_Totem:SwitchToPriorSet();
elseif( msg == "throwset" ) then elseif (msg == "throwset") then
COE_Totem:ThrowSet(); COE_Totem:ThrowSet();
elseif( msg == "restartset" ) then elseif (msg == "restartset") then
COE_Totem:ResetSetCycle(); COE_Totem:ResetSetCycle();
elseif( msg == "reset" ) then elseif (msg == "reset") then
COE_Totem:ResetTimers(); COE_Totem:ResetTimers();
elseif( msg == "reload" ) then elseif (msg == "reload") then
COE_Totem:Rescan(); COE_Totem:Rescan();
elseif( msg == "resetframes" ) then elseif (msg == "resetframes") then
COE_Totem:ResetFrames(); COE_Totem:ResetFrames();
elseif( msg == "advised" ) then elseif (msg == "advised") then
COE_Totem:ThrowAdvisedTotem(); COE_Totem:ThrowAdvisedTotem();
elseif( msg == "resetordering" ) then elseif (msg == "resetordering") then
COE_DisplayedTotems = {}; COE_DisplayedTotems = {};
COE_Totem:Rescan(); COE_Totem:Rescan();
elseif( msg == "bestheal" ) then elseif (msg == "bestheal") then
COE_Heal:BestHeal(); COE_Heal:BestHeal();
elseif( msg == "battleheal" ) then elseif (msg == "battleheal") then
COE_Heal:BattleHeal(); COE_Heal:BattleHeal();
else else
local _,_,arg = string.find( msg, "set (.*)" ); local _, _, arg = string.find(msg, "set (.*)");
if( arg ) then if (arg) then COE_Totem:SwitchToSet(arg); end
COE_Totem:SwitchToSet( arg );
end
end end
end end
--[[ ---------------------------------------------------------------- --[[ ----------------------------------------------------------------
METHOD: COE:DisplayShellCommands METHOD: COE:DisplayShellCommands
@@ -254,24 +241,23 @@ end
-------------------------------------------------------------------]] -------------------------------------------------------------------]]
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
@@ -283,37 +269,37 @@ 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 ); local version = COE_Config:GetSaved(COEOPT_VERSION);
if( version == 1.6 ) then if (version == 1.6) then
-- fix localized cast order in 1.7 -- fix localized cast order in 1.7
-- -------------------------------- -- --------------------------------
COE:Fix_CastOrderLocalization(); COE:Fix_CastOrderLocalization();
COE:Message( COESTR_UDATEDSAVED .. "1.7" ); COE:Message(COESTR_UDATEDSAVED .. "1.7");
COE_Config:SetOption( COEOPT_VERSION, 1.7 ); COE_Config:SetOption(COEOPT_VERSION, 1.7);
version = COE_Config:GetSaved( COEOPT_VERSION ); version = COE_Config:GetSaved(COEOPT_VERSION);
end end
if( version == 1.7 ) then if (version == 1.7) then
-- fix cast order again to due to a typo -- fix cast order again to due to a typo
-- -------------------------------------- -- --------------------------------------
COE:Fix_CastOrderLocalization(); COE:Fix_CastOrderLocalization();
COE:Message( COESTR_UDATEDSAVED .. "1.8" ); COE:Message(COESTR_UDATEDSAVED .. "1.8");
COE_Config:SetOption( COEOPT_VERSION, 1.8 ); COE_Config:SetOption(COEOPT_VERSION, 1.8);
version = COE_Config:GetSaved( COEOPT_VERSION ); version = COE_Config:GetSaved(COEOPT_VERSION);
end end
-- fix totem set element strings -- fix totem set element strings
-- ------------------------------ -- ------------------------------
COE:Fix_CastOrderLocalization2(); COE:Fix_CastOrderLocalization2();
COE_Config:SetOption( COEOPT_VERSION, 2.1 ); COE_Config:SetOption(COEOPT_VERSION, 2.1);
end end