vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
---------------
-- Variables --
---------------
Perl_CombatDisplay_Config = {};

-- Default Saved Variables (also set in Perl_CombatDisplay_GetVars)
local state = 3;                -- hidden unless in combat by default
local manapersist = 0;          -- mana persist is off by default
local healthpersist = 0;        -- health persist is off by default
local locked = 0;               -- unlocked by default
local scale = 1;                -- default scale
local transparency = 1;         -- transparency for the frame
local showtarget = 0;           -- target frame is disabled by default
local mobhealthsupport = 1;     -- mobhealth is enabled by default
local showdruidbar = 1;         -- Druid Bar support is enabled by default
local showpetbars = 0;          -- Pet info is hidden by default

-- Default Local Variables
local IsAggroed = 0;
local InCombat = 0;
local Initialized = nil;
local healthfull = 0;
local manafull = 0;


----------------------
-- Loading Function --
----------------------
function Perl_CombatDisplay_OnLoad()
        -- Events
        this:RegisterEvent("ADDON_LOADED");
        this:RegisterEvent("PLAYER_ENTER_COMBAT");
        this:RegisterEvent("PLAYER_ENTERING_WORLD");
        this:RegisterEvent("PLAYER_LEAVE_COMBAT");
        this:RegisterEvent("PLAYER_REGEN_DISABLED");
        this:RegisterEvent("PLAYER_REGEN_ENABLED");
        this:RegisterEvent("PLAYER_TARGET_CHANGED");
        this:RegisterEvent("UNIT_DISPLAYPOWER");
        this:RegisterEvent("UNIT_ENERGY");
        this:RegisterEvent("UNIT_FOCUS");
        this:RegisterEvent("UNIT_HEALTH");
        this:RegisterEvent("UNIT_MANA");
        this:RegisterEvent("UNIT_MAXENERGY");
        this:RegisterEvent("UNIT_MAXFOCUS");
        this:RegisterEvent("UNIT_MAXHEALTH");
        this:RegisterEvent("UNIT_MAXMANA");
        this:RegisterEvent("UNIT_MAXRAGE");
        this:RegisterEvent("UNIT_PET");
        this:RegisterEvent("UNIT_RAGE");
        this:RegisterEvent("VARIABLES_LOADED");

        -- Button Click Overlays (in order of occurrence in XML)
        Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetFrameLevel(Perl_CombatDisplay_ManaFrame:GetFrameLevel() + 2);

        if (DEFAULT_CHAT_FRAME) then
                DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Perl Classic: CombatDisplay loaded successfully.");
        end
end

function Perl_CombatDisplay_Target_OnLoad()
        -- Button Click Overlays (in order of occurrence in XML)
        Perl_CombatDisplay_Target_ManaFrame_CastClickOverlay:SetFrameLevel(Perl_CombatDisplay_Target_ManaFrame:GetFrameLevel() + 2);
end


-------------------
-- Event Handler --
-------------------
function Perl_CombatDisplay_OnEvent(event)
        if (event == "UNIT_HEALTH" or event == "UNIT_MAXHEALTH") then
                if (arg1 == "player") then
                        if (UnitHealth("player") == UnitHealthMax("player")) then
                                healthfull = 1;
                                if (healthpersist == 1) then
                                        Perl_CombatDisplay_UpdateDisplay();
                                end
                        else
                                healthfull = 0;
                        end
                        Perl_CombatDisplay_Update_Health();
                end
                if (arg1 == "pet") then
                        if (showpetbars == 1) then
                                Perl_CombatDisplay_Update_PetHealth();
                        end
                end
                if (arg1 == "target") then
                        Perl_CombatDisplay_Target_Update_Health();
                end
                return;
        elseif (event == "UNIT_ENERGY" or event == "UNIT_MAXENERGY") then
                if (arg1 == "player") then
                        if (UnitMana("player") == UnitManaMax("player")) then
                                manafull = 1;
                                if (manapersist == 1) then
                                        Perl_CombatDisplay_UpdateDisplay();
                                end
                        else
                                manafull = 0;
                        end
                        Perl_CombatDisplay_Update_Mana();
                end
                if (arg1 == "target") then
                        Perl_CombatDisplay_Target_Update_Mana();
                end
                return;
        elseif (event == "UNIT_MANA" or event == "UNIT_MAXMANA") then
                if (arg1 == "player") then
                        if (UnitMana("player") == UnitManaMax("player")) then
                                manafull = 1;
                                if (manapersist == 1) then
                                        Perl_CombatDisplay_UpdateDisplay();
                                end
                        else
                                manafull = 0;
                        end
                        Perl_CombatDisplay_Update_Mana();
                end
                if (arg1 == "pet") then
                        if (showpetbars == 1) then
                                Perl_CombatDisplay_Update_PetMana();
                        end
                end
                if (arg1 == "target") then
                        Perl_CombatDisplay_Target_Update_Mana();
                end
                return;
        elseif (event == "UNIT_RAGE" or event == "UNIT_MAXRAGE") then
                if (arg1 == "player") then
                        if (UnitMana("player") == 0) then
                                manafull = 1;
                                if (manapersist == 1) then
                                        Perl_CombatDisplay_UpdateDisplay();
                                end
                        else
                                manafull = 0;
                        end
                        Perl_CombatDisplay_Update_Mana();
                end
                if (arg1 == "target") then
                        Perl_CombatDisplay_Target_Update_Mana();
                end
                return;
        elseif (event == "UNIT_FOCUS" or event == "UNIT_MAXFOCUS") then
                if (arg1 == "pet") then
                        if (showpetbars == 1) then
                                Perl_CombatDisplay_Update_PetMana();
                        end
                end
        elseif (event == "PLAYER_TARGET_CHANGED") then
                Perl_CombatDisplay_UpdateDisplay();
                return;
        elseif (event == "PLAYER_COMBO_POINTS") then
                Perl_CombatDisplay_Update_Combo_Points();
                return;
        elseif (event == "PLAYER_REGEN_ENABLED") then   -- Player no longer in combat (something has agro on you)
                IsAggroed = 0;
                if (state == 3) then
                        Perl_CombatDisplay_UpdateDisplay();
                end
                return;
        elseif (event == "PLAYER_REGEN_DISABLED") then  -- Player in combat (something has agro on you)
                IsAggroed = 1;
                if (state == 3) then
                        Perl_CombatDisplay_UpdateDisplay();
                end
                return;
        elseif (event == "PLAYER_ENTER_COMBAT") then    -- Player attacking (auto attack)
                InCombat = 1;
                if (state == 2) then
                        Perl_CombatDisplay_UpdateDisplay();
                end
                return;
        elseif (event == "PLAYER_LEAVE_COMBAT") then    -- Player not attacking (auto attack)
                InCombat = 0;
                if (state == 2) then
                        Perl_CombatDisplay_UpdateDisplay();
                end
                return;
        elseif (event == "UNIT_DISPLAYPOWER") then
                if (arg1 == "player") then
                        Perl_CombatDisplay_UpdateBars();
                        Perl_CombatDisplay_Update_Mana();
                        if (InCombat == 0 and IsAggroed == 0) then
                                if (state == 1) then
                                        Perl_CombatDisplay_Frame:Show();
                                else
                                        Perl_CombatDisplay_Frame:Hide();
                                end
                        end
                end
                if (arg1 == "pet") then
                        if (showpetbars == 1) then
                                Perl_CombatDisplay_Update_PetManaBarColor();    -- What type of energy are we using now?
                                Perl_CombatDisplay_Update_PetMana();            -- Update the energy info immediately
                        end
                end
                return;
        elseif (event == "UNIT_PET") then
                Perl_CombatDisplay_CheckForPets();
                return;
        elseif ((event == "VARIABLES_LOADED") or (event=="PLAYER_ENTERING_WORLD")) then
                local powertype = UnitPowerType("player");
                InCombat = 0;
                IsAggroed = 0;

                if (UnitHealth("player") == UnitHealthMax("player")) then
                        healthfull = 1;
                else
                        healthfull = 0;
                end
                if (powertype == 0 or powertype == 3) then
                        if (UnitMana("player") == UnitManaMax("player")) then
                                manafull = 1;
                        else
                                manafull = 0;
                        end
                elseif (powertype == 1) then
                        if (UnitMana("player") == 0) then
                                manafull = 1;
                        else
                                manafull = 0;
                        end
                end

                -- Check if we loaded the mod already.
                if (Initialized) then
                        Perl_CombatDisplay_UpdateBars();        -- what class are we? display the right color bars
                        Perl_CombatDisplay_Update_Health();     -- make sure we dont display 0/0 on load
                        Perl_CombatDisplay_Update_Mana();       -- make sure we dont display 0/0 on load
                        Perl_CombatDisplay_UpdateDisplay();     -- what mode are we in?
                        Perl_CombatDisplay_Set_Scale();         -- set the correct scale
                        Perl_CombatDisplay_Set_Transparency();  -- set the transparency
                        Perl_CombatDisplay_CheckForPets();      -- do we have a pet out?
                else
                        Perl_CombatDisplay_Initialize();
                end
                return;
        elseif (event == "ADDON_LOADED") then
                if (arg1 == "Perl_CombatDisplay") then
                        Perl_CombatDisplay_myAddOns_Support();
                end
                return;
        else
                return;
        end
