Merge pull request #6 from MDGitHubRepo/Issue-#5-throwset-fixes
Issue #5 throwset fixes
This commit is contained in:
@@ -47,6 +47,12 @@ COE.TotemsAvailable["Air"] = 0;
|
||||
-------------------------------------------------------------------]]
|
||||
COE["ActiveTotems"] = {Earth = nil, Fire = nil, Water = nil, Air = nil};
|
||||
COE["TotemPending"] = {Totem = nil, UseRank = 0, Timeout = 0.75};
|
||||
COE["PendingTotems"] = {
|
||||
Earth = {Totem = nil, Rank = 0, TimeoutStartMS = 0},
|
||||
Fire = {Totem = nil, Rank = 0, TimeoutStartMS = 0},
|
||||
Water = {Totem = nil, Rank = 0, TimeoutStartMS = 0},
|
||||
Air = {Totem = nil, Rank = 0, TimeoutStartMS = 0}
|
||||
};
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
COE.CleansingTotems stores pointers to the buttons and totems
|
||||
|
||||
+293
-139
@@ -8,18 +8,13 @@
|
||||
|
||||
Totem Module / Logical
|
||||
|
||||
]]
|
||||
|
||||
if( not COE_Totem ) then
|
||||
COE_Totem = {};
|
||||
end
|
||||
]] if (not COE_Totem) then COE_Totem = {}; end
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
stores the original functions hooked by SetupTimerHooks()
|
||||
-------------------------------------------------------------------]]
|
||||
COE_Totem["TimerHooks"] = {};
|
||||
|
||||
|
||||
--[[ =============================================================================================
|
||||
|
||||
L O G I C
|
||||
@@ -54,16 +49,16 @@ end
|
||||
PURPOSE: Throws the totem with the specified named id
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:ThrowTotem(element, id)
|
||||
|
||||
if( not COE.Initialized ) then
|
||||
return;
|
||||
end
|
||||
COE:DebugMessage(
|
||||
"COE_Totem:ThrowTotem element and id: " .. element .. " " .. id);
|
||||
if (not COE.Initialized) then return; end
|
||||
|
||||
-- get associated button
|
||||
-- ----------------------
|
||||
local button = getglobal("COETotem" .. element .. id);
|
||||
if (button == nil) then
|
||||
COE:Message("Invalid Totem");
|
||||
|
||||
return;
|
||||
end
|
||||
|
||||
@@ -79,7 +74,6 @@ function COE_Totem:ThrowTotem( element, id )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:RankModifierDown
|
||||
|
||||
@@ -105,7 +99,6 @@ function COE_Totem:RankModifierDown()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COESched_AdviseTotem
|
||||
|
||||
@@ -117,16 +110,17 @@ function COESched_AdviseTotem( totem, msg )
|
||||
if (COE_Config:GetSaved(COEOPT_ADVISOR) == 1 and totem.Warn) then
|
||||
-- issue warning
|
||||
-- --------------
|
||||
COE:Notification( string.format( COESTR_CLEANSINGTOTEM, msg ), COECOL_TOTEMCLEANSING );
|
||||
COE:Notification(string.format(COESTR_CLEANSINGTOTEM, msg),
|
||||
COECOL_TOTEMCLEANSING);
|
||||
|
||||
-- reschedule
|
||||
-- -----------
|
||||
Chronos.scheduleByName( "COEAdvise" .. msg, COE.AdvisorWarningInterval, COESched_AdviseTotem, totem, msg );
|
||||
Chronos.scheduleByName("COEAdvise" .. msg, COE.AdvisorWarningInterval,
|
||||
COESched_AdviseTotem, totem, msg);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COESched_RunAdvisor
|
||||
|
||||
@@ -137,9 +131,7 @@ function COESched_RunAdvisor()
|
||||
|
||||
-- advisor still activated?
|
||||
-- -------------------------
|
||||
if( COE_Config:GetSaved( COEOPT_ADVISOR ) == 0 ) then
|
||||
return;
|
||||
end
|
||||
if (COE_Config:GetSaved(COEOPT_ADVISOR) == 0) then return; end
|
||||
|
||||
local warnPoison, warnDisease, warnTremor = false, false, false;
|
||||
local poison, disease, tremor;
|
||||
@@ -156,9 +148,7 @@ function COESched_RunAdvisor()
|
||||
-- -----------
|
||||
local i;
|
||||
for i = 1, GetNumPartyMembers() do
|
||||
if( warnPoison and warnDisease and warnTremor ) then
|
||||
break;
|
||||
end
|
||||
if (warnPoison and warnDisease and warnTremor) then break end
|
||||
|
||||
-- scan party member
|
||||
-- ------------------
|
||||
@@ -171,7 +161,8 @@ function COESched_RunAdvisor()
|
||||
-- scan party member's pet
|
||||
-- ------------------------
|
||||
if (UnitExists("partypet" .. i)) then
|
||||
poison, disease, tremor = COE_Totem:ScanTargetForDebuff( "partypet" .. i );
|
||||
poison, disease, tremor = COE_Totem:ScanTargetForDebuff(
|
||||
"partypet" .. i);
|
||||
|
||||
warnPoison = warnPoison or poison;
|
||||
warnDisease = warnDisease or disease;
|
||||
@@ -199,7 +190,8 @@ function COESched_RunAdvisor()
|
||||
|
||||
if (not COE.CleansingTotems.Disease.Warn) then
|
||||
COE.CleansingTotems.Disease.Warn = true;
|
||||
COESched_AdviseTotem( COE.CleansingTotems.Disease, COESTR_TOTEMDISEASE );
|
||||
COESched_AdviseTotem(COE.CleansingTotems.Disease,
|
||||
COESTR_TOTEMDISEASE);
|
||||
end
|
||||
else
|
||||
COE.CleansingTotems.Disease.Warn = false;
|
||||
@@ -223,7 +215,6 @@ function COESched_RunAdvisor()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ScanTargetForDebuff
|
||||
|
||||
@@ -284,7 +275,6 @@ function COE_Totem:ScanTargetForDebuff( target )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ThrowAdvisedTotem
|
||||
|
||||
@@ -315,7 +305,6 @@ function COE_Totem:ThrowAdvisedTotem()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:IsAdvisedTotem
|
||||
|
||||
@@ -323,9 +312,12 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:IsAdvisedTotem(totem)
|
||||
|
||||
if( (COE.CleansingTotems.Tremor.Warn and totem == COE.CleansingTotems.Tremor.Totem) or
|
||||
(COE.CleansingTotems.Disease.Warn and totem == COE.CleansingTotems.Disease.Totem) or
|
||||
(COE.CleansingTotems.Poison.Warn and totem == COE.CleansingTotems.Poison.Totem) ) then
|
||||
if ((COE.CleansingTotems.Tremor.Warn and totem ==
|
||||
COE.CleansingTotems.Tremor.Totem) or
|
||||
(COE.CleansingTotems.Disease.Warn and totem ==
|
||||
COE.CleansingTotems.Disease.Totem) or
|
||||
(COE.CleansingTotems.Poison.Warn and totem ==
|
||||
COE.CleansingTotems.Poison.Totem)) then
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
@@ -333,14 +325,12 @@ function COE_Totem:IsAdvisedTotem( totem )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ =============================================================================================
|
||||
|
||||
T O T E M - S E T S
|
||||
|
||||
================================================================================================]]
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:SwitchNamedSet
|
||||
|
||||
@@ -369,7 +359,6 @@ function COE_Totem:SwitchNamedSet()
|
||||
return false;
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:SwitchPVPSet
|
||||
|
||||
@@ -396,7 +385,7 @@ function COE_Totem:SwitchPVPSet()
|
||||
COE_Totem:SwitchToSet(COE.LastActiveSet);
|
||||
else
|
||||
COE_Totem:SwitchToSet(COEUI_DEFAULTSET);
|
||||
end;
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@@ -405,7 +394,6 @@ function COE_Totem:SwitchPVPSet()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:SwitchToNextSet
|
||||
|
||||
@@ -438,14 +426,14 @@ function COE_Totem:SwitchToNextSet()
|
||||
else
|
||||
-- switch to next custom set
|
||||
-- --------------------------
|
||||
COE_Totem:SwitchToSet( COE_CustomTotemSets[activeset - COESET_DEFAULT + 1].Name );
|
||||
COE_Totem:SwitchToSet(
|
||||
COE_CustomTotemSets[activeset - COESET_DEFAULT + 1].Name);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:SwitchToPriorSet
|
||||
|
||||
@@ -467,7 +455,8 @@ function COE_Totem:SwitchToPriorSet()
|
||||
-- default set is active
|
||||
-- switch to last custom set
|
||||
-- ---------------------------
|
||||
COE_Totem:SwitchToSet( COE_CustomTotemSets[COE.TotemSetCount - COESET_DEFAULT].Name );
|
||||
COE_Totem:SwitchToSet(COE_CustomTotemSets[COE.TotemSetCount -
|
||||
COESET_DEFAULT].Name);
|
||||
|
||||
elseif (activeset == COESET_DEFAULT + 1) then
|
||||
-- first custom set is active
|
||||
@@ -478,14 +467,14 @@ function COE_Totem:SwitchToPriorSet()
|
||||
else
|
||||
-- switch to prior custom set
|
||||
-- ---------------------------
|
||||
COE_Totem:SwitchToSet( COE_CustomTotemSets[activeset - COESET_DEFAULT - 1].Name );
|
||||
COE_Totem:SwitchToSet(
|
||||
COE_CustomTotemSets[activeset - COESET_DEFAULT - 1].Name);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:SwitchToSet
|
||||
|
||||
@@ -493,9 +482,7 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:SwitchToSet(name)
|
||||
|
||||
if( COE_Config:GetSaved( COEOPT_ENABLESETS ) == 0 ) then
|
||||
return;
|
||||
end
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLESETS) == 0) then return; end
|
||||
|
||||
local pvpset = false;
|
||||
|
||||
@@ -508,7 +495,7 @@ function COE_Totem:SwitchToSet( name )
|
||||
-- ----------
|
||||
set = i;
|
||||
pvpset = i ~= COESET_DEFAULT;
|
||||
break;
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
@@ -520,14 +507,12 @@ function COE_Totem:SwitchToSet( name )
|
||||
-- set found
|
||||
-- ----------
|
||||
set = COESET_DEFAULT + i;
|
||||
break;
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if( not set ) then
|
||||
return;
|
||||
end
|
||||
if (not set) then return; end
|
||||
|
||||
-- activate set if not already active
|
||||
-- chech this to stop notification spamming in a duel
|
||||
@@ -535,9 +520,7 @@ function COE_Totem:SwitchToSet( name )
|
||||
if (COE_Config:GetSaved(COEOPT_ACTIVESET) ~= set) then
|
||||
COE_Config:ActivateSet(set);
|
||||
|
||||
if( not pvpset ) then
|
||||
COE.LastActiveSet = name;
|
||||
end
|
||||
if (not pvpset) then COE.LastActiveSet = name; end
|
||||
|
||||
-- reset set cycle
|
||||
-- ----------------
|
||||
@@ -550,7 +533,6 @@ function COE_Totem:SwitchToSet( name )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ThrowSet
|
||||
|
||||
@@ -558,6 +540,7 @@ end
|
||||
yet thrown
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:ThrowSet()
|
||||
COE:DebugMessage("Method Executing: ThrowSet");
|
||||
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLESETS) == 1) then
|
||||
|
||||
@@ -565,13 +548,19 @@ function COE_Totem:ThrowSet()
|
||||
-- check which totem to throw
|
||||
-- =======================================================================
|
||||
local activeset = COE_Config:GetSaved(COEOPT_ACTIVESET);
|
||||
COE:DebugMessage("ThrowSet activeset value: " .. activeset);
|
||||
|
||||
local k;
|
||||
for k = 1, 4 do
|
||||
COE:DebugMessage("ThrowSet k value: " .. k);
|
||||
|
||||
local element = COE:LocalizedElement(
|
||||
COE.TotemSets[activeset].CastOrder[k]);
|
||||
COE:DebugMessage("ThrowSet element value: " .. element);
|
||||
|
||||
local element = COE:LocalizedElement( COE.TotemSets[activeset].CastOrder[k] );
|
||||
local totem = COE.TotemSets[activeset][element];
|
||||
|
||||
COE:DebugMessage("ThrowSet COE.SetCycle[element] value: " ..
|
||||
tostring(COE.SetCycle[element]));
|
||||
if (COE.SetCycle[element] == false and totem) then
|
||||
|
||||
if (totem.isTrinket) then
|
||||
@@ -579,7 +568,8 @@ function COE_Totem:ThrowSet()
|
||||
if (totem.TrinketSlot) then
|
||||
-- first check if the trinket is already usable
|
||||
-- ---------------------------------------------
|
||||
local start, duration = GetInventoryItemCooldown( "player", totem.TrinketSlot );
|
||||
local start, duration =
|
||||
GetInventoryItemCooldown("player", totem.TrinketSlot);
|
||||
|
||||
if (start == 0 and duration == 0) then
|
||||
UseInventoryItem(totem.TrinketSlot);
|
||||
@@ -588,12 +578,24 @@ function COE_Totem:ThrowSet()
|
||||
end
|
||||
|
||||
else
|
||||
|
||||
COE:DebugMessage("ThrowSet casting totem: " .. element);
|
||||
-- first check if the totem is already usable
|
||||
-- -------------------------------------------
|
||||
local start, duration = GetSpellCooldown( totem.Ranks[totem.MaxRank].SpellID, BOOKTYPE_SPELL );
|
||||
local start, duration = GetSpellCooldown(
|
||||
totem.Ranks[totem.MaxRank]
|
||||
.SpellID, BOOKTYPE_SPELL);
|
||||
COE:DebugMessage("ThrowSet spell cooldown duration: " ..
|
||||
duration);
|
||||
|
||||
if (start == 0 and duration == 0) then
|
||||
CastSpellByName( COE.TotemSets[activeset][element].SpellName );
|
||||
|
||||
COE:DebugMessage(
|
||||
"ThrowSet casting spell: " ..
|
||||
COE.TotemSets[activeset][element].SpellName);
|
||||
CastSpellByName(COE.TotemSets[activeset][element]
|
||||
.SpellName);
|
||||
-- COE_Totem:SetPendingTotem(totem, totem.MaxRank);
|
||||
return;
|
||||
end
|
||||
end
|
||||
@@ -602,7 +604,6 @@ function COE_Totem:ThrowSet()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ResetSetCycle
|
||||
|
||||
@@ -615,7 +616,6 @@ function COE_Totem:ResetSetCycle()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ =============================================================================================
|
||||
|
||||
T I M E R - L O G I C
|
||||
@@ -628,87 +628,247 @@ end
|
||||
PURPOSE: Sets up or clears a pending totem
|
||||
The pending totem's timer is activated on the next
|
||||
successful SPELLCAST_STOP or removed if it times out first
|
||||
|
||||
PURPOSE: Sets up or clears a pending totem. The pending totem's
|
||||
timer is activated when the spell is identified as cast. If
|
||||
the spell is not identified as cast within 1 seconds, then
|
||||
the pending status is removed.
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:SetPendingTotem(totem, rank)
|
||||
COE:DebugMessage("Method Executing: SetPendingTotem");
|
||||
|
||||
if (totem) then
|
||||
COE:DebugMessage( "Setting pending totem: " .. totem.SpellName .. " with rank: " .. rank );
|
||||
COE.TotemPending.Totem = totem;
|
||||
COE.TotemPending.UseRank = rank;
|
||||
|
||||
-- get the current lag
|
||||
-- Set PendingTotems for the given totem element type
|
||||
COE:DebugMessage("SetPendingTotem PendingTotems being set: " ..
|
||||
totem.SpellName .. " with rank: " .. rank);
|
||||
COE.PendingTotems[totem.Element].Totem = totem;
|
||||
COE.PendingTotems[totem.Element].Rank = rank;
|
||||
-- COE.PendingTotems[totem.Element].TimeoutStartMS = GetTime();
|
||||
|
||||
-- get the current lag - Not used but saving if needed
|
||||
-- --------------------
|
||||
local _,_,lag = GetNetStats();
|
||||
local timeout = lag / 1000 + COE.TotemPending.Timeout;
|
||||
-- local _, _, lag = GetNetStats();
|
||||
-- local timeout = lag / 1000 + COE.TotemPending.Timeout;
|
||||
local timeoutSec = 1;
|
||||
|
||||
-- use lag + 0.5 seconds as pending timeout
|
||||
-- -----------------------------------------
|
||||
COE:DebugMessage( "Setting pending timeout to: " .. timeout .. " msec" );
|
||||
COE:DebugMessage("SetPendingTotem Setting pending timeout to: " ..
|
||||
timeoutSec .. " seconds");
|
||||
|
||||
Chronos.scheduleByName( "COE_Pending", timeout, COESched_CheckPendingTotem );
|
||||
else
|
||||
COE.TotemPending.Totem = nil;
|
||||
COE.TotemPending.UseRank = 0;
|
||||
end
|
||||
Chronos.scheduleByName("COE_Pending", timeoutSec,
|
||||
COESched_CheckPendingTotem, totem.Element);
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COESched_CheckPendingTotem
|
||||
|
||||
PURPOSE: Clears the pending totem if it is still active
|
||||
|
||||
PURPOSE: Clears the pending totem if it is still pending.
|
||||
-------------------------------------------------------------------]]
|
||||
function COESched_CheckPendingTotem()
|
||||
function COESched_CheckPendingTotem(element)
|
||||
COE:DebugMessage("Executing Method: COESched_CheckPendingTotem");
|
||||
|
||||
-- if there is still a pending totem it has timed out
|
||||
-- ---------------------------------------------------
|
||||
if( COE.TotemPending.Totem ) then
|
||||
COE:DebugMessage( "Pending totem has timed out: " .. COE.TotemPending.Totem.SpellName );
|
||||
COE_Totem:SetPendingTotem( nil );
|
||||
if (element) then
|
||||
COE:DebugMessage("COESched_CheckPendingTotem for element: " .. element);
|
||||
|
||||
COE_Totem:ClearPendingTotem(COE.PendingTotems[element]);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: ClearPendingTotem
|
||||
|
||||
PURPOSE: Clears the pending totem.
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:ClearPendingTotem(pendingTotem)
|
||||
COE:DebugMessage("Executing Method: ClearPendingTotem");
|
||||
|
||||
if (pendingTotem) then
|
||||
pendingTotem.Totem = nil;
|
||||
pendingTotem.Rank = nil;
|
||||
end
|
||||
end
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:GetTotemFromText
|
||||
|
||||
PURPOSE: Identifies a totem from the text value passed in. Can
|
||||
return a nil totem.
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:GetTotemFromText(text)
|
||||
local totem;
|
||||
COE:DebugMessage("GetTotemFromText for text value: " .. text);
|
||||
|
||||
-- find the totem
|
||||
for k = 1, COE.TotemCount do
|
||||
if (string.find(text, COE.TotemData[k].SpellName)) then
|
||||
-- use existing totem object
|
||||
-- --------------------------
|
||||
totem = COE.TotemData[k];
|
||||
|
||||
COE:DebugMessage("GetTotemFromText found totem: " .. totem.SpellName);
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
return totem;
|
||||
|
||||
end
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ActivateTotem
|
||||
|
||||
PURPOSE: Activates the totem timer and deactivates a
|
||||
still active timer of the same element
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:ActivateTotem(totem)
|
||||
COE:DebugMessage("Method Executing: ActivateTotem with totem parameter " ..
|
||||
totem.SpellName);
|
||||
|
||||
local pendingTotemObj = COE.PendingTotems[totem.Element];
|
||||
|
||||
if (pendingTotemObj and pendingTotemObj.Totem) then
|
||||
COE:DebugMessage("ActivateTotem identified pending totem : " ..
|
||||
pendingTotemObj.Totem.SpellName);
|
||||
|
||||
-- deactivate still active totem of the same element
|
||||
-- --------------------------------------------------
|
||||
local active = COE.ActiveTotems[totem.Element];
|
||||
if (active) then COE_Totem:DeactivateTimer(active); end
|
||||
|
||||
local pendingTotem = pendingTotemObj.Totem;
|
||||
local pendingTotemRank = pendingTotemObj.Rank;
|
||||
|
||||
-- activate timer
|
||||
-- ---------------
|
||||
Chronos.startTimer("COE" .. totem.SpellName);
|
||||
totem.CurDuration = pendingTotem.Ranks[pendingTotemRank].Duration;
|
||||
totem.CurHealth = pendingTotem.Ranks[pendingTotemRank].Health;
|
||||
|
||||
-- activate cooldown timer if this totem has a cooldown
|
||||
-- -----------------------------------------------------
|
||||
if (pendingTotem.Ranks[pendingTotemRank].Cooldown > 0) then
|
||||
totem.CurCooldown = pendingTotem.Ranks[pendingTotemRank].Cooldown;
|
||||
Chronos.startTimer("COECooldown" .. totem.SpellName);
|
||||
Chronos.scheduleByName("COECooldownSwitch" .. totem.SpellName,
|
||||
totem.CurCooldown, COESched_CooldownEnd,
|
||||
totem);
|
||||
end
|
||||
|
||||
-- activate warning timers
|
||||
-- ------------------------
|
||||
if (totem.CurDuration >= 10) then
|
||||
Chronos.scheduleByName("COEWarn10" .. totem.SpellName,
|
||||
totem.CurDuration - 10,
|
||||
COESched_ExpirationWarning, 10, totem);
|
||||
end
|
||||
Chronos.scheduleByName("COEWarn5" .. totem.SpellName,
|
||||
totem.CurDuration - 5,
|
||||
COESched_ExpirationWarning, 5, totem);
|
||||
Chronos.scheduleByName("COEWarn0" .. totem.SpellName, totem.CurDuration,
|
||||
COESched_ExpirationWarning, 0, totem);
|
||||
|
||||
-- mark totem as active
|
||||
-- ---------------------
|
||||
COE.ActiveTotems[pendingTotem.Element] = totem;
|
||||
totem.isActive = true;
|
||||
|
||||
-- set totem in timer frame
|
||||
-- -------------------------
|
||||
if (COE_Config:GetSaved(COEOPT_TIMERFRAME) == 1) then
|
||||
getglobal("COETimer" .. pendingTotem.Element).totem = totem;
|
||||
COETimerFrame:Show();
|
||||
end
|
||||
|
||||
-- mark totem as thrown if in current set
|
||||
-- ---------------------------------------
|
||||
local activeset = COE_Config:GetSaved(COEOPT_ACTIVESET);
|
||||
|
||||
if (COE.TotemSets[activeset][totem.Element] and
|
||||
COE.TotemSets[activeset][totem.Element].SpellName == totem.SpellName) then
|
||||
|
||||
COE:DebugMessage("ActivateTotem Element " .. totem.Element ..
|
||||
" in current cycle: SET");
|
||||
COE.SetCycle[totem.Element] = true;
|
||||
end
|
||||
|
||||
-- clear pending totem
|
||||
-- --------------------
|
||||
COE_Totem:ClearPendingTotem(pendingTotemObj);
|
||||
|
||||
-- if in timers only mode, reconfigure the totem bar
|
||||
-- --------------------------------------------------
|
||||
if (COE_Config:GetSaved(COEOPT_DISPLAYMODE) == COEMODE_TIMERSONLY) then
|
||||
COE_Totem:Invalidate(getglobal("COE" .. totem.Element .. "Frame"),
|
||||
true, true, true);
|
||||
COETotemFrame.Reconfigure = true;
|
||||
else
|
||||
-- otherwise just invalidate the dynamic buttons
|
||||
-- ----------------------------------------------
|
||||
COE_Totem:Invalidate(getglobal("COE" .. totem.Element .. "Frame"),
|
||||
false, false, true);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
DEPRECATED: Use ActivateTotem
|
||||
METHOD: COE_Totem:ActivatePendingTotem
|
||||
|
||||
PURPOSE: Activates the pending totem timer and deactivates a
|
||||
still active timer of the same element
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:ActivatePendingTotem(totem)
|
||||
COE:DebugMessage("Method Executing: ActivatePendingTotem with totem parameter ".. totem.SpellName);
|
||||
COE:DebugMessage(
|
||||
"Method Executing: ActivatePendingTotem with totem parameter " ..
|
||||
totem.SpellName);
|
||||
|
||||
-- deactivate still active totem of the same element
|
||||
-- --------------------------------------------------
|
||||
COE:DebugMessage("Method Executing: ActivatePendingTotem - identifying active totems of type".. COE.TotemPending.Totem.Element);
|
||||
COE:DebugMessage(
|
||||
"ActivatePendingTotem - identifying active totems of type" ..
|
||||
COE.TotemPending.Totem.Element);
|
||||
local active = COE.ActiveTotems[COE.TotemPending.Totem.Element];
|
||||
if( active ) then
|
||||
COE_Totem:DeactivateTimer( active );
|
||||
end
|
||||
if (active) then COE_Totem:DeactivateTimer(active); end
|
||||
|
||||
-- activate timer
|
||||
-- ---------------
|
||||
Chronos.startTimer("COE" .. totem.SpellName);
|
||||
totem.CurDuration = COE.TotemPending.Totem.Ranks[COE.TotemPending.UseRank].Duration;
|
||||
totem.CurHealth = COE.TotemPending.Totem.Ranks[COE.TotemPending.UseRank].Health;
|
||||
totem.CurDuration = COE.TotemPending.Totem.Ranks[COE.TotemPending.UseRank]
|
||||
.Duration;
|
||||
totem.CurHealth = COE.TotemPending.Totem.Ranks[COE.TotemPending.UseRank]
|
||||
.Health;
|
||||
|
||||
-- activate cooldown timer if this totem has a cooldown
|
||||
-- -----------------------------------------------------
|
||||
if (COE.TotemPending.Totem.Ranks[COE.TotemPending.UseRank].Cooldown > 0) then
|
||||
totem.CurCooldown = COE.TotemPending.Totem.Ranks[COE.TotemPending.UseRank].Cooldown;
|
||||
totem.CurCooldown = COE.TotemPending.Totem.Ranks[COE.TotemPending
|
||||
.UseRank].Cooldown;
|
||||
Chronos.startTimer("COECooldown" .. totem.SpellName);
|
||||
Chronos.scheduleByName( "COECooldownSwitch" .. totem.SpellName, totem.CurCooldown, COESched_CooldownEnd, totem );
|
||||
Chronos.scheduleByName("COECooldownSwitch" .. totem.SpellName,
|
||||
totem.CurCooldown, COESched_CooldownEnd, totem);
|
||||
end
|
||||
|
||||
-- activate warning timers
|
||||
-- ------------------------
|
||||
if (totem.CurDuration >= 10) then
|
||||
Chronos.scheduleByName( "COEWarn10" .. totem.SpellName, totem.CurDuration - 10, COESched_ExpirationWarning, 10, totem );
|
||||
Chronos.scheduleByName("COEWarn10" .. totem.SpellName,
|
||||
totem.CurDuration - 10,
|
||||
COESched_ExpirationWarning, 10, totem);
|
||||
end
|
||||
Chronos.scheduleByName( "COEWarn5" .. totem.SpellName, totem.CurDuration - 5, COESched_ExpirationWarning, 5, totem );
|
||||
Chronos.scheduleByName( "COEWarn0" .. totem.SpellName, totem.CurDuration, COESched_ExpirationWarning, 0, totem );
|
||||
Chronos.scheduleByName("COEWarn5" .. totem.SpellName, totem.CurDuration - 5,
|
||||
COESched_ExpirationWarning, 5, totem);
|
||||
Chronos.scheduleByName("COEWarn0" .. totem.SpellName, totem.CurDuration,
|
||||
COESched_ExpirationWarning, 0, totem);
|
||||
|
||||
-- mark totem as active
|
||||
-- ---------------------
|
||||
@@ -740,17 +900,18 @@ function COE_Totem:ActivatePendingTotem( totem )
|
||||
-- if in timers only mode, reconfigure the totem bar
|
||||
-- --------------------------------------------------
|
||||
if (COE_Config:GetSaved(COEOPT_DISPLAYMODE) == COEMODE_TIMERSONLY) then
|
||||
COE_Totem:Invalidate( getglobal( "COE" .. totem.Element .. "Frame" ), true, true, true );
|
||||
COE_Totem:Invalidate(getglobal("COE" .. totem.Element .. "Frame"), true,
|
||||
true, true);
|
||||
COETotemFrame.Reconfigure = true;
|
||||
else
|
||||
-- otherwise just invalidate the dynamic buttons
|
||||
-- ----------------------------------------------
|
||||
COE_Totem:Invalidate( getglobal( "COE" .. totem.Element .. "Frame" ), false, false, true );
|
||||
COE_Totem:Invalidate(getglobal("COE" .. totem.Element .. "Frame"),
|
||||
false, false, true);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:DeactivateTimer
|
||||
|
||||
@@ -788,19 +949,20 @@ function COE_Totem:DeactivateTimer( totem )
|
||||
if (COE.TotemSets[activeset][totem.Element] and
|
||||
COE.TotemSets[activeset][totem.Element].SpellName == totem.SpellName) then
|
||||
|
||||
COE:DebugMessage( "Element " .. totem.Element .. " in current cycle: UNSET" );
|
||||
COE:DebugMessage("DeactivateTimer Element " .. totem.Element ..
|
||||
" in current cycle: UNSET");
|
||||
COE.SetCycle[totem.Element] = false;
|
||||
end
|
||||
|
||||
-- invalidate dynamic buttons
|
||||
-- ---------------------------
|
||||
COE_Totem:Invalidate( getglobal( "COE" .. totem.Element .. "Frame" ), false, false, true );
|
||||
COE_Totem:Invalidate(getglobal("COE" .. totem.Element .. "Frame"),
|
||||
false, false, true);
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:IsTimerActive
|
||||
|
||||
@@ -808,16 +970,14 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:IsTimerActive(totem)
|
||||
|
||||
if( not totem ) then
|
||||
return false;
|
||||
end
|
||||
if (not totem) then return false; end
|
||||
|
||||
return (totem.CurDuration > 0) and
|
||||
(totem.CurDuration - Chronos.getTimer( "COE" .. totem.SpellName ) > 0);
|
||||
(totem.CurDuration - Chronos.getTimer("COE" .. totem.SpellName) >
|
||||
0);
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:GetTimeLeft
|
||||
|
||||
@@ -833,7 +993,6 @@ function COE_Totem:GetTimeLeft( totem )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:GetCooldownLeft
|
||||
|
||||
@@ -844,19 +1003,21 @@ function COE_Totem:GetCooldownLeft( totem )
|
||||
if (totem.CurCooldown == 0) then
|
||||
return 0;
|
||||
else
|
||||
return totem.CurCooldown - Chronos.getTimer( "COECooldown" .. totem.SpellName );
|
||||
return totem.CurCooldown -
|
||||
Chronos.getTimer("COECooldown" .. totem.SpellName);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COESched_ExpirationWarning
|
||||
|
||||
PURPOSE: Issues an expiration warning for the specified totem
|
||||
-------------------------------------------------------------------]]
|
||||
function COESched_ExpirationWarning(timemark, totem)
|
||||
COE:DebugMessage("Method Executing: COESched_ExpirationWarning with totem parameter ".. totem.SpellName);
|
||||
COE:DebugMessage(
|
||||
"Method Executing: COESched_ExpirationWarning with totem parameter " ..
|
||||
totem.SpellName);
|
||||
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLETOTEMBAR) == 1 and
|
||||
COE_Config:GetSaved(COEOPT_ENABLETIMERS) == 1 and
|
||||
@@ -870,16 +1031,17 @@ function COESched_ExpirationWarning( timemark, totem )
|
||||
end
|
||||
|
||||
if (timemark > 0) then
|
||||
COE:Notification( string.format( COESTR_TOTEMWARNING, text, timemark ), COECOL_TOTEMWARNING );
|
||||
COE:Notification(string.format(COESTR_TOTEMWARNING, text, timemark),
|
||||
COECOL_TOTEMWARNING);
|
||||
else
|
||||
COE:Notification( string.format( COESTR_TOTEMEXPIRED, text ), COECOL_TOTEMDESTROYED );
|
||||
COE:Notification(string.format(COESTR_TOTEMEXPIRED, text),
|
||||
COECOL_TOTEMDESTROYED);
|
||||
COE_Totem:DeactivateTimer(totem);
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COESched_CooldownEnd
|
||||
|
||||
@@ -893,7 +1055,6 @@ function COESched_CooldownEnd( totem )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:TotemDamage
|
||||
|
||||
@@ -914,7 +1075,8 @@ function COE_Totem:TotemDamage()
|
||||
if (COE.TotemData[i].SpellName == match[1]) then
|
||||
-- subtract damage
|
||||
-- ----------------
|
||||
COE.TotemData[i].CurHealth = COE.TotemData[i].CurHealth - tonumber( match[2] );
|
||||
COE.TotemData[i].CurHealth =
|
||||
COE.TotemData[i].CurHealth - tonumber(match[2]);
|
||||
|
||||
-- totem destroyed?
|
||||
-- -----------------
|
||||
@@ -922,28 +1084,31 @@ function COE_Totem:TotemDamage()
|
||||
if (COE.TotemData[i].CurHealth <= 0) then
|
||||
COE:DebugMessage(match[1] .. " destroyed");
|
||||
|
||||
if( COE_Config:GetSaved( COEOPT_TIMERNOTIFICATIONS ) == 1 ) then
|
||||
COE:Notification( string.format( COESTR_TOTEMDESTROYED, COE.TotemData[i].SpellName ),
|
||||
if (COE_Config:GetSaved(COEOPT_TIMERNOTIFICATIONS) ==
|
||||
1) then
|
||||
COE:Notification(string.format(
|
||||
COESTR_TOTEMDESTROYED,
|
||||
COE.TotemData[i].SpellName),
|
||||
COECOL_TOTEMDESTROYED);
|
||||
end
|
||||
|
||||
COE_Totem:DeactivateTimer(COE.TotemData[i]);
|
||||
else
|
||||
COE:DebugMessage( match[1] .. " took " .. match[2] .. " damage. " ..
|
||||
COE:DebugMessage(
|
||||
match[1] .. " took " .. match[2] .. " damage. " ..
|
||||
COE.TotemData[i].CurHealth .. " health left");
|
||||
end
|
||||
end
|
||||
break;
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
break;
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ResetTimers
|
||||
|
||||
@@ -961,7 +1126,6 @@ function COE_Totem:ResetTimers()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ =============================================================================================
|
||||
|
||||
T I M E R - H O O K S
|
||||
@@ -977,6 +1141,7 @@ end
|
||||
original function afterwards
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:SetupTimerHooks()
|
||||
COE:DebugMessage("Method Executing: SetupTimerHooks");
|
||||
|
||||
COE_Totem.TimerHooks["UseAction"] = UseAction;
|
||||
UseAction = function(id, book, onself)
|
||||
@@ -1004,7 +1169,6 @@ function COE_Totem:SetupTimerHooks()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:HookUseAction
|
||||
|
||||
@@ -1012,12 +1176,10 @@ end
|
||||
a totem
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:HookUseAction(id, book)
|
||||
|
||||
COE:DebugMessage("Method Executing: HookUseAction");
|
||||
-- use only when timers are enabled
|
||||
-- ---------------------------------
|
||||
if( COE_Config:GetSaved( COEOPT_ENABLETIMERS ) == 0 ) then
|
||||
return;
|
||||
end
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLETIMERS) == 0) then return; end
|
||||
|
||||
-- get action tooltip
|
||||
-- -------------------
|
||||
@@ -1033,7 +1195,8 @@ function COE_Totem:HookUseAction( id, book )
|
||||
trinket = text == COESTR_TRINKET_TOOLTIP;
|
||||
|
||||
for i = 1, COE.TotemCount do
|
||||
if( (trinket and COE.TotemData[i].isTrinket) or COE.TotemData[i].SpellName == text ) then
|
||||
if ((trinket and COE.TotemData[i].isTrinket) or
|
||||
COE.TotemData[i].SpellName == text) then
|
||||
|
||||
if (COE.TotemData[i].isTrinket) then
|
||||
rank = 0;
|
||||
@@ -1065,14 +1228,12 @@ function COE_Totem:HookUseAction( id, book )
|
||||
|
||||
end
|
||||
|
||||
|
||||
-- no totem spell. remove pending totem if set
|
||||
-- --------------------------------------------
|
||||
COE_Totem:SetPendingTotem(nil);
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:HookCastSpell
|
||||
|
||||
@@ -1080,12 +1241,11 @@ end
|
||||
a totem
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:HookCastSpell(id, book)
|
||||
COE:DebugMessage("Method Executing: HookCastSpell");
|
||||
|
||||
-- use only when timers are enabled
|
||||
-- ---------------------------------
|
||||
if( COE_Config:GetSaved( COEOPT_ENABLETIMERS ) == 0 ) then
|
||||
return;
|
||||
end
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLETIMERS) == 0) then return; end
|
||||
|
||||
-- get the associated totem object
|
||||
-- --------------------------------
|
||||
@@ -1108,7 +1268,6 @@ function COE_Totem:HookCastSpell( id, book )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:HookCastSpellByName
|
||||
|
||||
@@ -1116,12 +1275,11 @@ end
|
||||
a totem
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:HookCastSpellByName(SpellName)
|
||||
COE:DebugMessage("Method Executing: HookCastSpellByName");
|
||||
|
||||
-- use only when timers are enabled
|
||||
-- ---------------------------------
|
||||
if( COE_Config:GetSaved( COEOPT_ENABLETIMERS ) == 0 ) then
|
||||
return;
|
||||
end
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLETIMERS) == 0) then return; end
|
||||
|
||||
-- extract rank information
|
||||
-- -------------------------
|
||||
@@ -1153,7 +1311,6 @@ function COE_Totem:HookCastSpellByName( SpellName )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:HookUseInventoryItem
|
||||
|
||||
@@ -1161,18 +1318,16 @@ end
|
||||
a totem
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:HookUseInventoryItem(slotid)
|
||||
COE:DebugMessage("Method Executing: HookUseInventoryItem");
|
||||
|
||||
-- use only when timers are enabled
|
||||
-- ---------------------------------
|
||||
if( COE_Config:GetSaved( COEOPT_ENABLETIMERS ) == 0 ) then
|
||||
return;
|
||||
end
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLETIMERS) == 0) then return; end
|
||||
|
||||
-- only use for trinket slots
|
||||
-- ---------------------------
|
||||
if( slotid ~= GetInventorySlotInfo( "Trinket0Slot" ) and slotid ~= GetInventorySlotInfo( "Trinket1Slot" ) ) then
|
||||
return;
|
||||
end
|
||||
if (slotid ~= GetInventorySlotInfo("Trinket0Slot") and slotid ~=
|
||||
GetInventorySlotInfo("Trinket1Slot")) then return; end
|
||||
|
||||
-- iterate through out totems and find the trinket totem
|
||||
-- ------------------------------------------------------
|
||||
@@ -1197,4 +1352,3 @@ function COE_Totem:HookUseInventoryItem( slotid )
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
+148
-192
@@ -8,18 +8,18 @@
|
||||
|
||||
Totem Module / Visual
|
||||
|
||||
]]
|
||||
|
||||
if( not COE_Totem ) then
|
||||
COE_Totem = {};
|
||||
end
|
||||
]] if (not COE_Totem) then COE_Totem = {}; end
|
||||
|
||||
COEUI_BUTTONGAP = 4;
|
||||
|
||||
COE_Totem.FlexTime = 0.3;
|
||||
|
||||
COEFramePositions = { Earth = { x = 0, y = 0 }, Fire = { x = 0, y = 0 },
|
||||
Water = { x = 0, y = 0 }, Air = { x = 0, y = 0 } }
|
||||
COEFramePositions = {
|
||||
Earth = {x = 0, y = 0},
|
||||
Fire = {x = 0, y = 0},
|
||||
Water = {x = 0, y = 0},
|
||||
Air = {x = 0, y = 0}
|
||||
}
|
||||
|
||||
COEDynamic = {n = 7, nil, nil, nil, nil, nil, nil, nil};
|
||||
|
||||
@@ -46,9 +46,7 @@ COEDynamic = { n = 7, nil, nil, nil, nil, nil, nil, nil };
|
||||
function COE_Totem:InitMainFrame()
|
||||
-- addon loaded?
|
||||
-- --------------
|
||||
if( not COE.Initialized ) then
|
||||
return;
|
||||
end
|
||||
if (not COE.Initialized) then return; end
|
||||
|
||||
-- init frame properties
|
||||
-- ----------------------
|
||||
@@ -73,7 +71,6 @@ function COE_Totem:InitMainFrame()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:OnMainFrameEvent
|
||||
|
||||
@@ -94,7 +91,8 @@ function COE_Totem:OnMainFrameEvent( event )
|
||||
-- start advisor schedule
|
||||
-- -----------------------
|
||||
if (COE_Config:GetSaved(COEOPT_ADVISOR) == 1) then
|
||||
Chronos.scheduleByName( "COEAdvise", COE.AdvisorInterval, COESched_RunAdvisor );
|
||||
Chronos.scheduleByName("COEAdvise", COE.AdvisorInterval,
|
||||
COESched_RunAdvisor);
|
||||
end
|
||||
|
||||
-- get current element frame coordinates
|
||||
@@ -108,9 +106,7 @@ function COE_Totem:OnMainFrameEvent( event )
|
||||
|
||||
elseif (event == "PLAYER_TARGET_CHANGED") then
|
||||
|
||||
if( COE_Config:GetSaved( COEOPT_ENABLETOTEMBAR ) == 0 ) then
|
||||
return;
|
||||
end
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLETOTEMBAR) == 0) then return; end
|
||||
|
||||
-- Switch to named set if appropriate
|
||||
-- -----------------------------------
|
||||
@@ -126,14 +122,12 @@ function COE_Totem:OnMainFrameEvent( event )
|
||||
-- ----------------------------
|
||||
COE_Totem:ResetTimers();
|
||||
|
||||
elseif ( event == "CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE" or
|
||||
event == "CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS" or
|
||||
event == "CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE" or
|
||||
event == "CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS" ) then
|
||||
elseif (event == "CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE" or event ==
|
||||
"CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS" or event ==
|
||||
"CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE" or event ==
|
||||
"CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS") then
|
||||
|
||||
if( COE_Config:GetSaved( COEOPT_ENABLETOTEMBAR ) == 0 ) then
|
||||
return;
|
||||
end
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLETOTEMBAR) == 0) then return; end
|
||||
|
||||
-- Assign totem damage
|
||||
-- --------------------
|
||||
@@ -142,7 +136,6 @@ function COE_Totem:OnMainFrameEvent( event )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ConfigureTotemButtons
|
||||
|
||||
@@ -153,9 +146,7 @@ function COE_Totem:ConfigureTotemButtons()
|
||||
|
||||
-- reconfiguration necessary?
|
||||
-- ---------------------------
|
||||
if( not COETotemFrame.Reconfigure ) then
|
||||
return;
|
||||
end
|
||||
if (not COETotemFrame.Reconfigure) then return; end
|
||||
|
||||
local i;
|
||||
local buttons = {Earth = 0, Fire = 0, Water = 0, Air = 0};
|
||||
@@ -213,7 +204,9 @@ function COE_Totem:ConfigureTotemButtons()
|
||||
-- check if this totem's order is before or after
|
||||
-- the normal order of this element's active totem
|
||||
-- ------------------------------------------------
|
||||
local activeorder = COE_DisplayedTotems[COE.ActiveTotems[totem.Element].SpellName].Order;
|
||||
local activeorder =
|
||||
COE_DisplayedTotems[COE.ActiveTotems[totem.Element]
|
||||
.SpellName].Order;
|
||||
if (order < activeorder) then
|
||||
order = order + 1;
|
||||
end
|
||||
@@ -238,10 +231,10 @@ function COE_Totem:ConfigureTotemButtons()
|
||||
-- check if this totem's order is before or after
|
||||
-- the normal order of this set's element totem
|
||||
-- -----------------------------------------------
|
||||
local activeorder = COE_DisplayedTotems[COE.TotemSets[activeset][totem.Element].SpellName].Order;
|
||||
if( order < activeorder ) then
|
||||
order = order + 1;
|
||||
end
|
||||
local activeorder =
|
||||
COE_DisplayedTotems[COE.TotemSets[activeset][totem.Element]
|
||||
.SpellName].Order;
|
||||
if (order < activeorder) then order = order + 1; end
|
||||
|
||||
button = getglobal("COETotem" .. totem.Element .. order);
|
||||
else
|
||||
@@ -285,7 +278,6 @@ function COE_Totem:ConfigureTotemButtons()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateAllFrames
|
||||
|
||||
@@ -327,7 +319,6 @@ function COE_Totem:UpdateAllFrames()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ResetFrames
|
||||
|
||||
@@ -348,7 +339,6 @@ function COE_Totem:ResetFrames()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ =============================================================================================
|
||||
|
||||
F R A M E
|
||||
@@ -379,7 +369,6 @@ end
|
||||
|
||||
------------------------------------------------------------------------------------------------]]
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:InitFrame
|
||||
|
||||
@@ -388,9 +377,7 @@ end
|
||||
function COE_Totem:InitFrame()
|
||||
-- addon loaded?
|
||||
-- --------------
|
||||
if( not COE.Initialized ) then
|
||||
return;
|
||||
end
|
||||
if (not COE.Initialized) then return; end
|
||||
|
||||
-- init update timer
|
||||
-- ------------------
|
||||
@@ -410,7 +397,6 @@ function COE_Totem:InitFrame()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:OnFrameEvent
|
||||
|
||||
@@ -436,7 +422,6 @@ function COE_Totem:OnFrameEvent( event )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:Invalidate
|
||||
|
||||
@@ -449,21 +434,14 @@ function COE_Totem:Invalidate( frame, Anchor, Static, Dynamic )
|
||||
-- a previous call to Invaldiate with a true parameter
|
||||
-- ----------------------------------------------------
|
||||
|
||||
if( Anchor ) then
|
||||
frame.Updates.Anchor = true;
|
||||
end
|
||||
if (Anchor) then frame.Updates.Anchor = true; end
|
||||
|
||||
if( Static ) then
|
||||
frame.Updates.Static = true;
|
||||
end
|
||||
if (Static) then frame.Updates.Static = true; end
|
||||
|
||||
if( Dynamic ) then
|
||||
frame.Updates.Dynamic = true;
|
||||
end
|
||||
if (Dynamic) then frame.Updates.Dynamic = true; end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateFrame
|
||||
|
||||
@@ -474,9 +452,7 @@ function COE_Totem:UpdateFrame( elapsed )
|
||||
-- check if visual update is necessary
|
||||
-- ------------------------------------
|
||||
this.UpdateTime = this.UpdateTime + elapsed;
|
||||
if( this.UpdateTime <= COE.UpdateInterval ) then
|
||||
return;
|
||||
end
|
||||
if (this.UpdateTime <= COE.UpdateInterval) then return; end
|
||||
|
||||
-- show frame?
|
||||
-- ------------
|
||||
@@ -494,9 +470,7 @@ function COE_Totem:UpdateFrame( elapsed )
|
||||
|
||||
-- invalidate all if moving
|
||||
-- -------------------------
|
||||
if( this.isMoving ) then
|
||||
COE_Totem:Invalidate( this, true, true, true );
|
||||
end
|
||||
if (this.isMoving) then COE_Totem:Invalidate(this, true, true, true); end
|
||||
|
||||
-- configure buttons for this frame
|
||||
-- ---------------------------------
|
||||
@@ -504,9 +478,7 @@ function COE_Totem:UpdateFrame( elapsed )
|
||||
|
||||
-- configure anchor button
|
||||
-- ------------------------
|
||||
if( this.Updates.Anchor ) then
|
||||
COE_Totem:UpdateAnchorButton();
|
||||
end
|
||||
if (this.Updates.Anchor) then COE_Totem:UpdateAnchorButton(); end
|
||||
|
||||
-- only update if at least the anchor
|
||||
-- totem button has a totem assigned
|
||||
@@ -516,24 +488,18 @@ function COE_Totem:UpdateFrame( elapsed )
|
||||
|
||||
-- update the static flex-totems
|
||||
-- ------------------------------
|
||||
if( this.Updates.Static ) then
|
||||
COE_Totem:UpdateStatic();
|
||||
end
|
||||
if (this.Updates.Static) then COE_Totem:UpdateStatic(); end
|
||||
|
||||
-- update the dynamic flex-totems
|
||||
-- -------------------------------
|
||||
if( this.Updates.Dynamic ) then
|
||||
COE_Totem:UpdateDynamic();
|
||||
end
|
||||
if (this.Updates.Dynamic) then COE_Totem:UpdateDynamic(); end
|
||||
else
|
||||
this.AnchorTotem:Hide();
|
||||
end
|
||||
|
||||
-- adjust other frames when dragging
|
||||
-- ----------------------------------
|
||||
if( this.IsMoving ) then
|
||||
COE_Totem:AdjustDraggedFrames();
|
||||
end
|
||||
if (this.IsMoving) then COE_Totem:AdjustDraggedFrames(); end
|
||||
|
||||
-- reset invalidation flags
|
||||
-- -------------------------
|
||||
@@ -547,7 +513,6 @@ function COE_Totem:UpdateFrame( elapsed )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateAnchorButton
|
||||
|
||||
@@ -563,7 +528,8 @@ function COE_Totem:UpdateAnchorButton()
|
||||
this.AnchorTotem = getglobal("COETotem" .. this.Element .. "1");
|
||||
|
||||
elseif (mode == COEMODE_TIMERSONLY) then
|
||||
if( COE.ActiveTotems[this.Element] or COE_TotemBars[this.Element].Mode == "Open" ) then
|
||||
if (COE.ActiveTotems[this.Element] or COE_TotemBars[this.Element].Mode ==
|
||||
"Open") then
|
||||
this.AnchorTotem = getglobal("COETotem" .. this.Element .. "1");
|
||||
else
|
||||
this.AnchorTotem = getglobal("COETotem" .. this.Element .. "None");
|
||||
@@ -571,7 +537,8 @@ function COE_Totem:UpdateAnchorButton()
|
||||
end
|
||||
|
||||
else
|
||||
if( COE.TotemSets[activeset][this.Element] or COE_TotemBars[this.Element].Mode == "Open" ) then
|
||||
if (COE.TotemSets[activeset][this.Element] or
|
||||
COE_TotemBars[this.Element].Mode == "Open") then
|
||||
this.AnchorTotem = getglobal("COETotem" .. this.Element .. "1");
|
||||
else
|
||||
this.AnchorTotem = getglobal("COETotem" .. this.Element .. "None");
|
||||
@@ -589,7 +556,6 @@ function COE_Totem:UpdateAnchorButton()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateStatic
|
||||
|
||||
@@ -597,7 +563,8 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:UpdateStatic()
|
||||
|
||||
local inConfig = COE.ConfigureBarMode or COE.ConfigureOrderMode or COE.ConfigureSetsMode;
|
||||
local inConfig = COE.ConfigureBarMode or COE.ConfigureOrderMode or
|
||||
COE.ConfigureSetsMode;
|
||||
|
||||
if (this.Mode == "Closed" and not COE.ConfigureBarMode and
|
||||
not COE.ConfigureOrderMode and not COE.ConfigureSetsMode) then
|
||||
@@ -632,8 +599,10 @@ function COE_Totem:UpdateStatic()
|
||||
|
||||
-- only show button if it has a totem
|
||||
-- -----------------------------------
|
||||
if( button.totem and (COE_DisplayedTotems[button.totem.SpellName].Visible or inConfig) ) then
|
||||
button:SetPoint( this.Point, lastvisible, this.RelPoint, this.XSpacing, this.YSpacing );
|
||||
if (button.totem and
|
||||
(COE_DisplayedTotems[button.totem.SpellName].Visible or inConfig)) then
|
||||
button:SetPoint(this.Point, lastvisible, this.RelPoint,
|
||||
this.XSpacing, this.YSpacing);
|
||||
button:Show();
|
||||
lastvisible = button;
|
||||
else
|
||||
@@ -643,7 +612,6 @@ function COE_Totem:UpdateStatic()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateDynamic
|
||||
|
||||
@@ -665,13 +633,15 @@ function COE_Totem:UpdateDynamic()
|
||||
|
||||
if (this.AnchorTotem.totem == COE.NoTotem) then
|
||||
if (this.FlexCount > 1) then
|
||||
lastvisible = getglobal( "COETotem" .. this.Element .. this.FlexCount - 1 );
|
||||
lastvisible = getglobal("COETotem" .. this.Element ..
|
||||
this.FlexCount - 1);
|
||||
else
|
||||
lastvisible = getglobal("COETotem" .. this.Element .. "None");
|
||||
end
|
||||
start = this.FlexCount;
|
||||
else
|
||||
lastvisible = getglobal( "COETotem" .. this.Element .. this.FlexCount );
|
||||
lastvisible =
|
||||
getglobal("COETotem" .. this.Element .. this.FlexCount);
|
||||
start = this.FlexCount + 1;
|
||||
end
|
||||
|
||||
@@ -684,12 +654,15 @@ function COE_Totem:UpdateDynamic()
|
||||
button = getglobal("COETotem" .. this.Element .. i);
|
||||
button:ClearAllPoints();
|
||||
|
||||
if( button.totem and COE_DisplayedTotems[button.totem.SpellName].Visible ) then
|
||||
if( COE.ActiveTotems[this.Element] == button.totem and COE_Totem:IsTimerActive( button.totem ) ) then
|
||||
if (button.totem and
|
||||
COE_DisplayedTotems[button.totem.SpellName].Visible) then
|
||||
if (COE.ActiveTotems[this.Element] == button.totem and
|
||||
COE_Totem:IsTimerActive(button.totem)) then
|
||||
-- show button if it is active
|
||||
-- ----------------------------
|
||||
button:SetScale(0.8);
|
||||
button:SetPoint( this.Point, lastvisible, this.RelPoint, this.XSpacing, this.YSpacing );
|
||||
button:SetPoint(this.Point, lastvisible, this.RelPoint,
|
||||
this.XSpacing, this.YSpacing);
|
||||
button:Show();
|
||||
lastvisible = button;
|
||||
|
||||
@@ -697,7 +670,8 @@ function COE_Totem:UpdateDynamic()
|
||||
-- show button if it has a running cooldown
|
||||
-- -----------------------------------------
|
||||
button:SetScale(0.8);
|
||||
button:SetPoint( this.Point, lastvisible, this.RelPoint, this.XSpacing, this.YSpacing );
|
||||
button:SetPoint(this.Point, lastvisible, this.RelPoint,
|
||||
this.XSpacing, this.YSpacing);
|
||||
button:Show();
|
||||
lastvisible = button;
|
||||
|
||||
@@ -705,7 +679,8 @@ function COE_Totem:UpdateDynamic()
|
||||
-- show button if it is advised
|
||||
-- -----------------------------
|
||||
button:SetScale(0.8);
|
||||
button:SetPoint( this.Point, lastvisible, this.RelPoint, this.XSpacing, this.YSpacing );
|
||||
button:SetPoint(this.Point, lastvisible, this.RelPoint,
|
||||
this.XSpacing, this.YSpacing);
|
||||
button:Show();
|
||||
lastvisible = button;
|
||||
|
||||
@@ -732,7 +707,8 @@ function COE_Totem:UpdateDynamic()
|
||||
-- show button if it has a totem and the bar is expanded
|
||||
-- ------------------------------------------------------
|
||||
button:SetScale(0.8);
|
||||
button:SetPoint( this.Point, lastvisible, this.RelPoint, this.XSpacing, this.YSpacing );
|
||||
button:SetPoint(this.Point, lastvisible, this.RelPoint,
|
||||
this.XSpacing, this.YSpacing);
|
||||
button:Show();
|
||||
lastvisible = button;
|
||||
|
||||
@@ -759,7 +735,8 @@ function COE_Totem:UpdateDynamic()
|
||||
-- show button if it is active
|
||||
-- ----------------------------
|
||||
button:SetScale(0.8);
|
||||
button:SetPoint( this.Point, lastvisible, this.RelPoint, this.XSpacing, this.YSpacing );
|
||||
button:SetPoint(this.Point, lastvisible, this.RelPoint,
|
||||
this.XSpacing, this.YSpacing);
|
||||
button:Show();
|
||||
lastvisible = button;
|
||||
|
||||
@@ -767,7 +744,8 @@ function COE_Totem:UpdateDynamic()
|
||||
-- show button if it has a running cooldown
|
||||
-- -----------------------------------------
|
||||
button:SetScale(0.8);
|
||||
button:SetPoint( this.Point, lastvisible, this.RelPoint, this.XSpacing, this.YSpacing );
|
||||
button:SetPoint(this.Point, lastvisible, this.RelPoint,
|
||||
this.XSpacing, this.YSpacing);
|
||||
button:Show();
|
||||
lastvisible = button;
|
||||
|
||||
@@ -775,7 +753,8 @@ function COE_Totem:UpdateDynamic()
|
||||
-- show button if it isa advised
|
||||
-- ------------------------------
|
||||
button:SetScale(0.8);
|
||||
button:SetPoint( this.Point, lastvisible, this.RelPoint, this.XSpacing, this.YSpacing );
|
||||
button:SetPoint(this.Point, lastvisible, this.RelPoint,
|
||||
this.XSpacing, this.YSpacing);
|
||||
button:Show();
|
||||
lastvisible = button;
|
||||
|
||||
@@ -789,7 +768,6 @@ function COE_Totem:UpdateDynamic()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:COESched_HideDynamicButtons
|
||||
|
||||
@@ -803,7 +781,6 @@ function COESched_HideDynamicButtons( frame )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:SetFrameDirection
|
||||
|
||||
@@ -848,7 +825,6 @@ function COE_Totem:SetFrameDirection( frame, direction )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:AdjustDraggedFrames
|
||||
|
||||
@@ -858,9 +834,7 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:AdjustDraggedFrames()
|
||||
|
||||
if( COE_Config:GetSaved( COEOPT_GROUPBARS ) == 0 ) then
|
||||
return;
|
||||
end
|
||||
if (COE_Config:GetSaved(COEOPT_GROUPBARS) == 0) then return; end
|
||||
|
||||
local x, y, k, dx, dy;
|
||||
|
||||
@@ -884,7 +858,8 @@ function COE_Totem:AdjustDraggedFrames()
|
||||
-- the relative position to the frame being dragged
|
||||
-- -------------------------------------------------
|
||||
frame:ClearAllPoints();
|
||||
frame:SetPoint( "TOPLEFT", UIParent, "BOTTOMLEFT", COEFramePositions[frame.Element].x + dx,
|
||||
frame:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT",
|
||||
COEFramePositions[frame.Element].x + dx,
|
||||
COEFramePositions[frame.Element].y + dy);
|
||||
|
||||
-- invalidate all parts
|
||||
@@ -896,7 +871,6 @@ function COE_Totem:AdjustDraggedFrames()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateFrameCoordinates
|
||||
|
||||
@@ -918,7 +892,6 @@ function COE_Totem:UpdateFrameCoordinates()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ =============================================================================================
|
||||
|
||||
B U T T O N
|
||||
@@ -943,9 +916,7 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:OnTotemButtonLoad()
|
||||
|
||||
if( not COE.Initialized ) then
|
||||
return;
|
||||
end
|
||||
if (not COE.Initialized) then return; end
|
||||
|
||||
-- init properties
|
||||
-- ----------------
|
||||
@@ -970,7 +941,6 @@ function COE_Totem:OnTotemButtonLoad()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:OnTotemButtonEvent
|
||||
|
||||
@@ -984,19 +954,13 @@ function COE_Totem:OnTotemButtonEvent( event )
|
||||
end
|
||||
|
||||
elseif (event == "ACTIONBAR_UPDATE_USABLE") then
|
||||
if( this.totem ) then
|
||||
COE_Totem:UpdateTotemButtonIsUsable();
|
||||
end
|
||||
if (this.totem) then COE_Totem:UpdateTotemButtonIsUsable(); end
|
||||
|
||||
elseif (event == "ACTIONBAR_UPDATE_COOLDOWN") then
|
||||
if( this.totem ) then
|
||||
COE_Totem:UpdateTotemButtonCooldown();
|
||||
end
|
||||
if (this.totem) then COE_Totem:UpdateTotemButtonCooldown(); end
|
||||
|
||||
elseif (event == "UNIT_MANA" and arg1 == "player") then
|
||||
if( this.totem ) then
|
||||
COE_Totem:UpdateTotemButtonIsUsable();
|
||||
end
|
||||
if (this.totem) then COE_Totem:UpdateTotemButtonIsUsable(); end
|
||||
|
||||
elseif (event == "UNIT_INVENTORY_CHANGED" or event == "BAG_UPDATE") then
|
||||
-- check for presence of totem tools
|
||||
@@ -1008,13 +972,16 @@ function COE_Totem:OnTotemButtonEvent( event )
|
||||
local slot;
|
||||
totem.ToolPresent, slot = COE:IsTrinketPresent();
|
||||
|
||||
if( slot and slot ~= totem.TrinketSlot and totem.CurCooldown < 30 ) then
|
||||
if (slot and slot ~= totem.TrinketSlot and totem.CurCooldown <
|
||||
30) then
|
||||
-- trinket has been (re-)equipped
|
||||
-- start item cooldown
|
||||
-- -------------------------------
|
||||
totem.CurCooldown = 30;
|
||||
Chronos.startTimer("COECooldown" .. totem.SpellName);
|
||||
Chronos.scheduleByName( "COECooldownSwitch" .. totem.SpellName, totem.CurCooldown, COESched_CooldownEnd, totem );
|
||||
Chronos.scheduleByName(
|
||||
"COECooldownSwitch" .. totem.SpellName,
|
||||
totem.CurCooldown, COESched_CooldownEnd, totem);
|
||||
|
||||
end
|
||||
|
||||
@@ -1025,23 +992,21 @@ function COE_Totem:OnTotemButtonEvent( event )
|
||||
end
|
||||
|
||||
elseif (event == "UPDATE_BINDINGS") then
|
||||
if( this.totem ) then
|
||||
COE_Totem:UpdateTotemButtonHotKey();
|
||||
end
|
||||
if (this.totem) then COE_Totem:UpdateTotemButtonHotKey(); end
|
||||
|
||||
elseif( event == "SPELLCAST_STOP" ) then
|
||||
-- activate timer if totem is pending
|
||||
-- -----------------------------------
|
||||
if( COE_Config:GetSaved( COEOPT_ENABLETIMERS ) == 1 and
|
||||
this.totem and this.totem == COE.TotemPending.Totem ) then
|
||||
COE_Totem:ActivatePendingTotem( this.totem );
|
||||
end
|
||||
-- UPDATED single totem pending logic to handle multiple pending and fire when totem cast is reported from event
|
||||
-- elseif (event == "SPELLCAST_STOP") then
|
||||
-- -- activate timer if totem is pending
|
||||
-- -- -----------------------------------
|
||||
-- if (COE_Config:GetSaved(COEOPT_ENABLETIMERS) == 1 and this.totem and
|
||||
-- this.totem == COE.TotemPending.Totem) then
|
||||
-- COE_Totem:ActivatePendingTotem(this.totem);
|
||||
-- end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateTotemButton
|
||||
|
||||
@@ -1052,9 +1017,7 @@ function COE_Totem:UpdateTotemButton( elapsed )
|
||||
-- check if visual update is necessary
|
||||
-- ------------------------------------
|
||||
this.UpdateTime = this.UpdateTime + elapsed;
|
||||
if( this.UpdateTime <= COE.UpdateInterval ) then
|
||||
return;
|
||||
end
|
||||
if (this.UpdateTime <= COE.UpdateInterval) then return; end
|
||||
|
||||
if (this.totem == nil) then
|
||||
this:Hide();
|
||||
@@ -1107,7 +1070,8 @@ function COE_Totem:UpdateTotemButton( elapsed )
|
||||
end
|
||||
|
||||
elseif (COE_Config:GetSaved(COEOPT_ENABLESETS) == 1 and
|
||||
COE.TotemSets[COE_Config:GetSaved( COEOPT_ACTIVESET )][this.totem.Element] == this.totem ) then
|
||||
COE.TotemSets[COE_Config:GetSaved(COEOPT_ACTIVESET)][this.totem
|
||||
.Element] == this.totem) then
|
||||
|
||||
-- set a red border when this totem
|
||||
-- belongs to the current totem set
|
||||
@@ -1129,7 +1093,6 @@ function COE_Totem:UpdateTotemButton( elapsed )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateTotemButtonCooldown
|
||||
|
||||
@@ -1137,9 +1100,7 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:UpdateTotemButtonCooldown()
|
||||
|
||||
if( this.totem == COE.NoTotem ) then
|
||||
return;
|
||||
end;
|
||||
if (this.totem == COE.NoTotem) then return; end
|
||||
|
||||
local cooldown = getglobal(this:GetName() .. "Cooldown");
|
||||
|
||||
@@ -1151,7 +1112,8 @@ function COE_Totem:UpdateTotemButtonCooldown()
|
||||
|
||||
if (this.totem.isTrinket) then
|
||||
if (this.totem.ToolPresent) then
|
||||
start, duration, enable = GetInventoryItemCooldown( "player", this.totem.TrinketSlot );
|
||||
start, duration, enable =
|
||||
GetInventoryItemCooldown("player", this.totem.TrinketSlot);
|
||||
else
|
||||
cooldown:Hide();
|
||||
return;
|
||||
@@ -1168,7 +1130,6 @@ function COE_Totem:UpdateTotemButtonCooldown()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateTotemButtonIsUsable
|
||||
|
||||
@@ -1179,9 +1140,7 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:UpdateTotemButtonIsUsable()
|
||||
|
||||
if( this.totem == COE.NoTotem ) then
|
||||
return;
|
||||
end;
|
||||
if (this.totem == COE.NoTotem) then return; end
|
||||
|
||||
local icon = getglobal(this:GetName() .. "Icon");
|
||||
local normalTexture = getglobal(this:GetName() .. "NormalTexture");
|
||||
@@ -1216,7 +1175,6 @@ function COE_Totem:UpdateTotemButtonIsUsable()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateTotemButtonHotKey
|
||||
|
||||
@@ -1224,14 +1182,14 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:UpdateTotemButtonHotKey()
|
||||
|
||||
if( this.totem == COE.NoTotem ) then
|
||||
return;
|
||||
end;
|
||||
if (this.totem == COE.NoTotem) then return; end
|
||||
|
||||
-- get the binding name
|
||||
-- ---------------------
|
||||
local binding = "TOTEM" .. string.upper(this.totem.Element);
|
||||
local id = this:GetID() - getglobal( "COETotem" .. this.totem.Element .. "1" ):GetID() + 1;
|
||||
local id = this:GetID() -
|
||||
getglobal("COETotem" .. this.totem.Element .. "1"):GetID() +
|
||||
1;
|
||||
binding = binding .. id;
|
||||
|
||||
-- get the binding text
|
||||
@@ -1252,7 +1210,6 @@ function COE_Totem:UpdateTotemButtonHotKey()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateTotemButtonFlash
|
||||
|
||||
@@ -1261,14 +1218,15 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:UpdateTotemButtonFlash(elapsed)
|
||||
|
||||
if( (this.totem == COE.NoTotem) or this.totem.isTrinket ) then
|
||||
return;
|
||||
end;
|
||||
if ((this.totem == COE.NoTotem) or this.totem.isTrinket) then return; end
|
||||
|
||||
if (COE_Config:GetSaved(COEOPT_ADVISOR) == 1) then
|
||||
if( (this == COE.CleansingTotems.Tremor.Button and COE.CleansingTotems.Tremor.Warn) or
|
||||
(this == COE.CleansingTotems.Disease.Button and COE.CleansingTotems.Disease.Warn) or
|
||||
(this == COE.CleansingTotems.Poison.Button and COE.CleansingTotems.Poison.Warn) ) then
|
||||
if ((this == COE.CleansingTotems.Tremor.Button and
|
||||
COE.CleansingTotems.Tremor.Warn) or
|
||||
(this == COE.CleansingTotems.Disease.Button and
|
||||
COE.CleansingTotems.Disease.Warn) or
|
||||
(this == COE.CleansingTotems.Poison.Button and
|
||||
COE.CleansingTotems.Poison.Warn)) then
|
||||
|
||||
this.Flashtime = this.Flashtime - elapsed;
|
||||
if (this.Flashtime <= 0) then
|
||||
@@ -1294,7 +1252,6 @@ function COE_Totem:UpdateTotemButtonFlash( elapsed )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:OnEnterTotemButton
|
||||
|
||||
@@ -1308,7 +1265,8 @@ function COE_Totem:OnEnterTotemButton()
|
||||
if (COEUI_TTALIGN[COE_Config:GetSaved(COEOPT_TTALIGNMENT)][1] ~= "DISABLED" and
|
||||
this.totem ~= COE.NoTotem) then
|
||||
|
||||
GameTooltip:SetOwner( this, COEUI_TTALIGN[COE_Config:GetSaved( COEOPT_TTALIGNMENT )][1] );
|
||||
GameTooltip:SetOwner(this, COEUI_TTALIGN[COE_Config:GetSaved(
|
||||
COEOPT_TTALIGNMENT)][1]);
|
||||
|
||||
if (this.totem.isTrinket) then
|
||||
-- show item tooltip if equipped
|
||||
@@ -1337,7 +1295,6 @@ function COE_Totem:OnEnterTotemButton()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:OnLeaveTotemButton
|
||||
|
||||
@@ -1354,11 +1311,12 @@ function COE_Totem:OnLeaveTotemButton()
|
||||
-- schedule hiding of the dynamic buttons
|
||||
-- ---------------------------------------
|
||||
if (this.ElementFrame.Mode == "Flex") then
|
||||
Chronos.scheduleByName( "COEFlex" .. this.ElementFrame.Element, COE_Totem.FlexTime, COESched_HideDynamicButtons, this.ElementFrame );
|
||||
Chronos.scheduleByName("COEFlex" .. this.ElementFrame.Element,
|
||||
COE_Totem.FlexTime, COESched_HideDynamicButtons,
|
||||
this.ElementFrame);
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:OnTotemButtonClick
|
||||
|
||||
@@ -1367,9 +1325,7 @@ end
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:OnTotemButtonClick()
|
||||
|
||||
if( this.totem == COE.NoTotem ) then
|
||||
return;
|
||||
end;
|
||||
if (this.totem == COE.NoTotem) then return; end
|
||||
|
||||
if (COE.ConfigureBarMode) then
|
||||
|
||||
@@ -1398,13 +1354,15 @@ function COE_Totem:OnTotemButtonClick()
|
||||
else
|
||||
-- swap this totem with the first one
|
||||
-- -----------------------------------
|
||||
local swap = COE_DisplayedTotems[COE_Config.ConfigureOrderTotem.SpellName].Order;
|
||||
COE_DisplayedTotems[COE_Config.ConfigureOrderTotem.SpellName].Order = COE_DisplayedTotems[this.totem.SpellName].Order;
|
||||
local swap = COE_DisplayedTotems[COE_Config.ConfigureOrderTotem
|
||||
.SpellName].Order;
|
||||
COE_DisplayedTotems[COE_Config.ConfigureOrderTotem.SpellName].Order =
|
||||
COE_DisplayedTotems[this.totem.SpellName].Order;
|
||||
COE_DisplayedTotems[this.totem.SpellName].Order = swap;
|
||||
|
||||
COE_Config.ConfigureOrderTotem = nil;
|
||||
|
||||
end;
|
||||
end
|
||||
|
||||
-- reconfigure totem bar
|
||||
-- ----------------------
|
||||
@@ -1420,16 +1378,19 @@ function COE_Totem:OnTotemButtonClick()
|
||||
if (activeset <= COESET_DEFAULT) then
|
||||
COE_SavedTotemSets[activeset][this.totem.Element] = "";
|
||||
else
|
||||
COE_CustomTotemSets[activeset - COESET_DEFAULT][this.totem.Element] = "";
|
||||
COE_CustomTotemSets[activeset - COESET_DEFAULT][this.totem
|
||||
.Element] = "";
|
||||
end
|
||||
else
|
||||
-- store in set
|
||||
-- -------------
|
||||
COE.TotemSets[activeset][this.totem.Element] = this.totem;
|
||||
if (activeset <= COESET_DEFAULT) then
|
||||
COE_SavedTotemSets[activeset][this.totem.Element] = this.totem.SpellName;
|
||||
COE_SavedTotemSets[activeset][this.totem.Element] = this.totem
|
||||
.SpellName;
|
||||
else
|
||||
COE_CustomTotemSets[activeset - COESET_DEFAULT][this.totem.Element] = this.totem.SpellName;
|
||||
COE_CustomTotemSets[activeset - COESET_DEFAULT][this.totem
|
||||
.Element] = this.totem.SpellName;
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1441,9 +1402,7 @@ function COE_Totem:OnTotemButtonClick()
|
||||
|
||||
-- if the ctrl key is down, make this totem the anchor totem
|
||||
-- ----------------------------------------------------------
|
||||
if( IsControlKeyDown() ) then
|
||||
COE_Totem:MakeAnchorTotem( this );
|
||||
end
|
||||
if (IsControlKeyDown()) then COE_Totem:MakeAnchorTotem(this); end
|
||||
|
||||
if (this.totem.isTrinket) then
|
||||
|
||||
@@ -1469,7 +1428,6 @@ function COE_Totem:OnTotemButtonClick()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ButtonStartDrag
|
||||
|
||||
@@ -1484,7 +1442,8 @@ function COE_Totem:ButtonStartDrag()
|
||||
-- Additionally holding the control key while doing so
|
||||
-- picks up Rank 1.
|
||||
---------------------------------------------------------
|
||||
elseif( (this.totem ~= COE.NoTotem) and (not this.totem.isTrinket) and IsShiftKeyDown() ) then
|
||||
elseif ((this.totem ~= COE.NoTotem) and (not this.totem.isTrinket) and
|
||||
IsShiftKeyDown()) then
|
||||
local rank;
|
||||
if (IsControlKeyDown()) then
|
||||
rank = 1;
|
||||
@@ -1495,14 +1454,14 @@ function COE_Totem:ButtonStartDrag()
|
||||
local SpellID = this.totem.Ranks[rank].SpellID;
|
||||
PickupSpell(SpellID, BOOKTYPE_SPELL);
|
||||
|
||||
elseif( COE_Config:GetSaved( COEOPT_FIXBAR ) == 0 and this == this.ElementFrame.AnchorTotem ) then
|
||||
elseif (COE_Config:GetSaved(COEOPT_FIXBAR) == 0 and this ==
|
||||
this.ElementFrame.AnchorTotem) then
|
||||
this:GetParent():StartMoving();
|
||||
this:GetParent().IsMoving = true;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:ButtonStopDrag
|
||||
|
||||
@@ -1519,7 +1478,6 @@ function COE_Totem:ButtonStopDrag()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:MakeAnchorTotem
|
||||
|
||||
@@ -1539,13 +1497,15 @@ function COE_Totem:MakeAnchorTotem( button )
|
||||
-- swap this totem with the anchor totem
|
||||
-- --------------------------------------
|
||||
local swap = COE_DisplayedTotems[anchor.SpellName].Order;
|
||||
COE_DisplayedTotems[anchor.SpellName].Order = COE_DisplayedTotems[totem.SpellName].Order;
|
||||
COE_DisplayedTotems[anchor.SpellName].Order =
|
||||
COE_DisplayedTotems[totem.SpellName].Order;
|
||||
COE_DisplayedTotems[totem.SpellName].Order = swap;
|
||||
|
||||
elseif (mode == COEMODE_ACTIVESET) then
|
||||
-- replace the set totem with this one
|
||||
-- ------------------------------------
|
||||
COE.TotemSets[COE_Config:GetSaved( COEOPT_ACTIVESET )][totem.Element] = totem;
|
||||
COE.TotemSets[COE_Config:GetSaved(COEOPT_ACTIVESET)][totem.Element] =
|
||||
totem;
|
||||
end
|
||||
|
||||
COE_Totem:Invalidate(button.ElementFrame, true, true, true);
|
||||
@@ -1554,7 +1514,6 @@ function COE_Totem:MakeAnchorTotem( button )
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:SetTimerText
|
||||
|
||||
@@ -1562,21 +1521,19 @@ end
|
||||
associated totem has an active timer
|
||||
-------------------------------------------------------------------]]
|
||||
function COE_Totem:SetTimerText()
|
||||
if( this.totem == COE.NoTotem ) then
|
||||
return;
|
||||
end;
|
||||
if (this.totem == COE.NoTotem) then return; end
|
||||
|
||||
local timertext = getglobal(this:GetName() .. "Text");
|
||||
local overlaytex = getglobal(this:GetName() .. "OverlayTex");
|
||||
|
||||
-- show timers only in timerframe and this is a bar button?
|
||||
-- ---------------------------------------------------------
|
||||
if( COE_Config:GetSaved( COEOPT_FRAMETIMERSONLY ) == 1 and
|
||||
this:GetParent() ~= COETimerFrame ) then
|
||||
if (COE_Config:GetSaved(COEOPT_FRAMETIMERSONLY) == 1 and this:GetParent() ~=
|
||||
COETimerFrame) then
|
||||
timertext:Hide();
|
||||
overlaytex:Hide();
|
||||
return;
|
||||
end;
|
||||
end
|
||||
|
||||
if (COE_Config:GetSaved(COEOPT_ENABLETIMERS) == 1) then
|
||||
if (COE_Totem:IsTimerActive(this.totem)) then
|
||||
@@ -1654,7 +1611,6 @@ function COE_Totem:SetTimerText()
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ =============================================================================================
|
||||
|
||||
T I M E R F R A M E
|
||||
@@ -1669,15 +1625,12 @@ end
|
||||
function COE_Totem:InitTimerFrame()
|
||||
-- addon loaded?
|
||||
-- --------------
|
||||
if( not COE.Initialized ) then
|
||||
return;
|
||||
end
|
||||
if (not COE.Initialized) then return; end
|
||||
|
||||
this.UpdateTime = 0;
|
||||
|
||||
end
|
||||
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
METHOD: COE_Totem:UpdateTimerFrame
|
||||
|
||||
@@ -1688,15 +1641,12 @@ function COE_Totem:UpdateTimerFrame( elapsed )
|
||||
-- check if visual update is necessary
|
||||
-- ------------------------------------
|
||||
this.UpdateTime = this.UpdateTime + elapsed;
|
||||
if( this.UpdateTime <= COE.UpdateInterval ) then
|
||||
return;
|
||||
end
|
||||
if (this.UpdateTime <= COE.UpdateInterval) then return; end
|
||||
|
||||
-- set scaling
|
||||
-- ------------
|
||||
this:SetScale(COE_Config:GetSaved(COEOPT_SCALING));
|
||||
|
||||
|
||||
local k;
|
||||
local lastbutton = nil;
|
||||
local count = 0;
|
||||
@@ -1710,17 +1660,23 @@ function COE_Totem:UpdateTimerFrame( elapsed )
|
||||
if (lastbutton) then
|
||||
if (COE_Config:GetSaved(COEOPT_DISPLAYALIGN) == COEMODE_BOX) then
|
||||
if (count == 2) then
|
||||
button:SetPoint( "TOPRIGHT", lastbutton:GetName(), "BOTTOMLEFT", -COEUI_BUTTONGAP, -COEUI_BUTTONGAP );
|
||||
button:SetPoint("TOPRIGHT", lastbutton:GetName(),
|
||||
"BOTTOMLEFT", -COEUI_BUTTONGAP,
|
||||
-COEUI_BUTTONGAP);
|
||||
lastbutton = button;
|
||||
else
|
||||
button:SetPoint( "TOPLEFT", lastbutton:GetName(), "TOPRIGHT", COEUI_BUTTONGAP, 0 );
|
||||
button:SetPoint("TOPLEFT", lastbutton:GetName(),
|
||||
"TOPRIGHT", COEUI_BUTTONGAP, 0);
|
||||
lastbutton = button;
|
||||
end
|
||||
elseif( COE_Config:GetSaved( COEOPT_DISPLAYALIGN ) == COEMODE_VERTICAL ) then
|
||||
button:SetPoint( "TOPLEFT", lastbutton:GetName(), "BOTTOMLEFT", 0, -COEUI_BUTTONGAP );
|
||||
elseif (COE_Config:GetSaved(COEOPT_DISPLAYALIGN) ==
|
||||
COEMODE_VERTICAL) then
|
||||
button:SetPoint("TOPLEFT", lastbutton:GetName(),
|
||||
"BOTTOMLEFT", 0, -COEUI_BUTTONGAP);
|
||||
lastbutton = button;
|
||||
else
|
||||
button:SetPoint( "TOPLEFT", lastbutton:GetName(), "TOPRIGHT", COEUI_BUTTONGAP, 0 );
|
||||
button:SetPoint("TOPLEFT", lastbutton:GetName(), "TOPRIGHT",
|
||||
COEUI_BUTTONGAP, 0);
|
||||
lastbutton = button;
|
||||
end
|
||||
else
|
||||
|
||||
+15
-5
@@ -96,6 +96,10 @@ end
|
||||
PURPOSE: Handles frame events
|
||||
-------------------------------------------------------------------]]
|
||||
function COE:OnEvent(event)
|
||||
if (COE.EventPrintMode) then
|
||||
COE:DebugMessage("Event: " .. event);
|
||||
if (arg1) then COE:DebugMessage("arg1: " .. arg1); end
|
||||
end
|
||||
|
||||
if (event == "VARIABLES_LOADED") then
|
||||
-- fix saved variables if this update has to do so
|
||||
@@ -103,14 +107,16 @@ function COE:OnEvent(event)
|
||||
COE:FixSavedVariables();
|
||||
|
||||
elseif (event == "CHAT_MSG_SPELL_SELF_BUFF") then
|
||||
-- resolve Totemic Recall event
|
||||
if (string.find(arg1, "Mana from Totemic Recall")) then
|
||||
COE:DebugMessage("Totemic Recall initiating reset of timers.");
|
||||
COE_Totem:ResetTimers();
|
||||
|
||||
-- Resolve Totem cast event
|
||||
elseif (string.find(arg1, "Totem")) then
|
||||
local totem = COE_Totem:GetTotemFromText(arg1);
|
||||
if (totem) then COE_Totem:ActivateTotem(totem); end
|
||||
end
|
||||
|
||||
elseif (COE.EventPrintMode) then
|
||||
COE:DebugMessage(event);
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -190,9 +196,12 @@ function COEProcessShellCommand(msg)
|
||||
if (msg == "" or msg == "config") then
|
||||
COE:ToggleConfigFrame();
|
||||
|
||||
elseif (msg == "list") then
|
||||
elseif (msg == "list" or msg == "help") then
|
||||
COE:DisplayShellCommands();
|
||||
|
||||
elseif (msg == "debug") then
|
||||
COE["DebugMode"] = not COE.DebugMode;
|
||||
COE:Message(tostring(COE.DebugMode));
|
||||
elseif (msg == "nextset") then
|
||||
COE_Totem:SwitchToNextSet();
|
||||
|
||||
@@ -255,6 +264,7 @@ function COE:DisplayShellCommands()
|
||||
COE:Message(COESHELL_MACRONOTE);
|
||||
COE:Message(COESHELL_THROWSET);
|
||||
COE:Message(COESHELL_ADVISED);
|
||||
COE:Message(COESHELL_DEBUG);
|
||||
|
||||
end
|
||||
|
||||
|
||||
+78
-82
@@ -1,18 +1,14 @@
|
||||
|
||||
--[[ ----------------------------------------------------------------
|
||||
|
||||
E N G L I S H
|
||||
|
||||
-------------------------------------------------------------------]]
|
||||
|
||||
-- Errors
|
||||
-------------------------------------------------------------------]] -- Errors
|
||||
-- -------
|
||||
COESTR_NOTASHAMAN = "You are not a shaman. Unloading Call Of Elements";
|
||||
COESTR_NOTOTEM = "No totem available yet";
|
||||
COESTR_UI_NOTASSIGNED = "<No text assigned>";
|
||||
COESTR_INVALIDELEMENT = "Invalid element found in totem: ";
|
||||
|
||||
|
||||
-- Notifications
|
||||
-- --------------
|
||||
COESTR_TOTEMWARNING = "%s expires in %d seconds";
|
||||
@@ -31,7 +27,6 @@ COESTR_HEALING = "Healing %s with %s (Rank %d)";
|
||||
COESTR_HEALLOWERRANK = "Not enough mana. Using rank %d instead";
|
||||
COESTR_HEALOOM = "Out of mana!";
|
||||
|
||||
|
||||
-- String patterns
|
||||
-- ----------------
|
||||
COESTR_SCANTOTEMS = "Totem";
|
||||
@@ -51,13 +46,11 @@ COESTR_MINAMOUNT = "(%d*) to";
|
||||
COESTR_MAXAMOUNT = "to (%d*)";
|
||||
COESTR_TRINKET = "^.*%[Enamored Water Spirit%].*$";
|
||||
|
||||
|
||||
-- Spell Names and IDs
|
||||
-- ----------------
|
||||
COESTR_TOTEMICRECALL = "Totemic Recall";
|
||||
COESTR_TOTEMICRECALLID = 35;
|
||||
|
||||
|
||||
-- Totem Advisor
|
||||
-- --------------
|
||||
COESTR_POISON = "Poison";
|
||||
@@ -68,12 +61,12 @@ COESTR_TOTEMTREMOR = "Tremor Totem";
|
||||
COESTR_CLEANSINGTOTEM = "Throw %s now!";
|
||||
|
||||
COESTR_TREMOR = {
|
||||
"Sleep", "Terrify", "Psychic Scream", "Mind Control", "Bellowing Roar", "Fear",
|
||||
"Intimidating Shout", "Panic", "Terrifying Screech", "Seduction",
|
||||
"Howl of Terror", "Intimidating Growl", "Crystalline Slumber", "Druid's Slumber"
|
||||
"Sleep", "Terrify", "Psychic Scream", "Mind Control", "Bellowing Roar",
|
||||
"Fear", "Intimidating Shout", "Panic", "Terrifying Screech", "Seduction",
|
||||
"Howl of Terror", "Intimidating Growl", "Crystalline Slumber",
|
||||
"Druid's Slumber"
|
||||
}
|
||||
|
||||
|
||||
-- Tools
|
||||
-- ---------
|
||||
COESTR_TOTEMTOOLS_EARTH = "Earth";
|
||||
@@ -81,7 +74,6 @@ COESTR_TOTEMTOOLS_FIRE = "Fire";
|
||||
COESTR_TOTEMTOOLS_WATER = "Water";
|
||||
COESTR_TOTEMTOOLS_AIR = "Air";
|
||||
|
||||
|
||||
-- Elements
|
||||
-- ---------
|
||||
COESTR_ELEMENT_EARTH = "Earth";
|
||||
@@ -89,63 +81,61 @@ COESTR_ELEMENT_FIRE = "Fire";
|
||||
COESTR_ELEMENT_WATER = "Water";
|
||||
COESTR_ELEMENT_AIR = "Air";
|
||||
|
||||
|
||||
-- UI elements
|
||||
-- ------------
|
||||
COEUI_STRINGS = {
|
||||
COE_ConfigClose = "Close";
|
||||
COE_ConfigTotemTabPanel = "Totem Options";
|
||||
COE_ConfigHealingTabPanel = "Healing Options";
|
||||
COE_ConfigDebuffTabPanel = "Debuff Options";
|
||||
COE_ConfigTotemTotemBar = "Totem Bars";
|
||||
COE_ConfigTotemTotemOptions = "Options";
|
||||
COE_ConfigTotemTotemSets = "Totem Sets";
|
||||
COE_OptionEnableTotemBar = "Enable Totem Bar";
|
||||
COE_OptionHideBackdrop = "Hide background when inactive";
|
||||
COE_OptionEnableTimers = "Enable totem timers";
|
||||
COE_OptionEnableTimerNotifications = "Enable notifications";
|
||||
COE_OptionTTAlignment = "Tooltip Alignment";
|
||||
COE_OptionDisplayMode = "Anchor Button";
|
||||
COE_OptionDisplayAlignment = "Button Alignment";
|
||||
COE_OptionAdvisor = "Enable totem advisor";
|
||||
COE_OptionEnableSets = "Enable totem sets";
|
||||
COE_OptionEnableAutoSwitch = "Autoswitch sets in PVP";
|
||||
COE_OptionActiveSet = "Active totem set";
|
||||
COE_OptionNewSet = "New set";
|
||||
COE_OptionDeleteSet = "Delete set";
|
||||
COE_OptionConfigureSet = "Configure set";
|
||||
COE_OptionStopConfigureSet = "OK";
|
||||
COE_OptionCastOrderString = "Cast Order";
|
||||
COE_OptionConfigureBar = "Configure Totems";
|
||||
COE_OptionFixBar = "Fix totem bar positions";
|
||||
COE_OptionConfigureOrder = "Configure Order";
|
||||
COE_OptionScanTotems = "Reload Totems";
|
||||
COE_OptionCurrentFrame = "Configure Bar";
|
||||
COE_OptionDirection = "Direction";
|
||||
COE_OptionFrameMode = "Bar mode";
|
||||
COE_OptionFlexCount = "Static buttons";
|
||||
COE_OptionScaling = "Scaling";
|
||||
COE_OptionEnableTimerFrame = "Show separate timer frame";
|
||||
COE_OptionGroupBars = "Move bars as group";
|
||||
COE_OptionOverrideRank = "Rank 1 modifier";
|
||||
COE_OptionFrameTimersOnly = "Show timers ONLY in timer frame";
|
||||
COE_ConfigClose = "Close",
|
||||
COE_ConfigTotemTabPanel = "Totem Options",
|
||||
COE_ConfigHealingTabPanel = "Healing Options",
|
||||
COE_ConfigDebuffTabPanel = "Debuff Options",
|
||||
COE_ConfigTotemTotemBar = "Totem Bars",
|
||||
COE_ConfigTotemTotemOptions = "Options",
|
||||
COE_ConfigTotemTotemSets = "Totem Sets",
|
||||
COE_OptionEnableTotemBar = "Enable Totem Bar",
|
||||
COE_OptionHideBackdrop = "Hide background when inactive",
|
||||
COE_OptionEnableTimers = "Enable totem timers",
|
||||
COE_OptionEnableTimerNotifications = "Enable notifications",
|
||||
COE_OptionTTAlignment = "Tooltip Alignment",
|
||||
COE_OptionDisplayMode = "Anchor Button",
|
||||
COE_OptionDisplayAlignment = "Button Alignment",
|
||||
COE_OptionAdvisor = "Enable totem advisor",
|
||||
COE_OptionEnableSets = "Enable totem sets",
|
||||
COE_OptionEnableAutoSwitch = "Autoswitch sets in PVP",
|
||||
COE_OptionActiveSet = "Active totem set",
|
||||
COE_OptionNewSet = "New set",
|
||||
COE_OptionDeleteSet = "Delete set",
|
||||
COE_OptionConfigureSet = "Configure set",
|
||||
COE_OptionStopConfigureSet = "OK",
|
||||
COE_OptionCastOrderString = "Cast Order",
|
||||
COE_OptionConfigureBar = "Configure Totems",
|
||||
COE_OptionFixBar = "Fix totem bar positions",
|
||||
COE_OptionConfigureOrder = "Configure Order",
|
||||
COE_OptionScanTotems = "Reload Totems",
|
||||
COE_OptionCurrentFrame = "Configure Bar",
|
||||
COE_OptionDirection = "Direction",
|
||||
COE_OptionFrameMode = "Bar mode",
|
||||
COE_OptionFlexCount = "Static buttons",
|
||||
COE_OptionScaling = "Scaling",
|
||||
COE_OptionEnableTimerFrame = "Show separate timer frame",
|
||||
COE_OptionGroupBars = "Move bars as group",
|
||||
COE_OptionOverrideRank = "Rank 1 modifier",
|
||||
COE_OptionFrameTimersOnly = "Show timers ONLY in timer frame"
|
||||
}
|
||||
|
||||
|
||||
-- Tooltips
|
||||
-- ---------
|
||||
COEUI_TOOLTIPS = {
|
||||
COE_ConfigTotemTab = "Shows the totem options";
|
||||
COE_ConfigHealingTab = "Shows the healing options";
|
||||
COE_ConfigDebuffTab = "Shows the debuff options";
|
||||
COE_OptionEnableTotemBar = "Enables and shows the totem bar\nwhich holds all of your available\ntotems for quick use";
|
||||
COE_OptionHideBackdrop = "Hides the background when the mouse\nis not above the totem bar";
|
||||
COE_OptionEnableTimers = "Enables the display of\nthe remaining totem time\nshown inside the totem button";
|
||||
COE_OptionEnableTimerNotifications = "Displays warnings when a totem\nexpires or is destroyed";
|
||||
COE_OptionAdvisor = "Displays notifications when you\nor a member of your party/raid\nhas a debuff that can be cured\nby one of your totems";
|
||||
COE_OptionEnableAutoSwitch = "Automatically switches to the\nclass totem set when targetting an\nenemy player";
|
||||
COE_OptionFixBar = "Fixes the totem bar position\nto prevent dragging it accidentally";
|
||||
COE_OptionGroupBars = "When you drag one bar,\nthe other bars will follow";
|
||||
COE_ConfigTotemTab = "Shows the totem options",
|
||||
COE_ConfigHealingTab = "Shows the healing options",
|
||||
COE_ConfigDebuffTab = "Shows the debuff options",
|
||||
COE_OptionEnableTotemBar = "Enables and shows the totem bar\nwhich holds all of your available\ntotems for quick use",
|
||||
COE_OptionHideBackdrop = "Hides the background when the mouse\nis not above the totem bar",
|
||||
COE_OptionEnableTimers = "Enables the display of\nthe remaining totem time\nshown inside the totem button",
|
||||
COE_OptionEnableTimerNotifications = "Displays warnings when a totem\nexpires or is destroyed",
|
||||
COE_OptionAdvisor = "Displays notifications when you\nor a member of your party/raid\nhas a debuff that can be cured\nby one of your totems",
|
||||
COE_OptionEnableAutoSwitch = "Automatically switches to the\nclass totem set when targetting an\nenemy player",
|
||||
COE_OptionFixBar = "Fixes the totem bar position\nto prevent dragging it accidentally",
|
||||
COE_OptionGroupBars = "When you drag one bar,\nthe other bars will follow"
|
||||
}
|
||||
|
||||
COESTR_TRINKET_TOOLTIP = "Enamored Water Spirit";
|
||||
@@ -154,21 +144,21 @@ COESTR_TRINKET_TOTEM = "Ancient Mana Spring Totem";
|
||||
-- Combo boxes
|
||||
-- ------------
|
||||
COEUI_TTALIGN = {
|
||||
{ "ANCHOR_TOPLEFT"; "Top Left" };
|
||||
{ "ANCHOR_LEFT"; "Left" };
|
||||
{ "ANCHOR_BOTTOMLEFT"; "Bottom Left" };
|
||||
{ "ANCHOR_TOPRIGHT"; "Top Right" };
|
||||
{ "ANCHOR_RIGHT"; "Right" };
|
||||
{ "ANCHOR_BOTTOMRIGHT"; "Bottom Right" };
|
||||
{ "DISABLED"; "Disabled" };
|
||||
{"ANCHOR_TOPLEFT", "Top Left"}, {"ANCHOR_LEFT", "Left"},
|
||||
{"ANCHOR_BOTTOMLEFT", "Bottom Left"}, {"ANCHOR_TOPRIGHT", "Top Right"},
|
||||
{"ANCHOR_RIGHT", "Right"}, {"ANCHOR_BOTTOMRIGHT", "Bottom Right"},
|
||||
{"DISABLED", "Disabled"}
|
||||
}
|
||||
|
||||
COEUI_DISPLAYMODE = {"Customize", "Timers Only", "Active Set"}
|
||||
|
||||
COEUI_DISPLAYALIGN = {"Box", "Vertical", "Horizontal"}
|
||||
|
||||
COEUI_PVPSETS = { "[PVP] Druid", "[PVP] Hunter", "[PVP] Mage", "[PVP] Paladin", "[PVP] Priest",
|
||||
"[PVP] Rogue", "[PVP] Shaman", "[PVP] Warlock", "[PVP] Warrior" }
|
||||
COEUI_PVPSETS = {
|
||||
"[PVP] Druid", "[PVP] Hunter", "[PVP] Mage", "[PVP] Paladin",
|
||||
"[PVP] Priest", "[PVP] Rogue", "[PVP] Shaman", "[PVP] Warlock",
|
||||
"[PVP] Warrior"
|
||||
}
|
||||
COEUI_DEFAULTSET = "Default";
|
||||
|
||||
COEUI_OVERRIDERANK = {"No key", "Use SHIFT", "Use ALT", "Use CTRL"};
|
||||
@@ -179,7 +169,6 @@ COEUI_DIRECTION = { "Up", "Down", "Left", "Right" };
|
||||
|
||||
COEUI_FRAMEMODE = {"Closed", "Open", "Flex", "Hidden"};
|
||||
|
||||
|
||||
-- Key bindings
|
||||
-- -------------
|
||||
BINDING_HEADER_CALLOFELEMENTS = "Call Of Elements";
|
||||
@@ -214,7 +203,6 @@ BINDING_NAME_TOTEMAIR5 = "Air Totem #5";
|
||||
BINDING_NAME_TOTEMAIR6 = "Air Totem #6";
|
||||
BINDING_NAME_TOTEMAIR7 = "Air Totem #7";
|
||||
|
||||
|
||||
-- Key modifiers
|
||||
-- --------------
|
||||
COEMODIFIER_ALT = "ALT";
|
||||
@@ -226,20 +214,28 @@ COEMODIFIER_SHIFT_SHORT = "S";
|
||||
COEMODIFIER_NUMPAD = "Num Pad";
|
||||
COEMODIFIER_NUMPAD_SHORT = "NP";
|
||||
|
||||
|
||||
-- Shell commands
|
||||
-- ---------------
|
||||
COESHELL_INTRO = "Available shell commands for Call Of Elements:";
|
||||
COESHELL_CONFIG = "'/coe' or '/coe config' - Shows the configuration dialog";
|
||||
COESHELL_LIST = "'/coe list' - Shows this list";
|
||||
COESHELL_NEXTSET = "'/coe nexset' - Switches to the next custom totem set or the default set";
|
||||
COESHELL_PRIORSET = "'/coe priorset' - Switches to the prior custom totem set or the default set";
|
||||
COESHELL_SET = "'/coe set <name>' - Switches to set with the specified name. <name> is case-sensitive";
|
||||
COESHELL_RESTARTSET = "'/coe restartset' - Next time you throw the active set, it recasts all totems";
|
||||
COESHELL_LIST = "'/coe list' or '/coe help' - Shows this list";
|
||||
COESHELL_NEXTSET =
|
||||
"'/coe nexset' - Switches to the next custom totem set or the default set";
|
||||
COESHELL_PRIORSET =
|
||||
"'/coe priorset' - Switches to the prior custom totem set or the default set";
|
||||
COESHELL_SET =
|
||||
"'/coe set <name>' - Switches to set with the specified name. <name> is case-sensitive";
|
||||
COESHELL_RESTARTSET =
|
||||
"'/coe restartset' - Next time you throw the active set, it recasts all totems";
|
||||
COESHELL_RESET = "'/coe reset' - Resets all timers and the active set";
|
||||
COESHELL_RESETFRAMES = "'/coe resetframes' - Returns all element bars to the screen center";
|
||||
COESHELL_RESETORDERING = "'/coe resetordering' - Resets the ordering of your totem bars";
|
||||
COESHELL_RESETFRAMES =
|
||||
"'/coe resetframes' - Returns all element bars to the screen center";
|
||||
COESHELL_RESETORDERING =
|
||||
"'/coe resetordering' - Resets the ordering of your totem bars";
|
||||
COESHELL_RELOAD = "'/coe reload' - Reloads all totems and sets";
|
||||
COESHELL_MACRONOTE = "The following commands only work as macros dragged to your action bars:";
|
||||
COESHELL_MACRONOTE =
|
||||
"The following commands only work as macros dragged to your action bars:";
|
||||
COESHELL_THROWSET = "'/coe throwset' - Throws the active totem set";
|
||||
COESHELL_ADVISED = "'/coe advised' - Throws the next advised totem";
|
||||
COESHELL_DEBUG =
|
||||
"'/coe debug' - Toggles debug message printing (disable by default)";
|
||||
|
||||
Reference in New Issue
Block a user