vanilla-wow-addons – Rev 1
?pathlinks?
ENERGYWATCH_VERSION = "EnergyWatch v2 1.4"
ENERGYWATCH_TIMER_START = 0
ENERGYWATCH_TIMER_END = 0
ENERGYWATCH_TICK_LENGTH = 2
ENERGYWATCH_ALPHA_STEP = 0.2
ENERGYWATCH_ENERGY = nil
ENERGYWATCH_STATUS = 0
ENERGYWATCH_TEXT = "Energy"
ENERGYWATCH_SOUND = ""
ENERGYWATCH_DEFAULT_SOUND = "SPELLBOOKCLOSE"
ENERGYWATCH_COMBO = 0
ENERGYWATCH_INVERT = false
ENERGYWATCH_SHOW = 0
ENERGYWATCH_SCALE = 1
ENERGYWATCH_PROFILE = ""
EnergyWatch_Save = {}
ENERGYWATCH_VARIABLES_LOADED = false
ENERGYWATCH_VARIABLE_TIMER = 0
ENERGYWATCH_SPARK_SIZE = 105;
function EnergyWatch_OnLoad()
this:RegisterEvent("PLAYER_REGEN_ENABLED");
this:RegisterEvent("PLAYER_REGEN_DISABLED");
this:RegisterEvent("PLAYER_AURAS_CHANGED");
this:RegisterEvent("PLAYER_COMBO_POINTS");
this:RegisterEvent("UNIT_ENERGY");
this:RegisterEvent("UNIT_MAXENERGY");
SLASH_ENERGYWATCH1 = "/energywatch";
SLASH_ENERGYWATCH2 = "/ew";
SlashCmdList["ENERGYWATCH"] = function(msg)
EnergyWatch_SlashCommandHandler(msg);
end
ENERGYWATCH_ENERGY = UnitMana("player");
DEFAULT_CHAT_FRAME:AddMessage(ENERGYWATCH_VERSION.." Loaded - /ew");
end
function EnergyWatch_OnEvent(event)
if( ENERGYWATCH_STATUS == 0 ) then
return
end
EnergyWatch_EventHandler[event](arg1, arg2, arg3, arg4, arg5);
end
EnergyWatch_EventHandler = {}
EnergyWatch_EventHandler["UNIT_ENERGY"] = function()
EnergyWatch_TextUpdate();
end
EnergyWatch_EventHandler["UNIT_MAXENERGY"] = function()
EnergyWatch_TextUpdate();
end
EnergyWatch_EventHandler["PLAYER_COMBO_POINTS"] = function()
ENERGYWATCH_COMBO = GetComboPoints();
EnergyWatch_TextUpdate();
end
EnergyWatch_EventHandler["PLAYER_REGEN_ENABLED"] = function()
if ENERGYWATCH_SHOW > 0 then
EnergyWatchBar:Hide()
else
EnergyWatchBar:Show()
end
end
EnergyWatch_EventHandler["PLAYER_REGEN_DISABLED"] = function()
if ( ENERGYWATCH_SHOW ~= 3 ) then
EnergyWatchBar:Show()
else
EnergyWatchBar:Hide()
end
end
EnergyWatch_EventHandler["PLAYER_AURAS_CHANGED"] = function()
if ( ENERGYWATCH_SHOW ~= 2 and ENERGYWATCH_SHOW ~= 3 ) then
return
end
checkStealth()
end
function checkStealth()
local i = 0
while GetPlayerBuffTexture(i) ~= nil do
-- check for rogue's stealth and druid's prowl
if GetPlayerBuffTexture(i) == "Interface\\Icons\\Ability_Stealth" or
GetPlayerBuffTexture(i) == "Interface\\Icons\\Ability_Ambush" then
EnergyWatchBar:Show()
return
else
i = i + 1
end
end
if not UnitAffectingCombat("player") then
EnergyWatchBar:Hide()
end
end
function EnergyWatch_SlashCommandHandler(msg)
if( msg ) then
local command = string.lower(msg);
if( command == "on" ) then
if( ENERGYWATCH_STATUS == 0 ) then
ENERGYWATCH_STATUS = 1;
EnergyWatch_Save[ENERGYWATCH_PROFILE].status = ENERGYWATCH_STATUS;
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch enabled");
EnergyWatchBar:Show();
end
elseif( command == "off" ) then
if( ENERGYWATCH_STATUS ~= 0 ) then
ENERGYWATCH_STATUS = 0;
EnergyWatch_Save[ENERGYWATCH_PROFILE].status = ENERGYWATCH_STATUS;
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch disabled");
EnergyWatchBar:Hide();
end
elseif( command == "unlock" ) then
if( ENERGYWATCH_STATUS ~= 2 ) then
ENERGYWATCH_STATUS = 2;
EnergyWatch_Save[ENERGYWATCH_PROFILE].status = ENERGYWATCH_STATUS;
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch unlocked");
end
elseif( command == "lock" ) then
if( ENERGYWATCH_STATUS == 2 ) then
ENERGYWATCH_STATUS = 1;
EnergyWatch_Save[ENERGYWATCH_PROFILE].status = ENERGYWATCH_STATUS;
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch locked");
end
elseif( command == "clear" ) then
local pn = UnitName("player");
if(pn ~= nil and pn ~= UNKNOWNBEING and pn ~= UKNOWNBEING and pn ~= UNKNOWNOBJECT) then
ENERGYWATCH_PROFILE = pn .. " of " .. GetCVar("RealmName");
EnergyWatch_Save[ENERGYWATCH_PROFILE] = nil;
ENERGYWATCH_VARIABLES_LOADED = false;
EnergyWatch_LoadVariables(2);
else
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch: World not yet loaded, please wait...")
end
elseif( string.sub(command,1,4) == "text" ) then
if( string.len(command) > 5 ) then
ENERGYWATCH_TEXT = string.sub(msg,6);
else
ENERGYWATCH_TEXT = "";
end
EnergyWatch_Save[ENERGYWATCH_PROFILE].text = ENERGYWATCH_TEXT;
EnergyWatch_TextUpdate();
elseif( string.sub(command,1,5) == "sound" ) then
local args = string.sub(command, 7);
if( string.len(args) > 0 ) then
if( args == "on" ) then
ENERGYWATCH_SOUND = ENERGYWATCH_DEFAULT_SOUND;
elseif( args == "off" ) then
ENERGYWATCH_SOUND = "";
else
ENERGYWATCH_SOUND = args;
end
EnergyWatch_Save[ENERGYWATCH_PROFILE].sound = ENERGYWATCH_SOUND;
else
if( ENERGYWATCH_SOUND == "" ) then
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch sound is off");
elseif( ENERGYWATCH_SOUND == ENERGYWATCH_DEFAULT_SOUND ) then
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch sound is on");
else
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch sound is "..ENERGYWATCH_SOUND);
end
end
elseif( command == "invert" ) then
ENERGYWATCH_INVERT = not ENERGYWATCH_INVERT;
EnergyWatch_Save[ENERGYWATCH_PROFILE].invert = ENERGYWATCH_INVERT;
if ENERGYWATCH_INVERT then
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch inversion on");
else
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch inversion off");
end
elseif( command == "show always") then
EnergyWatch_Save[ENERGYWATCH_PROFILE].show = 0;
ENERGYWATCH_SHOW = EnergyWatch_Save[ENERGYWATCH_PROFILE].show
if ENERGYWATCH_STATUS ~= 0 then
EnergyWatchBar:Show()
end
elseif( command == "show combat") then
EnergyWatch_Save[ENERGYWATCH_PROFILE].show = 1;
ENERGYWATCH_SHOW = EnergyWatch_Save[ENERGYWATCH_PROFILE].show
if ENERGYWATCH_STATUS ~= 0 then
if UnitAffectingCombat("player") then
EnerbyWatchBar:Show()
else
EnergyWatchBar:Hide()
end
end
elseif( command == "show stealth" or command == "show stealthonly" ) then
if ( command == "show stealth" ) then
EnergyWatch_Save[ENERGYWATCH_PROFILE].show = 2;
else
EnergyWatch_Save[ENERGYWATCH_PROFILE].show = 3;
end
ENERGYWATCH_SHOW = EnergyWatch_Save[ENERGYWATCH_PROFILE].show
local i = 0
while GetPlayerBuffTexture(i) ~= nil do
if GetPlayerBuffTexture(i) == "Interface\\Icons\\Ability_Stealth" then
EnergyWatchBar:Show()
return
else
i = i + 1
end
end
if UnitAffectingCombat("player") then
EnergyWatchBar:Show()
else
EnergyWatchBar:Hide()
end
elseif( string.sub(command, 1, 5) == "scale" ) then
local scale = tonumber(string.sub(command, 7))
if( scale <= 3.0 and scale >= 0.25 ) then
EnergyWatch_Save[ENERGYWATCH_PROFILE].scale = scale;
ENERGYWATCH_SCALE = scale;
EnergyWatchBar:SetScale(ENERGYWATCH_SCALE * UIParent:GetScale());
DEFAULT_CHAT_FRAME:AddMessage("EnergyWatch scale set to "..scale);
else
EnergyWatch_Help()
end
elseif( command == "help text" ) then
EnergyWatch_HelpText();
elseif( command == "help show" ) then
EnergyWatch_HelpShow();
else
EnergyWatch_Help();
end
end
end
--function EnergyWatch_OnShow()
-- ENERGYWATCH_ENERGY = UnitMana("player");
-- ENERGYWATCH_TIMER_START = GetTime();
-- ENERGYWATCH_TIMER_END = ENERGYWATCH_TIMER_START + ENERGYWATCH_TICK_LENGTH;
-- EnergyWatchFrameStatusBar:SetMinMaxValues(ENERGYWATCH_TIMER_START, ENERGYWATCH_TIMER_END);
-- EnergyWatchFrameStatusBar:SetValue(ENERGYWATCH_TIMER_START);
-- EnergyWatchSpark:SetPoint("CENTER", "EnergyWatchFrameStatusBar", "LEFT", 0, 0);
--
--end
function EnergyWatch_OnUpdate()
if( ENERGYWATCH_STATUS == 0 ) then
return;
end
local Energy = UnitMana("player")
local Status = GetTime()
local sparkPosition = 1;
if( Energy > ENERGYWATCH_ENERGY or Status >= ENERGYWATCH_TIMER_END) then
if( ENERGYWATCH_SOUND ~= "" ) then
PlaySound(ENERGYWATCH_SOUND);
end
ENERGYWATCH_ENERGY = Energy;
ENERGYWATCH_TIMER_START = Status;
ENERGYWATCH_TIMER_END = Status + ENERGYWATCH_TICK_LENGTH;
else
if( ENERGYWATCH_ENERGY ~= Energy ) then
ENERGYWATCH_ENERGY = Energy;
end
-- Edited by Mike Davis 09/22/05
sparkPosition = ((Status - ENERGYWATCH_TIMER_START) / (ENERGYWATCH_TIMER_END - ENERGYWATCH_TIMER_START)) * ENERGYWATCH_SPARK_SIZE;
if ENERGYWATCH_INVERT then
sparkPosition = ENERGYWATCH_SPARK_SIZE - sparkPosition;
end
-- End of Edit
end
EnergyWatchFrameStatusBar:SetMinMaxValues(ENERGYWATCH_TIMER_START, ENERGYWATCH_TIMER_END);
if ENERGYWATCH_INVERT then
EnergyWatchFrameStatusBar:SetValue(ENERGYWATCH_TIMER_START + ENERGYWATCH_TIMER_END - Status);
else
EnergyWatchFrameStatusBar:SetValue(Status);
end
if( sparkPosition < 1 ) then
sparkPosition = 1;
end
EnergyWatchSpark:SetPoint("CENTER", "EnergyWatchFrameStatusBar", "LEFT", sparkPosition, 0);
end
function EnergyWatch_LoadVariables(arg1)
if ENERGYWATCH_VARIABLES_LOADED then
return
end
ENERGYWATCH_VARIABLE_TIMER = ENERGYWATCH_VARIABLE_TIMER + arg1
if ENERGYWATCH_VARIABLE_TIMER < 0.2 then
return
end
ENERGYWATCH_VARIABLE_TIMER = 0;
local playerName=UnitName("player")
if playerName==nil or playerName==UNKNOWNBEING or playerName==UKNOWNBEING or playerName==UNKNOWNOBJECT then
return
end
ENERGYWATCH_PROFILE = playerName.." of "..GetCVar("RealmName");
if EnergyWatch_Save[ENERGYWATCH_PROFILE] == nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE] = { };
if EW_Save ~= nil and EW_Save[ENERGYWATCH_PROFILE] ~= nil then
if EW_Save[ENERGYWATCH_PROFILE].status ~= nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE].status = EW_Save[ENERGYWATCH_PROFILE].status;
EW_Save[ENERGYWATCH_PROFILE].status = nil
end
if EW_Save[ENERGYWATCH_PROFILE].text ~= nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE].text = EW_Save[ENERGYWATCH_PROFILE].text;
EW_Save[ENERGYWATCH_PROFILE].text = nil
end
if EW_Save[ENERGYWATCH_PROFILE].sound ~= nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE].sound = EW_Save[ENERGYWATCH_PROFILE].sound;
EW_Save[ENERGYWATCH_PROFILE].sound = nil
end
if EW_Save[ENERGYWATCH_PROFILE] == { } then
EW_Save[ENERGYWATCH_PROFILE] = nil;
end
if EW_Save == { } then
EW_Save = nil;
end
end
end
if EnergyWatch_Save[ENERGYWATCH_PROFILE].status == nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE].status = 0;
end
if EnergyWatch_Save[ENERGYWATCH_PROFILE].text == nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE].text = "Energy";
end
if EnergyWatch_Save[ENERGYWATCH_PROFILE].sound == nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE].sound = "";
end
if EnergyWatch_Save[ENERGYWATCH_PROFILE].sound == nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE].invert = false;
end
if EnergyWatch_Save[ENERGYWATCH_PROFILE].show == nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE].show = 0;
end
if EnergyWatch_Save[ENERGYWATCH_PROFILE].scale == nil then
EnergyWatch_Save[ENERGYWATCH_PROFILE].scale = 1;
end
ENERGYWATCH_SOUND = EnergyWatch_Save[ENERGYWATCH_PROFILE].sound;
ENERGYWATCH_TEXT = EnergyWatch_Save[ENERGYWATCH_PROFILE].text;
ENERGYWATCH_STATUS = EnergyWatch_Save[ENERGYWATCH_PROFILE].status;
ENERGYWATCH_INVERT = EnergyWatch_Save[ENERGYWATCH_PROFILE].invert;
ENERGYWATCH_SHOW = EnergyWatch_Save[ENERGYWATCH_PROFILE].show;
ENERGYWATCH_SCALE = EnergyWatch_Save[ENERGYWATCH_PROFILE].scale;
EnergyWatchBar:SetScale(ENERGYWATCH_SCALE * UIParent:GetScale());
if( ENERGYWATCH_STATUS ~= 0 ) then
if ENERGYWATCH_SHOW == 0 then
EnergyWatchBar:Show();
end
else
EnergyWatchBar:Hide();
end
EnergyWatch_TextUpdate();
ENERGYWATCH_VARIABLES_LOADED = true;
EnergyWatch_Variable_Frame:Hide();
checkStealth()
end
function EnergyWatch_TextUpdate()
local ewtext = ENERGYWATCH_TEXT
ewtext,_ = string.gsub(ewtext,"&em", UnitManaMax("player"))
ewtext,_ = string.gsub(ewtext,"&e", UnitMana("player"))
ewtext,_ = string.gsub(ewtext,"&c", ENERGYWATCH_COMBO)
EnergyWatchText:SetText(ewtext);
end
function EnergyWatch_Help()
DEFAULT_CHAT_FRAME:AddMessage(ENERGYWATCH_VERSION.." : Usage - /ew option");
DEFAULT_CHAT_FRAME:AddMessage(" options:");
DEFAULT_CHAT_FRAME:AddMessage(" on : Enables EnergyWatch");
DEFAULT_CHAT_FRAME:AddMessage(" off : Disables EnergyWatch");
DEFAULT_CHAT_FRAME:AddMessage(" unlock : Allows you to move EnergyWatch");
DEFAULT_CHAT_FRAME:AddMessage(" lock : Locks EnergyWatch");
DEFAULT_CHAT_FRAME:AddMessage(" sound _ : Sets Sound on/off or custom");
DEFAULT_CHAT_FRAME:AddMessage(" invert : Invert progress bar direction");
DEFAULT_CHAT_FRAME:AddMessage(" scale _ : Scales EnergyWatch (0.25 - 3.0)");
DEFAULT_CHAT_FRAME:AddMessage(" help _ : Prints help for certain options (below)");
DEFAULT_CHAT_FRAME:AddMessage(" text _ : Sets the text on EnergyWatch");
DEFAULT_CHAT_FRAME:AddMessage(" show _ : Set when EnergyWatch should be shown")
end
function EnergyWatch_HelpText()
DEFAULT_CHAT_FRAME:AddMessage(ENERGYWATCH_VERSION.." : Usage - /ew text string");
DEFAULT_CHAT_FRAME:AddMessage(" the string may contain a few special replacements:");
DEFAULT_CHAT_FRAME:AddMessage(" &e : Current Energy");
DEFAULT_CHAT_FRAME:AddMessage(" &em : Maximum Energy");
DEFAULT_CHAT_FRAME:AddMessage(" &c : Combo Points");
end
function EnergyWatch_HelpShow()
DEFAULT_CHAT_FRAME:AddMessage(ENERGYWATCH_VERSION.." : Usage - /ew show option");
DEFAULT_CHAT_FRAME:AddMessage(" options:");
DEFAULT_CHAT_FRAME:AddMessage(" always : Always shown");
DEFAULT_CHAT_FRAME:AddMessage(" combat : Shown in Combat");
DEFAULT_CHAT_FRAME:AddMessage(" stealth : Shown in Combat and while Stealthed");
end