end


-------------------------------
-- Loading Settings Function --
-------------------------------
function Perl_CombatDisplay_Initialize()
        -- Check if a previous exists, if not, enable by default.
        if (type(Perl_CombatDisplay_Config[UnitName("player")]) == "table") then
                Perl_CombatDisplay_GetVars();
        else
                Perl_CombatDisplay_UpdateVars();
        end

        -- Major config options.
        Perl_CombatDisplay_Initialize_Frame_Color();
        Perl_CombatDisplay_Target_Frame:Hide();

        Perl_CombatDisplay_UpdateBars();        -- Display the bars appropriate to your class
        Perl_CombatDisplay_UpdateDisplay();     -- Show or hide the window based on whats happening
        Perl_CombatDisplay_CheckForPets();      -- do we have a pet out?

        Initialized = 1;
end

function Perl_CombatDisplay_Initialize_Frame_Color()
        Perl_CombatDisplay_ManaFrame:SetBackdropColor(0, 0, 0, 1);
        Perl_CombatDisplay_ManaFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
        Perl_CombatDisplay_HealthBarText:SetTextColor(1, 1, 1, 1);
        Perl_CombatDisplay_ManaBarText:SetTextColor(1, 1, 1, 1);
        Perl_CombatDisplay_CPBarText:SetTextColor(1, 1, 1, 1);
        Perl_CombatDisplay_PetHealthBarText:SetTextColor(1, 1, 1, 1);
        Perl_CombatDisplay_PetManaBarText:SetTextColor(1, 1, 1, 1);

        Perl_CombatDisplay_Target_ManaFrame:SetBackdropColor(0, 0, 0, 1);
        Perl_CombatDisplay_Target_ManaFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
        Perl_CombatDisplay_Target_HealthBarText:SetTextColor(1, 1, 1, 1);
        Perl_CombatDisplay_Target_ManaBarText:SetTextColor(1, 1, 1, 1);
end


----------------------
-- Update Functions --
----------------------
function Perl_CombatDisplay_UpdateDisplay()
        if (state == 0) then
                Perl_CombatDisplay_Frame:Hide();
                Perl_CombatDisplay_Target_Frame:Hide();
                Perl_CombatDisplay_Frame:StopMovingOrSizing();
                Perl_CombatDisplay_Target_Frame:StopMovingOrSizing();
        elseif (state == 1) then
                Perl_CombatDisplay_Frame:Show();
                Perl_CombatDisplay_Target_Show();
        elseif (state == 2) then
                if (InCombat == 1) then
                        Perl_CombatDisplay_Frame:Show();
                        Perl_CombatDisplay_Target_Show();
                elseif (manapersist == 1 and manafull == 0) then
                        Perl_CombatDisplay_Frame:Show();
                        Perl_CombatDisplay_Target_Show();
                elseif (healthpersist == 1 and healthfull == 0) then
                        Perl_CombatDisplay_Frame:Show();
                        Perl_CombatDisplay_Target_Show();
                else
                        Perl_CombatDisplay_Frame:Hide();
                        Perl_CombatDisplay_Target_Frame:Hide();
                        Perl_CombatDisplay_Frame:StopMovingOrSizing();
                        Perl_CombatDisplay_Target_Frame:StopMovingOrSizing();
                end
        elseif (state == 3) then
                if (IsAggroed == 1) then
                        Perl_CombatDisplay_Frame:Show();
                        Perl_CombatDisplay_Target_Show();
                elseif (manapersist == 1 and manafull == 0) then
                        Perl_CombatDisplay_Frame:Show();
                        Perl_CombatDisplay_Target_Show();
                elseif (healthpersist == 1 and healthfull == 0) then
                        Perl_CombatDisplay_Frame:Show();
                        Perl_CombatDisplay_Target_Show();
                else
                        Perl_CombatDisplay_Frame:Hide();
                        Perl_CombatDisplay_Target_Frame:Hide();
                        Perl_CombatDisplay_Frame:StopMovingOrSizing();
                        Perl_CombatDisplay_Target_Frame:StopMovingOrSizing();
                end
        end
end

function Perl_CombatDisplay_Update_Health()
        local playerhealth = UnitHealth("player");
        local playerhealthmax = UnitHealthMax("player");

        if (UnitIsDead("player") or UnitIsGhost("player")) then                         -- This prevents negative health
                playerhealth = 0;
        end

        if (PCUF_COLORHEALTH == 1) then
                local playerhealthpercent = floor(playerhealth/playerhealthmax*100+0.5);
                if ((playerhealthpercent <= 100) and (playerhealthpercent > 75)) then
                        Perl_CombatDisplay_HealthBar:SetStatusBarColor(0, 0.8, 0);
                        Perl_CombatDisplay_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
                elseif ((playerhealthpercent <= 75) and (playerhealthpercent > 50)) then
                        Perl_CombatDisplay_HealthBar:SetStatusBarColor(1, 1, 0);
                        Perl_CombatDisplay_HealthBarBG:SetStatusBarColor(1, 1, 0, 0.25);
                elseif ((playerhealthpercent <= 50) and (playerhealthpercent > 25)) then
                        Perl_CombatDisplay_HealthBar:SetStatusBarColor(1, 0.5, 0);
                        Perl_CombatDisplay_HealthBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
                else
                        Perl_CombatDisplay_HealthBar:SetStatusBarColor(1, 0, 0);
                        Perl_CombatDisplay_HealthBarBG:SetStatusBarColor(1, 0, 0, 0.25);
                end
        else
                Perl_CombatDisplay_HealthBar:SetStatusBarColor(0, 0.8, 0);
                Perl_CombatDisplay_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
        end

        Perl_CombatDisplay_HealthBar:SetMinMaxValues(0, playerhealthmax);
        Perl_CombatDisplay_HealthBar:SetValue(playerhealth);
        Perl_CombatDisplay_HealthBarText:SetText(playerhealth.."/"..playerhealthmax);
end

function Perl_CombatDisplay_Update_Mana()
        local playermana = UnitMana("player");
        local playermanamax = UnitManaMax("player");
        local playerpower = UnitPowerType("player");

        if (UnitIsDead("player") or UnitIsGhost("player")) then                         -- This prevents negative mana
                playermana = 0;
        end

        Perl_CombatDisplay_ManaBar:SetMinMaxValues(0, playermanamax);
        Perl_CombatDisplay_ManaBar:SetValue(playermana);

        if (playerpower == 1) then
                Perl_CombatDisplay_ManaBarText:SetText(playermana);
        else
                Perl_CombatDisplay_ManaBarText:SetText(playermana.."/"..playermanamax);
        end

        if (showdruidbar == 1) then
                if (DruidBarKey and (UnitClass("player") == PERL_LOCALIZED_DRUID)) then
                        if (playerpower > 0) then
                                -- Show the bars and set the text and reposition the original mana bar below the druid bar
                                local playerdruidbarmana = floor(DruidBarKey.keepthemana);
                                local playerdruidbarmanamax = DruidBarKey.maxmana;
                                local playerdruidbarmanapercent = floor(playerdruidbarmana/playerdruidbarmanamax*100+0.5);

                                if (playerdruidbarmanapercent == 100) then              -- This is to ensure the value isn't 1 or 2 mana under max when 100%
                                        playerdruidbarmana = playerdruidbarmanamax;
                                end

                                Perl_CombatDisplay_DruidBar:SetMinMaxValues(0, playerdruidbarmanamax);
                                Perl_CombatDisplay_DruidBar:SetValue(playerdruidbarmana);

                                -- Show the bar and adjust the stats frame
                                Perl_CombatDisplay_DruidBar:Show();
                                Perl_CombatDisplay_DruidBarBG:Show();
                                Perl_CombatDisplay_ManaBar:SetPoint("TOP", "Perl_CombatDisplay_DruidBar", "BOTTOM", 0, -2);
                                if (playerpower == 3) then
                                        Perl_CombatDisplay_ManaFrame:SetHeight(66);             -- Energy and Combo Points
                                        Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(66);
                                else
                                        Perl_CombatDisplay_ManaFrame:SetHeight(54);             -- Rage
                                        Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(54);
                                end

                                -- Display the needed text
                                Perl_CombatDisplay_DruidBarText:SetText(playerdruidbarmana.."/"..playerdruidbarmanamax);
                        else
                                -- Hide it all (bars and text)
                                Perl_CombatDisplay_DruidBarText:SetText();
                                Perl_CombatDisplay_DruidBar:Hide();
                                Perl_CombatDisplay_DruidBarBG:Hide();
                                Perl_CombatDisplay_ManaBar:SetPoint("TOP", "Perl_CombatDisplay_HealthBar", "BOTTOM", 0, -2);
                                if (playerpower == 3) then
                                        Perl_CombatDisplay_ManaFrame:SetHeight(54);             -- Energy and Combo Points
                                        Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(54);
                                else
                                        Perl_CombatDisplay_ManaFrame:SetHeight(42);             -- Using mana or rage, use default height
                                        Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(42);
                                end
                        end
                else
                        -- Hide it all (bars and text)
                        Perl_CombatDisplay_DruidBarText:SetText();
                        Perl_CombatDisplay_DruidBar:Hide();
                        Perl_CombatDisplay_DruidBarBG:Hide();
                        Perl_CombatDisplay_ManaBar:SetPoint("TOP", "Perl_CombatDisplay_HealthBar", "BOTTOM", 0, -2);
                        if (playerpower == 3) then
                                Perl_CombatDisplay_ManaFrame:SetHeight(54);             -- Energy and Combo Points
                                Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(54);
                        else
                                Perl_CombatDisplay_ManaFrame:SetHeight(42);             -- Using mana or rage, use default height
                                Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(42);
                        end
                end
        else
                -- Hide it all (bars and text)
                Perl_CombatDisplay_DruidBarText:SetText();
                Perl_CombatDisplay_DruidBar:Hide();
                Perl_CombatDisplay_DruidBarBG:Hide();
                Perl_CombatDisplay_ManaBar:SetPoint("TOP", "Perl_CombatDisplay_HealthBar", "BOTTOM", 0, -2);
                if (playerpower == 3) then
                        Perl_CombatDisplay_ManaFrame:SetHeight(54);             -- Energy and Combo Points
                        Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(54);
                else
                        Perl_CombatDisplay_ManaFrame:SetHeight(42);             -- Using mana or rage, use default height
                        Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(42);
                end
        end

        if (showpetbars == 1) then                                                      -- running this check here since all the previous if's will undo it if i don't
                if (UnitExists("pet")) then
                        Perl_CombatDisplay_ManaFrame:SetHeight(66);                     -- health and mana/focus bar
                        Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(66);
                end
        end
end

function Perl_CombatDisplay_Update_Combo_Points()
        Perl_CombatDisplay_CPBarText:SetText(GetComboPoints()..'/5');
        Perl_CombatDisplay_CPBar:SetValue(GetComboPoints());
end

function Perl_CombatDisplay_UpdateBars()
        local playerpower = UnitPowerType("player");

        -- Set power type specific events and colors.
        if (playerpower == 0) then              -- mana
                Perl_CombatDisplay_ManaBar:SetStatusBarColor(0, 0, 1, 1);
                Perl_CombatDisplay_ManaBarBG:SetStatusBarColor(0, 0, 1, 0.25);
                -- Hide CP Bar
                Perl_CombatDisplay_CPBar:Hide();
                Perl_CombatDisplay_CPBarBG:Hide();
                Perl_CombatDisplay_CPBarText:Hide();
                Perl_CombatDisplay_ManaFrame:SetHeight(42);
                Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(42);
                return;
        elseif (playerpower == 1) then          -- rage
                Perl_CombatDisplay_ManaBar:SetStatusBarColor(1, 0, 0, 1);
                Perl_CombatDisplay_ManaBarBG:SetStatusBarColor(1, 0, 0, 0.25);
                -- Hide CP Bar
                Perl_CombatDisplay_CPBar:Hide();
                Perl_CombatDisplay_CPBarBG:Hide();
                Perl_CombatDisplay_CPBarText:Hide();
                Perl_CombatDisplay_ManaFrame:SetHeight(42);
                Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(42);
                return;
        elseif (playerpower == 3) then          -- energy
                this:RegisterEvent("PLAYER_COMBO_POINTS");
                Perl_CombatDisplay_ManaBar:SetStatusBarColor(1, 1, 0, 1);
                Perl_CombatDisplay_ManaBarBG:SetStatusBarColor(1, 1, 0, 0.25);
                -- Setup CP Bar
                Perl_CombatDisplay_CPBar:Show();
                Perl_CombatDisplay_CPBarBG:Show();
                Perl_CombatDisplay_CPBarText:Show();
                Perl_CombatDisplay_CPBarText:SetText('0/5');
                Perl_CombatDisplay_ManaFrame:SetHeight(54);
                Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(54);
                Perl_CombatDisplay_CPBar:SetMinMaxValues(0,5);
                Perl_CombatDisplay_CPBar:SetValue(GetComboPoints());
                return;
        end
end

function Perl_CombatDisplay_CheckForPets()
        if (showpetbars == 1 and UnitExists("pet")) then
                Perl_CombatDisplay_PetHealthBar:Show();
                Perl_CombatDisplay_PetHealthBarBG:Show();
                Perl_CombatDisplay_PetManaBar:Show();
                Perl_CombatDisplay_PetManaBarBG:Show();
                Perl_CombatDisplay_ManaFrame:SetHeight(66);                     -- health and mana/focus bar
                Perl_CombatDisplay_ManaFrame_CastClickOverlay:SetHeight(66);
                Perl_CombatDisplay_Update_PetManaBarColor();
                Perl_CombatDisplay_Update_PetHealth();
                Perl_CombatDisplay_Update_PetMana();
        else
                Perl_CombatDisplay_PetHealthBar:Hide();
                Perl_CombatDisplay_PetHealthBarBG:Hide();
                Perl_CombatDisplay_PetManaBar:Hide();
                Perl_CombatDisplay_PetManaBarBG:Hide();
                Perl_CombatDisplay_UpdateBars();
        end
end

function Perl_CombatDisplay_Update_PetManaBarColor()
        local petpower = UnitPowerType("pet");
        -- Set mana bar color
        if (petpower == 0) then                 -- mana
                Perl_CombatDisplay_PetManaBar:SetStatusBarColor(0, 0, 1, 1);
                Perl_CombatDisplay_PetManaBarBG:SetStatusBarColor(0, 0, 1, 0.25);
        elseif (petpower == 2) then             -- focus
                Perl_CombatDisplay_PetManaBar:SetStatusBarColor(1, 0.5, 0, 1);
                Perl_CombatDisplay_PetManaBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
        end
end

function Perl_CombatDisplay_Update_PetHealth()
        local pethealth = UnitHealth("pet");
        local pethealthmax = UnitHealthMax("pet");

        if (UnitIsDead("pet") or UnitIsGhost("pet")) then                               -- This prevents negative health
                pethealth = 0;
        end

        if (PCUF_COLORHEALTH == 1) then
                local pethealthpercent = floor(pethealth/pethealthmax*100+0.5);
                if ((pethealthpercent <= 100) and (pethealthpercent > 75)) then
                        Perl_CombatDisplay_PetHealthBar:SetStatusBarColor(0, 0.8, 0);
                        Perl_CombatDisplay_PetHealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
                elseif ((pethealthpercent <= 75) and (pethealthpercent > 50)) then
                        Perl_CombatDisplay_PetHealthBar:SetStatusBarColor(1, 1, 0);
                        Perl_CombatDisplay_PetHealthBarBG:SetStatusBarColor(1, 1, 0, 0.25);
                elseif ((pethealthpercent <= 50) and (pethealthpercent > 25)) then
                        Perl_CombatDisplay_PetHealthBar:SetStatusBarColor(1, 0.5, 0);
                        Perl_CombatDisplay_PetHealthBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
                else
                        Perl_CombatDisplay_PetHealthBar:SetStatusBarColor(1, 0, 0);
                        Perl_CombatDisplay_PetHealthBarBG:SetStatusBarColor(1, 0, 0, 0.25);
                end
        else
                Perl_CombatDisplay_PetHealthBar:SetStatusBarColor(0, 0.8, 0);
                Perl_CombatDisplay_PetHealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
        end

        Perl_CombatDisplay_PetHealthBar:SetMinMaxValues(0, pethealthmax);
        Perl_CombatDisplay_PetHealthBar:SetValue(pethealth);
        Perl_CombatDisplay_PetHealthBarText:SetText(pethealth.."/"..pethealthmax);
end

function Perl_CombatDisplay_Update_PetMana()
        local petmana = UnitMana("pet");
        local petmanamax = UnitManaMax("pet");
        local petpower = UnitPowerType("pet");

        if (UnitIsDead("pet") or UnitIsGhost("pet")) then                               -- This prevents negative mana
                petmana = 0;
        end

        Perl_CombatDisplay_PetManaBar:SetMinMaxValues(0, petmanamax);
        Perl_CombatDisplay_PetManaBar:SetValue(petmana);

        if (petpower == 2) then
                Perl_CombatDisplay_PetManaBarText:SetText(petmana);
        else
                Perl_CombatDisplay_PetManaBarText:SetText(petmana.."/"..petmanamax);
        end
end


-------------------------------
-- Update Functions (Target) --
-------------------------------
function Perl_CombatDisplay_Target_UpdateAll()
        if (UnitExists("target")) then
                Perl_CombatDisplay_Target_Update_Health();
                Perl_CombatDisplay_Target_Update_Mana();
                Perl_CombatDisplay_Target_UpdateBars();
        end
end

function Perl_CombatDisplay_Target_Update_Health()
        local targethealth = UnitHealth("target");
        local targethealthmax = UnitHealthMax("target");

        if (UnitIsDead("target") or UnitIsGhost("target")) then                         -- This prevents negative health
                targethealth = 0;
        end

        if (PCUF_COLORHEALTH == 1) then
                local targethealthpercent = floor(targethealth/targethealthmax*100+0.5);
                if ((targethealthpercent <= 100) and (targethealthpercent > 75)) then
                        Perl_CombatDisplay_Target_HealthBar:SetStatusBarColor(0, 0.8, 0);
                        Perl_CombatDisplay_Target_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
                elseif ((targethealthpercent <= 75) and (targethealthpercent > 50)) then
                        Perl_CombatDisplay_Target_HealthBar:SetStatusBarColor(1, 1, 0);
                        Perl_CombatDisplay_Target_HealthBarBG:SetStatusBarColor(1, 1, 0, 0.25);
                elseif ((targethealthpercent <= 50) and (targethealthpercent > 25)) then
                        Perl_CombatDisplay_Target_HealthBar:SetStatusBarColor(1, 0.5, 0);
                        Perl_CombatDisplay_Target_HealthBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
                else
                        Perl_CombatDisplay_Target_HealthBar:SetStatusBarColor(1, 0, 0);
                        Perl_CombatDisplay_Target_HealthBarBG:SetStatusBarColor(1, 0, 0, 0.25);
                end
        else
                Perl_CombatDisplay_Target_HealthBar:SetStatusBarColor(0, 0.8, 0);
                Perl_CombatDisplay_Target_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
        end

        Perl_CombatDisplay_Target_HealthBar:SetMinMaxValues(0, targethealthmax);
        Perl_CombatDisplay_Target_HealthBar:SetValue(targethealth);

        if (targethealthmax == 100) then
                -- Begin Mobhealth support
                if (mobhealthsupport == 1) then
                        if (MobHealthFrame) then
                                local index;
                                if UnitIsPlayer("target") then
                                        index = UnitName("target");
                                else
                                        index = UnitName("target")..":"..UnitLevel("target");
                                end

                                if ((MobHealthDB and MobHealthDB[index]) or (MobHealthPlayerDB and MobHealthPlayerDB[index])) then
                                        local s, e;
                                        local pts;
                                        local pct;

                                        if MobHealthDB[index] then
                                                if (type(MobHealthDB[index]) ~= "string") then
                                                        Perl_CombatDisplay_Target_HealthBarText:SetText(targethealth.."%");
                                                end
                                                s, e, pts, pct = string.find(MobHealthDB[index], "^(%d+)/(%d+)$");
                                        else
                                                if (type(MobHealthPlayerDB[index]) ~= "string") then
                                                        Perl_CombatDisplay_Target_HealthBarText:SetText(targethealth.."%");
                                                end
                                                s, e, pts, pct = string.find(MobHealthPlayerDB[index], "^(%d+)/(%d+)$");
                                        end

                                        if (pts and pct) then
                                                pts = pts + 0;
                                                pct = pct + 0;
                                                if (pct ~= 0) then
                                                        pointsPerPct = pts / pct;
                                                else
                                                        pointsPerPct = 0;
                                                end
                                        end

                                        local currentPct = UnitHealth("target");
                                        if (pointsPerPct > 0) then
                                                Perl_CombatDisplay_Target_HealthBarText:SetText(string.format("%d", (currentPct * pointsPerPct) + 0.5).."/"..string.format("%d", (100 * pointsPerPct) + 0.5).." | "..targethealth.."%");        -- Stored unit info from the DB
                                        end
                                else
                                        Perl_CombatDisplay_Target_HealthBarText:SetText(targethealth.."%");     -- Unit not in MobHealth DB
                                end
                        -- End MobHealth Support
                        else
                                Perl_CombatDisplay_Target_HealthBarText:SetText(targethealth.."%");     -- MobHealth isn't installed
                        end
                else    -- mobhealthsupport == 0
                        Perl_CombatDisplay_Target_HealthBarText:SetText(targethealth.."%");     -- MobHealth support is disabled
                end
        else
                Perl_CombatDisplay_Target_HealthBarText:SetText(targethealth.."/"..targethealthmax);    -- Self/Party/Raid member
        end
end

function Perl_CombatDisplay_Target_Update_Mana()
        local targetmana = UnitMana("target");
        local targetmanamax = UnitManaMax("target");
        local targetpowertype = UnitPowerType("target");

        if (UnitIsDead("target") or UnitIsGhost("target")) then                         -- This prevents negative mana
                targetmana = 0;
        end

        Perl_CombatDisplay_Target_ManaBar:SetMinMaxValues(0, targetmanamax);
        Perl_CombatDisplay_Target_ManaBar:SetValue(targetmana);

        if (targetpowertype == 1 or targetpowertype == 2) then
                Perl_CombatDisplay_Target_ManaBarText:SetText(targetmana);
        else
                Perl_CombatDisplay_Target_ManaBarText:SetText(targetmana.."/"..targetmanamax);
        end
end

function Perl_CombatDisplay_Target_UpdateBars()
        local targetmanamax = UnitManaMax("target");
        local targetpowertype = UnitPowerType("target");

        -- Set power type specific events and colors.
        if (targetmanamax == 0) then
                Perl_CombatDisplay_Target_ManaBar:Hide();
                Perl_CombatDisplay_Target_ManaBarBG:Hide();
                Perl_CombatDisplay_Target_ManaFrame:SetHeight(30);
                Perl_CombatDisplay_Target_ManaFrame_CastClickOverlay:SetHeight(30);
        elseif (targetpowertype == 0) then      -- mana
                Perl_CombatDisplay_Target_ManaBar:SetStatusBarColor(0, 0, 1, 1);
                Perl_CombatDisplay_Target_ManaBarBG:SetStatusBarColor(0, 0, 1, 0.25);
                Perl_CombatDisplay_Target_ManaBar:Show();
                Perl_CombatDisplay_Target_ManaBarBG:Show();
                Perl_CombatDisplay_Target_ManaFrame:SetHeight(42);
                Perl_CombatDisplay_Target_ManaFrame_CastClickOverlay:SetHeight(42);
                return;
        elseif (targetpowertype == 1) then      -- rage
                Perl_CombatDisplay_Target_ManaBar:SetStatusBarColor(1, 0, 0, 1);
                Perl_CombatDisplay_Target_ManaBarBG:SetStatusBarColor(1, 0, 0, 0.25);
                Perl_CombatDisplay_Target_ManaBar:Show();
                Perl_CombatDisplay_Target_ManaBarBG:Show();
                Perl_CombatDisplay_Target_ManaFrame:SetHeight(42);
                Perl_CombatDisplay_Target_ManaFrame_CastClickOverlay:SetHeight(42);
                return;
        elseif (targetpowertype == 2) then      -- focus
                Perl_CombatDisplay_Target_ManaBar:SetStatusBarColor(1, 0.5, 0, 1);
                Perl_CombatDisplay_Target_ManaBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
                Perl_CombatDisplay_Target_ManaBar:Show();
                Perl_CombatDisplay_Target_ManaBarBG:Show();
                Perl_CombatDisplay_Target_ManaFrame:SetHeight(42);
                Perl_CombatDisplay_Target_ManaFrame_CastClickOverlay:SetHeight(42);
                return;
        elseif (targetpowertype == 3) then      -- energy
                Perl_CombatDisplay_Target_ManaBar:SetStatusBarColor(1, 1, 0, 1);
                Perl_CombatDisplay_Target_ManaBarBG:SetStatusBarColor(1, 1, 0, 0.25);
                Perl_CombatDisplay_Target_ManaBar:Show();
                Perl_CombatDisplay_Target_ManaBarBG:Show();
                Perl_CombatDisplay_Target_ManaFrame:SetHeight(42);
                Perl_CombatDisplay_Target_ManaFrame_CastClickOverlay:SetHeight(42);
                return;
        end
end

function Perl_CombatDisplay_Target_Show()
        if (showtarget == 1) then
                if (UnitExists("target")) then
                        Perl_CombatDisplay_Target_Frame:Show();
                        Perl_CombatDisplay_Target_UpdateAll();
                else
                        Perl_CombatDisplay_Target_Frame:Hide();
                end
        end
end


--------------------------
-- GUI Config Functions --
--------------------------
function Perl_CombatDisplay_Set_State(newvalue)
        state = newvalue;
        Perl_CombatDisplay_UpdateVars();
        Perl_CombatDisplay_UpdateDisplay();
end

function Perl_CombatDisplay_Set_Health_Persistance(newvalue)
        healthpersist = newvalue;
        Perl_CombatDisplay_UpdateVars();
        Perl_CombatDisplay_UpdateDisplay();
end

function Perl_CombatDisplay_Set_Mana_Persistance(newvalue)
        manapersist = newvalue;
        Perl_CombatDisplay_UpdateVars();
        Perl_CombatDisplay_UpdateDisplay();
end

function Perl_CombatDisplay_Set_Lock(newvalue)
        locked = newvalue;
        Perl_CombatDisplay_UpdateVars();
end

function Perl_CombatDisplay_Set_Target(newvalue)
        showtarget = newvalue;
        Perl_CombatDisplay_UpdateVars();
        if (showtarget == 0) then
                Perl_CombatDisplay_Target_Frame:Hide();
        end
        Perl_CombatDisplay_UpdateDisplay();
end

function Perl_CombatDisplay_Set_MobHealth(newvalue)
        mobhealthsupport = newvalue;
        Perl_CombatDisplay_UpdateVars();
        Perl_CombatDisplay_Target_Update_Health();
end

function Perl_CombatDisplay_Set_DruidBar(newvalue)
        showdruidbar = newvalue;
        Perl_CombatDisplay_UpdateVars();
        Perl_CombatDisplay_Update_Mana();
end

function Perl_CombatDisplay_Set_PetBars(newvalue)
        showpetbars = newvalue;
        Perl_CombatDisplay_UpdateVars();
        Perl_CombatDisplay_CheckForPets();
end

function Perl_CombatDisplay_Set_Scale(number)
        local unsavedscale;
        if (number ~= nil) then
                scale = (number / 100);                                 -- convert the user input to a wow acceptable value
        end
        unsavedscale = 1 - UIParent:GetEffectiveScale() + scale;        -- run it through the scaling formula introduced in 1.9
        Perl_CombatDisplay_Frame:SetScale(unsavedscale);
        Perl_CombatDisplay_Target_Frame:SetScale(unsavedscale);
        Perl_CombatDisplay_UpdateVars();
end

function Perl_CombatDisplay_Set_Transparency(number)
        if (number ~= nil) then
                transparency = (number / 100);                          -- convert the user input to a wow acceptable value
        end
        Perl_CombatDisplay_Frame:SetAlpha(transparency);
        Perl_CombatDisplay_Target_Frame:SetAlpha(transparency);
        Perl_CombatDisplay_UpdateVars();
end


------------------------------
-- Saved Variable Functions --
------------------------------
function Perl_CombatDisplay_GetVars()
        state = Perl_CombatDisplay_Config[UnitName("player")]["State"];
        locked = Perl_CombatDisplay_Config[UnitName("player")]["Locked"];
        healthpersist = Perl_CombatDisplay_Config[UnitName("player")]["HealthPersist"];
        manapersist = Perl_CombatDisplay_Config[UnitName("player")]["ManaPersist"];
        scale = Perl_CombatDisplay_Config[UnitName("player")]["Scale"];
        transparency = Perl_CombatDisplay_Config[UnitName("player")]["Transparency"];
        showtarget = Perl_CombatDisplay_Config[UnitName("player")]["ShowTarget"];
        mobhealthsupport = Perl_CombatDisplay_Config[UnitName("player")]["MobHealthSupport"];
        showdruidbar = Perl_CombatDisplay_Config[UnitName("player")]["ShowDruidBar"];
        showpetbars = Perl_CombatDisplay_Config[UnitName("player")]["ShowPetBars"];

        if (state == nil) then
                state = 3;
        end
        if (locked == nil) then
                locked = 0;
        end
        if (healthpersist == nil) then
                healthpersist = 0;
        end
        if (manapersist == nil) then
                manapersist = 0;
        end
        if (scale == nil) then
                scale = 1;
        end
        if (transparency == nil) then
                transparency = 1;
        end
        if (showtarget == nil) then
                showtarget = 0;
        end
        if (mobhealthsupport == nil) then
                mobhealthsupport = 1;
        end
        if (showdruidbar == nil) then
                showdruidbar = 1;
        end
        if (showpetbars == nil) then
                showpetbars = 0;
        end

        local vars = {
                ["state"] = state,
                ["manapersist"] = manapersist,
                ["healthpersist"] = healthpersist,
                ["locked"] = locked,
                ["scale"] = scale,
                ["transparency"] = transparency,
                ["showtarget"] = showtarget,
                ["mobhealthsupport"] = mobhealthsupport,
                ["showdruidbar"] = showdruidbar,
                ["showpetbars"] = showpetbars,
        }
        return vars;
end

function Perl_CombatDisplay_UpdateVars(vartable)
        if (vartable ~= nil) then
                -- Sanity checks in case you use a load from an old version
                if (vartable["Global Settings"] ~= nil) then
                        if (vartable["Global Settings"]["State"] ~= nil) then
                                state = vartable["Global Settings"]["State"];
                        else
                                state = nil;
                        end
                        if (vartable["Global Settings"]["Locked"] ~= nil) then
                                locked = vartable["Global Settings"]["Locked"];
                        else
                                locked = nil;
                        end
                        if (vartable["Global Settings"]["HealthPersist"] ~= nil) then
                                healthpersist = vartable["Global Settings"]["HealthPersist"];
                        else
                                healthpersist = nil;
                        end
                        if (vartable["Global Settings"]["ManaPersist"] ~= nil) then
                                manapersist = vartable["Global Settings"]["ManaPersist"];
                        else
                                manapersist = nil;
                        end
                        if (vartable["Global Settings"]["Scale"] ~= nil) then
                                scale = vartable["Global Settings"]["Scale"];
                        else
                                scale = nil;
                        end
                        if (vartable["Global Settings"]["Transparency"] ~= nil) then
                                transparency = vartable["Global Settings"]["Transparency"];
                        else
                                transparency = nil;
                        end
                        if (vartable["Global Settings"]["ShowTarget"] ~= nil) then
                                showtarget = vartable["Global Settings"]["ShowTarget"];
                        else
                                showtarget = nil;
                        end
                        if (vartable["Global Settings"]["MobHealthSupport"] ~= nil) then
                                mobhealthsupport = vartable["Global Settings"]["MobHealthSupport"];
                        else
                                mobhealthsupport = nil;
                        end
                        if (vartable["Global Settings"]["ShowDruidBar"] ~= nil) then
                                showdruidbar = vartable["Global Settings"]["ShowDruidBar"];
                        else
                                showdruidbar = nil;
                        end
                        if (vartable["Global Settings"]["ShowPetBars"] ~= nil) then
                                showpetbars = vartable["Global Settings"]["ShowPetBars"];
                        else
                                showpetbars = nil;
                        end
                end

                -- Set the new values if any new values were found, same defaults as above
                if (state == nil) then
                        state = 3;
                end
                if (locked == nil) then
                        locked = 0;
                end
                if (healthpersist == nil) then
                        healthpersist = 0;
                end
                if (manapersist == nil) then
                        manapersist = 0;
                end
                if (scale == nil) then
                        scale = 1;
                end
                if (transparency == nil) then
                        transparency = 1;
                end
                if (showtarget == nil) then
                        showtarget = 0;
                end
                if (mobhealthsupport == nil) then
                        mobhealthsupport = 1;
                end
                if (showdruidbar == nil) then
                        showdruidbar = 1;
                end
                if (showpetbars == nil) then
                        showpetbars = 0;
                end

                -- Call any code we need to activate them
                Perl_CombatDisplay_Set_Target(showtarget)
                Perl_CombatDisplay_Target_Update_Health();
                Perl_CombatDisplay_Set_Scale()
                Perl_CombatDisplay_Set_Transparency()
                Perl_CombatDisplay_UpdateDisplay();
        end

        Perl_CombatDisplay_Config[UnitName("player")] = {
                ["State"] = state,
                ["Locked"] = locked,
                ["HealthPersist"] = healthpersist,
                ["ManaPersist"] = manapersist,
                ["Scale"] = scale,
                ["Transparency"] = transparency,
                ["ShowTarget"] = showtarget,
                ["MobHealthSupport"] = mobhealthsupport,
                ["ShowDruidBar"] = showdruidbar,
                ["ShowPetBars"] = showpetbars,
        };
end


-------------------
-- Click Handler --
-------------------
function Perl_CombatDisplayDropDown_OnLoad()
        UIDropDownMenu_Initialize(this, Perl_CombatDisplayDropDown_Initialize, "MENU");
end

function Perl_CombatDisplayDropDown_Initialize()
        UnitPopup_ShowMenu(Perl_CombatDisplay_DropDown, "SELF", "player");
end

function Perl_CombatDisplay_MouseClick(button)
        if (CastPartyConfig and PCUF_CASTPARTYSUPPORT == 1) then
                CastParty_OnClickByUnit(button, "player");
        elseif (Genesis_data and PCUF_CASTPARTYSUPPORT == 1) then
                Genesis_MouseHeal("player", button);
        else
                if (SpellIsTargeting() and button == "RightButton") then
                        SpellStopTargeting();
                        return;
                end

                if (button == "LeftButton") then
                        if (SpellIsTargeting()) then
                                SpellTargetUnit("player");
                        elseif (CursorHasItem()) then
                                DropItemOnUnit("player");
                        else
                                TargetUnit("player");
                        end
                end
        end
end

function Perl_CombatDisplay_MouseDown(button)
        if (button == "LeftButton" and locked == 0) then
                Perl_CombatDisplay_Frame:StartMoving();
        end
end

function Perl_CombatDisplay_MouseUp(button)
        if (button == "RightButton") then
                if ((CastPartyConfig or Genesis_MouseHeal) and PCUF_CASTPARTYSUPPORT == 1) then                         -- cant open the menu from combatdisplay if castparty or genesis is installed
                        -- Do nothing
                else
                        if (not (IsAltKeyDown() or IsControlKeyDown() or IsShiftKeyDown())) then
                                ToggleDropDownMenu(1, nil, Perl_CombatDisplay_DropDown, "Perl_CombatDisplay_Frame", 40, 0);
                        end
                end
        end

        Perl_CombatDisplay_Frame:StopMovingOrSizing();
end


function Perl_CombatDisplayTargetDropDown_OnLoad()
        UIDropDownMenu_Initialize(this, Perl_CombatDisplayTargetDropDown_Initialize, "MENU");
end

function Perl_CombatDisplayTargetDropDown_Initialize()
        local menu = nil;
        if (UnitIsEnemy("target", "player")) then
                return;
        end
        if (UnitIsUnit("target", "player")) then
                menu = "SELF";
        elseif (UnitIsUnit("target", "pet")) then
                menu = "PET";
        elseif (UnitIsPlayer("target")) then
                if (UnitInParty("target")) then
                        menu = "PARTY";
                else
                        menu = "PLAYER";
                end
        end
        if (menu) then
                UnitPopup_ShowMenu(Perl_CombatDisplay_Target_DropDown, menu, "target");
        end
end

function Perl_CombatDisplay_Target_MouseClick(button)
        if (CastPartyConfig and PCUF_CASTPARTYSUPPORT == 1) then
                CastParty_OnClickByUnit(button, "target");
        elseif (Genesis_data and PCUF_CASTPARTYSUPPORT == 1) then
                Genesis_MouseHeal("target", button);
        else
                if (SpellIsTargeting() and button == "RightButton") then
                        SpellStopTargeting();
                        return;
                end

                if (button == "LeftButton") then
                        if (SpellIsTargeting()) then
                                SpellTargetUnit("player");
                        elseif (CursorHasItem()) then
                                DropItemOnUnit("player");
                        else
                                TargetUnit("player");
                        end
                end
        end
end

function Perl_CombatDisplay_Target_MouseDown(button)
        if (button == "LeftButton" and locked == 0) then
                Perl_CombatDisplay_Target_Frame:StartMoving();
        end
end

function Perl_CombatDisplay_Target_MouseUp(button)
        if (button == "RightButton") then
                if ((CastPartyConfig or Genesis_data) and PCUF_CASTPARTYSUPPORT == 1) then                              -- cant open the menu from combatdisplay if castparty or genesis is installed
                        -- Do nothing
                else
                        if (not (IsAltKeyDown() or IsControlKeyDown() or IsShiftKeyDown())) then                -- if alt, ctrl, or shift ARE NOT held, show the menu
                                ToggleDropDownMenu(1, nil, Perl_CombatDisplay_Target_DropDown, "Perl_CombatDisplay_Target_Frame", 40, 0);
                        end
                end
        end

        Perl_CombatDisplay_Target_Frame:StopMovingOrSizing();
end


----------------------
-- myAddOns Support --
----------------------
function Perl_CombatDisplay_myAddOns_Support()
        -- Register the addon in myAddOns
        if(myAddOnsFrame_Register) then
                local Perl_CombatDisplay_myAddOns_Details = {
                        name = "Perl_CombatDisplay",
                        version = "Version 0.58",
                        releaseDate = "April 15, 2006",
                        author = "Perl; Maintained by Global",
                        email = "global@g-ball.com",
                        website = "http://www.curse-gaming.com/mod.php?addid=2257",
                        category = MYADDONS_CATEGORY_OTHERS
                };
                Perl_CombatDisplay_myAddOns_Help = {};
                Perl_CombatDisplay_myAddOns_Help[1] = "/perl";
                myAddOnsFrame_Register(Perl_CombatDisplay_myAddOns_Details, Perl_CombatDisplay_myAddOns_Help);
        end
end

Generated by GNU Enscript 1.6.5.90.