WoWInterface SVN ZoneLevel

[/] [ZoneLevel/] [ZoneLevel.lua] - Rev 39

Compare with Previous | Blame | View Log

--[[ZoneLevel--]]
--[[Soulofsin_007--]]
--[[6.0.5--]]


local zoneLevelShort;
local zoneLevelLow;
local zoneLevelHigh;
local zone;



-- Load/initialization function
function ZoneLevel_OnLoad()
        -- Register for events
        ZoneLevelBase:RegisterEvent("MINIMAP_ZONE_CHANGED");
        ZoneLevelBase:RegisterEvent("VARIABLES_LOADED");
        ZoneLevelBase:RegisterEvent("ZONE_CHANGED_NEW_AREA");
        ZoneLevelBase:RegisterEvent("PLAYER_LEVEL_UP");
    
    DEFAULT_CHAT_FRAME:AddMessage("Welcome to ZoneLevel 6.0.5. Please type /zlvl for help.")
    DEFAULT_CHAT_FRAME:AddMessage("If you find any issue, please email me at soulofsin007@gmail.com -- Thank you!")
  
        
        SLASH_ZoneLevel1 = "/zonelevel";
        SLASH_ZoneLevel2 = "/zlvl";
        SlashCmdList["ZoneLevel"] = ZoneLevel_SlashHandler;
        SLASH_ZoneLevelInfo1 = "/zonelevelinfo";
        SLASH_ZoneLevelInfo2 = "/zinfo";
        SlashCmdList["ZoneLevelInfo"] = ZoneLevel_InfoHandler;
    SLASH_ZoneLevelLDB1 = "/zonelevelldb";
    SLASH_ZoneLevelLDB2 = "/zlvlldb";
    SlashCmdList["ZoneLevelLDB"] = ZoneLevel_LDBHandler;

        zoneLevelOnMap = false;
        zoneLevelShowIcon = true;
        zoneLevelLocked = false;
    zonelevelcords = false;
    zonelevellevel = false;
    zonelevelfps = false;
    zonelevelhonor = false;
    zonelevelhonorsession = false;
    zlvlmaptext = false;
    tankcap = false; -- Put in for personal use.
    zlvlldbfps = false; -- ldb displays
    zlvlldb = false; -- LDB functionality
    zlvlexpbar = true;
    zlvlrepbartext = false;
    zlvlrepbartogo = false;
    
        -- Construct tables to hold level information for each zone
        zoneLevelLow={};
        zoneLevelHigh={};
    zoneLevelShort={};
        ZoneLevel_MakeTables();
end

function ZoneLevel_LDBHandler(arg1)
  if(arg1 == "help") or (arg1 == "") then
    DEFAULT_CHAT_FRAME:AddMessage("fps - adds fps to displays.")
  elseif(arg1 == "fps") then
     if(zlvlldbfps == true) then
       DEFAULT_CHAT_FRAME:AddMessage("Removing it from LDB displays.")
       zlvlldbfps = false;
     elseif(zlvlldbfps == false) then
       DEFAULT_CHAT_FRAME:AddMessage("Showing FPS instead of ZoneLevel on LDB displays.")
       zlvlldbfps = true;
     end
  else
    DEFAULT_CHAT_FRAME:AddMessage("Not Valid")
  end
end


function ZoneLevel_ShowTooltip()
        GameTooltip:SetOwner(ZoneLevelBase, "ANCHOR_BOTTOMLEFT");
        if(ZoneLevel_ZoneIsValid(GetRealZoneText())) then
                ZoneLevel_SetTooltipText();
        else
                GameTooltip:AddLine(ZONELEVEL_ZONENOTFOUNDTOOLTIP, 1.0, 1.0, 1.0);
        end
        GameTooltip:Show();
end

if IsAddOnLoaded("Carousel") or IsAddOnLoaded("Titan Panel") or IsAddOnLoaded("FuBar") or IsAddOnLoaded("StatBlockCore") or IsAddOnLoaded("Wraith") or IsAddOnLoaded("StatBlockCore") or IsAddOnLoaded("cargoShip") or IsAddOnLoaded("Fortress") then
local UPDATEPERIOD, elapsed = 0.5, 0
local ldb = LibStub:GetLibrary("LibDataBroker-1.1")
local dataobj = ldb:NewDataObject("ZoneLevel", {type = "data source", text = "N/A"})
local f = CreateFrame("frame")

f:SetScript("OnUpdate", function(self, elap)
    elapsed = elapsed + elap
    if elapsed < UPDATEPERIOD then return end
    local fps = GetFramerate();
    
    elapsed = 0
    local low = zoneLevelLow[zone];
        local high = zoneLevelHigh[zone];
    capZone = GetRealZoneText();
        zone = string.lower(capZone);
    
    
    if(capZone == "Silvermoon City") then
    dataobj.text = string.format(capZone.." ".."Town")
    elseif(capZone == "Orgrimmar") then
    dataobj.text = string.format(capZone.." ".."Town")
    elseif(capZone == "Thunderbluff") then
    dataobj.text = string.format(capZone.." ".."Town")
    elseif(capZone == "Undercity") then
    dataobj.text = string.format(capZone.." ".."Town")
    elseif(capZone == "The Exodar") then
    dataobj.text = string.format(capZone.." ".."Town")
    elseif(capZone == "Darnassus") then
    dataobj.text = string.format(capZone.." ".."Town")
    elseif(capZone == "Stormwind") then
    dataobj.text = string.format(capZone.." ".."Town")
    elseif(capZone == "Ironforge") then
    dataobj.text = string.format(capZone.." ".."Town")
    elseif(zlvlldbfps == true) then
    dataobj.text = string.format("%.1f FPS", fps)
    else
    dataobj.text = string.format(capZone.." "..low.."-"..high)
   end
end)

function dataobj:OnTooltipShow()
    local low = zoneLevelLow[zone];
        local high = zoneLevelHigh[zone];
    capZone = GetRealZoneText();
        zone = string.lower(capZone);
    local subzone = GetSubZoneText()
    local xp = UnitXP("player")
    local xpmax = UnitXPMax("player")

   self:AddLine("ZoneLevel")
   if(capZone == "Silvermoon City") then
    self:AddLine(capZone.." ".."Town")
   elseif(capZone == "Orgrimmar") then
    self:AddLine(capZone.." ".."Town")
   elseif(capZone == "Thunderbluff") then
    self:AddLine(capZone.." ".."Town")
   elseif(capZone == "Undercity") then
    self:AddLine(capZone.." ".."Town")
   elseif(capZone == "The Exodar") then
    self:AddLine(capZone.." ".."Town")
   elseif(capZone == "Darnassus") then
    self:AddLine(capZone.." ".."Town")
   elseif(capZone == "Stormwind") then
    self:AddLine(capZone.." ".."Town")
   elseif(capZone == "Ironforge") then
    self:AddLine(capZone.." ".."Town")
   else
    self:AddLine(capZone.." "..low.."-"..high)
    self:AddLine(subzone)
    self:AddLine("Current XP "..xp)
    self:AddLine("Max XP "..xpmax)
    self:AddLine("Till Level "..xpmax-xp)
    self:AddLine(rating)
   end

end

function dataobj:OnEnter()
    GameTooltip:SetOwner(self, "ANCHOR_NONE")
    GameTooltip:SetPoint("TOPLEFT", self, "BOTTOMLEFT")
    GameTooltip:ClearLines()
    dataobj.OnTooltipShow(GameTooltip)
    GameTooltip:Show()
end

function dataobj:OnLeave()
    GameTooltip:Hide()
end
end

function ZoneLevel_StartDrag()
end


-- Slash command handler for ZoneLevel
function ZoneLevel_SlashHandler(arg1)
        zone = string.lower(GetRealZoneText());
        
        if(arg1 == "") or (arg1 == "help")
        then
                DEFAULT_CHAT_FRAME:AddMessage("ZoneLevel Help:")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl maptext -- turns on/off the text on the world map.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl minimap -- adds the level of the zone next to the zone name on the minimap.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl icon -- will show or hide the icon.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl lock -- will lock or unlock the icon.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl fps -- adds fps to icon.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl honor -- adds honor to icon.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl cords -- adds cords to icon.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl level -- adds level to icon.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl config -- opens the config window.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl honor session -- adds session info to icon.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl exptogo -- toggles the display of how much more exp you have left to go.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl repbartext -- toggles the display of your current standing with the rep that you are watching.")
        DEFAULT_CHAT_FRAME:AddMessage("/zlvl rebbartogo -- toggles the display of how much more rep you need to gain your next rep up.")
        --DEFAULT_CHAT_FRAME:AddMessage(ZONELEVEL_HELP_HEADER..ZONELEVEL_HELP_MINIMAP..ZONELEVEL_HELP_MAPCMD..
                                                        --ZONELEVEL_HELP_ICON..ZONELEVEL_HELP_ICOCMD..ZONELEVEL_HELP_CMD);
        elseif(arg1 == "minimap") or (arg1 == "mini map")
        then
                if(zoneLevelOnMap)
                then
                        MinimapZoneText:SetText(GetMinimapZoneText());
                        zoneLevelOnMap = false;
                else
                        if(ZoneLevel_ZoneIsValid(zone)) then
                                if(zoneLevelLow[zone] < 1)
                                then
                                        txt = "City";
                                else
                                        txt = "("..zoneLevelLow[zone].." - "..zoneLevelHigh[zone]..") ";
                                end
                        else
                                txt = "N/A"
                        end
                        MinimapZoneText:SetText(txt..GetMinimapZoneText());
                        zoneLevelOnMap = true;
                end
        elseif(arg1 == "icon")
        then
                if(zoneLevelShowIcon)
                then
                        ZoneLevelBase:Hide();
                        zoneLevelShowIcon = false;
            DEFAULT_CHAT_FRAME:AddMessage("Now hiding icon.")
                else
                        ZoneLevelBase:Show();
                        zoneLevelShowIcon = true;
            DEFAULT_CHAT_FRAME:AddMessage("Now showing icon.")
                end
    elseif(arg1 == "config") then
        if(MyFrame:IsShown()) then
          MyFrame:Hide()
        else
          MyFrame:Show()
        end
        elseif(arg1 == "0") or (arg1 == "reload") or (arg1 == "r") or (arg1 == "1") then
        ReloadUI();
    elseif(arg1 == "contribute") or (arg1 == "con") or (arg == "c") then
        DEFAULT_CHAT_FRAME:AddMessage("If you wish to donate, we welcome it, we do not require donations. Please contact me by email soulofsin007@gmail.com")
    elseif(arg1 == "lock") then
        if(zoneLevelLocked == true) then
           DEFAULT_CHAT_FRAME:AddMessage("Unlocking the icon.")
           zoneLevelLocked = false;
                   ZoneLevelBase:GetTitleRegion():SetAllPoints(ZoneLevelBase);
        elseif(zoneLevelLocked == false) then
           DEFAULT_CHAT_FRAME:AddMessage("Locking the icon.")
           zoneLevelLocked = true;
           ZoneLevelBase:GetTitleRegion():ClearAllPoints()
                   ZoneLevelBase:GetTitleRegion():SetPoint("TOPLEFT", frame, "TOPLEFT", 0,0 )
                   ZoneLevelBase:GetTitleRegion():SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", 0,0 )
        end
    elseif(arg1 == "cords") then
        if(zonelevelcords == true) then
          DEFAULT_CHAT_FRAME:AddMessage("Hiding your cords on icon. Need to reload UI for change to take effect. Reload Now? /zlvl 1.")
          zonelevelcords = false;
        elseif(zonelevelcords == false) then
          DEFAULT_CHAT_FRAME:AddMessage("Showing Cords.")
          zonelevelcords = true;
        end
    elseif(arg1 == "level") then
        if(zonelevellevel == true) then
          DEFAULT_CHAT_FRAME:AddMessage("Hiding your level on icon. Need to reload UI for change to take effect. /zlvl 1")
          zonelevellevel = false;
        elseif(zonelevellevel == false) then
          DEFAULT_CHAT_FRAME:AddMessage("Showing your level on icon.")
          zonelevellevel = true;
        end
    elseif(arg1 == "camera") then
        DEFAULT_CHAT_FRAME:AddMessage("Setting camera max view distence.")
        SetCVar("cameraDistanceMax",50)
    elseif(arg1 == "fps") then
        if(zonelevelfps == true) then
          DEFAULT_CHAT_FRAME:AddMessage("Hiding fps from icon. Need to reload UI for change to take effect. /zlvl 1")
          zonelevelfps = false;
        elseif(zonelevelfps == false) then
          DEFAULT_CHAT_FRAME:AddMessage("Adding FPS to icon.")
          zonelevelfps = true;
       end
    elseif(arg1 == "honor") then
       if(zonelevelhonor == true) then
         DEFAULT_CHAT_FRAME:AddMessage("Hiding honor from icon. Need reload UI for change to take effect. /zlvl 1")
         zonelevelhonor = false;
       elseif(zonelevelhonor == false) then
         DEFAULT_CHAT_FRAME:AddMessage("Showing honor on icon.")
         zonelevelhonor = true;
       end
    elseif(arg1 == "honor session") then
       if(zonelevelhonorsession == true) then
         DEFAULT_CHAT_FRAME:AddMessage("Hiding your today honor/kills info from icon. Need reload UI for change to take effect. /zlvl 1.")
         zonelevelhonorsession = false;
       elseif(zonelevelhonorsession == false) then
         DEFAULT_CHAT_FRAME:AddMessage("Showing your today honor/kills info.")
         zonelevelhonorsession = true;
       end
    elseif(arg1 == "tankcap") then -- in for personal use.
       tankcap = true;
    elseif(arg1 == "maptext") then
       if(zlvlmaptext == true) then
         DEFAULT_CHAT_FRAME:AddMessage("Removing text from world map. Please do /zlvl 1 to reload ui.")
         zlvlmaptext = false;
       elseif(zlvlmaptext == false) then
         DEFAULT_CHAT_FRAME:AddMessage("Now showing text on world map.")
         zlvlmaptext = true;
       end
    elseif(arg1 == "exptogo") then
       if(zlvlexpbar == true) then
         DEFAULT_CHAT_FRAME:AddMessage("No longer showing needed exp on bar.")
         zlvlexpbar = false;
       elseif(zlvlexpbar == false) then
         DEFAULT_CHAT_FRAME:AddMessage("Showing need exp to level on bar.")
         zlvlexpbar = true;
       end
    elseif(arg1 == "repbartext") then
       if(zlvlrepbartext == true) then
          DEFAULT_CHAT_FRAME:AddMessage("No longer showing current rep status name on bar.")
          zlvlrepbartext = false;
        elseif(zlvlrepbartext == false) then
          DEFAULT_CHAT_FRAME:AddMessage("Now showing rep status name on bar.")
          zlvlrepbartext = true;
       end
    elseif(arg1 == "repbartogo") then
       if(zlvlrepbartogo == true) then
         DEFAULT_CHAT_FRAME:AddMessage("No longer showing how much more rep you need to rep up.")
         zlvlrepbartogo = false;
       elseif(zlvlrepbartogo == false) then
         DEFAULT_CHAT_FRAME:AddMessage("Toggling display of how much more rep you need to rep up.")
         zlvlrepbartogo = true;
       end
    elseif(arg1 == "reset") then
      DEFAULT_CHAT_FRAME:AddMessage("Reseting icon. Will require reload of UI.")
      ZoneLevelBase:SetPoint("CENTER",0,0)
      ZoneLevelBase:ClearAllPoints()
      zoneLevelLocked = false;
    else
                DEFAULT_CHAT_FRAME:AddMessage(string.format(ZONELEVEL_BADOPT, arg1));
        end

end

function ZoneLevel_InfoHandler(arg1)
        local lower = string.lower(arg1);
        
        capZone = ZoneLevel_TranslateShort(lower);
        if(zoneLevelLow[lower]) then
                zone = lower;
        else
                zone = string.lower(capZone);
        end
        
        if(ZoneLevel_ZoneIsValid(zone)) then
                if(ZoneLevel_ZoneIsTiered(zone))
                then
                        low, high = ZoneLevel_HandleTiering(zone);
                        txt = capZone.." "..(string.format(ZONELEVEL_ZONETEXT, low, high));
                else
                        if(zoneLevelLow[zone] < 1)
                        then
                                txt = capZone.." "..ZONELEVEL_CITYTEXT;
                        else
                                txt = capZone.." "..(string.format(ZONELEVEL_ZONETEXT, zoneLevelLow[zone], zoneLevelHigh[zone]));
                        end

--[[ Commented out for possible color coding in the future

                        local mid = (low+high)/2;
                        if(high < level-5) then -- Grey icon
                                GameTooltip:AddLine(zone, 2.0, 2.0, 2.0);
                        elseif(low > level+5) then -- Red icon
                                GameTooltip:AddLine(zone, 1.0, 0.0, 0.0);
                        elseif(mid < level) then -- Green icon
                                GameTooltip:AddLine(zone, 0.0, 1.0, 0.0);
                        else -- Yellow icon
                                GameTooltip:AddLine(zone, 1.0, 1.0, 0.0);
                        end
]]--
                end
        else -- Zone not found
                txt = ZONELEVEL_ZONENOTFOUNDTOOLTIP;
        end
        
        DEFAULT_CHAT_FRAME:AddMessage(txt);
end

-- Event handler for ZoneLevel
function ZoneLevel_OnEvent()
        if(event == "VARIABLES_LOADED")
        then
        zone = string.lower(GetRealZoneText());
                if(zoneLevelShowIcon)
                then
                        ZoneLevelBase:Show();
                else
                        ZoneLevelBase:Hide();
                end

                if(not zoneLevelOnMap)
                then
                        MinimapZoneText:SetText(GetMinimapZoneText());
                end

                if(zoneLevelLocked)
                then
                        ZoneLevelBase:GetTitleRegion():ClearAllPoints()
                        ZoneLevelBase:GetTitleRegion():SetPoint("TOPLEFT", frame, "TOPLEFT", 0,0 )
                        ZoneLevelBase:GetTitleRegion():SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", 0,0 )
                else
                        ZoneLevelBase:GetTitleRegion():SetAllPoints(ZoneLevelBase);
                end
        else
        --      zone = string.lower(GetRealZoneText());
                local level = UnitLevel("player");

                if(ZoneLevel_ZoneIsValid(zone)) then
                        local low = zoneLevelLow[zone];
                        local high = zoneLevelHigh[zone];

                        if(zoneLevelOnMap)
                        then
                                if(zoneLevelLow[zone] < 1) 
                                then
                                        txt = "("..ZONELEVEL_CITYMINIMAP..") ";
                                else
                                                txt = "("..zoneLevelLow[zone].." - "..zoneLevelHigh[zone]..") ";
                                end
                                MinimapZoneText:SetText(txt..GetMinimapZoneText());
                        end

                        local mid = (low+high)/2;
                        if(zoneLevelLow[zone] < 1) 
                        then
                                ZoneLevelGrey:Hide();
                                ZoneLevelGreen:Hide();
                                ZoneLevelYellow:Hide();
                                ZoneLevelRed:Hide();
                                ZoneLevelCity:Show();
                                ZoneLevelBad:Hide();
                        elseif(high < level-5) then -- Grey icon
                                ZoneLevelGrey:Show();
                                ZoneLevelGreen:Hide();
                                ZoneLevelYellow:Hide();
                                ZoneLevelRed:Hide();
                                ZoneLevelCity:Hide();
                                ZoneLevelBad:Hide();
                        elseif(low > level+5) then -- Red icon
                                ZoneLevelGrey:Hide();
                                ZoneLevelGreen:Hide();
                                ZoneLevelYellow:Hide();
                                ZoneLevelRed:Show();
                                ZoneLevelCity:Hide();
                                ZoneLevelBad:Hide();
                        elseif(mid < level) then -- Green icon
                                ZoneLevelGrey:Hide();
                                ZoneLevelGreen:Show();
                                ZoneLevelYellow:Hide();
                                ZoneLevelRed:Hide();
                                ZoneLevelCity:Hide();
                                ZoneLevelBad:Hide();
                        else -- Yellow icon
                                ZoneLevelGrey:Hide();
                                ZoneLevelGreen:Hide();
                                ZoneLevelYellow:Show();
                                ZoneLevelRed:Hide();
                                ZoneLevelCity:Hide();
                                ZoneLevelBad:Hide();
             end
                else
                        if(event == "ZONE_CHANGED_NEW_AREA")
                        then
                                DEFAULT_CHAT_FRAME:AddMessage(string.format(ZONELEVEL_ZONENOTFOUND, zone));
                                ZoneLevelGrey:Hide();
                                ZoneLevelGreen:Hide();
                                ZoneLevelYellow:Hide();
                                ZoneLevelRed:Hide();
                                ZoneLevelCity:Hide();
                                ZoneLevelBad:Show();
                        end
                end
        
                if(zoneLevelShowIcon == false)
                then
                        ZoneLevelBase:Hide();
                end
        end
end


local function round(num, idp)
        local mult = 10 ^ (idp or 0);
        return math.floor(num * mult + 0.5) / mult;
end

function ZoneLevel_SetTooltipText()
        local level = UnitLevel("player");
        capZone = GetRealZoneText();
        zone = string.lower(capZone);
        local x, y = GetPlayerMapPosition("player");
        local text;
    local framerate = GetFramerate();
    local xp = UnitXP("player")
    local xpmax = UnitXPMax("player")
    local TodayKills, TodayHonor = GetPVPSessionStats();
    local low;
    local high;

        if(x == 0 and y == 0)then
                text = "N/A";
        else
                x = round(x * 100, 2);
                y = round(y * 100, 2);
                text = string.format("%.2f, %.2f", x, y);

        end
    
        local low = zoneLevelLow[zone];
        local high = zoneLevelHigh[zone];
        local txt;
        
        if(ZoneLevel_ZoneIsValid(zone)) then
                if(ZoneLevel_ZoneIsTiered(zone))
                then
                        low, high = ZoneLevel_HandleTiering(zone);
                else
                        if(zoneLevelLow[zone] < 1)
                        then
                                txt = ZONELEVEL_CITYTEXT;
                        else
                                txt = string.format(ZONELEVEL_ZONETEXT, zoneLevelLow[zone], zoneLevelHigh[zone]);
                if(level == 80) then
                elseif(level <79) then
                txt6 = string.format("Your Experience: "..xp.."/"..xpmax)
                txt7 = string.format("Needed to level: "..floor(xpmax-xp))
               end
               if(zonelevellevel == true) then
                txt2 = string.format("Your Level: ")..level
               end
             if(zonelevelcords == true) then 
              txt3 = string.format("Your Location: "..text);
             end
             if(zonelevelfps == true) then
             txt4 = string.format("Your FPS:"..floor(framerate))
             end
             if(zonelevelhonor == true) then
             --txt5 = string.format("Your current honor: "..points)
             end
             if(zonelevelhonorsession == true) then
             txt9 = string.format("Honor Kills Today: "..TodayKills)
             txt10 = string.format("Honor Points Today: "..TodayHonor)
             end
             if(tankcap == true) then
             txt11 = string.format("Unhittable at 102.4%% - you have %.2f%%", GetDodgeChance() + GetBlockChance() + GetParryChance() + 5 + 1/(0.0625 + 0.956/(GetCombatRating(CR_DEFENSE_SKILL)/4.91850*0.04)))
             end
             if(zonelevelinbg == true) then
             txt12 = string.format(capZone)
             txt9 = string.format("Honor Kills Today: "..TodayKills)
             txt10 = string.format("Honor Points Today: "..TodayHonor)
             txt5 = string.format("Your current honor: "..points)
             end
                
              
   end
           
                        local mid = (low+high)/2;
                        if(high < level-5) then -- Grey text
                                GameTooltip:AddLine(capZone, 2.0, 2.0, 2.0);
                        elseif(low > level+5) then -- Red text
                                GameTooltip:AddLine(capZone, 1.0, 0.0, 0.0);
                        elseif(mid < level) then -- Green text
                                GameTooltip:AddLine(capZone, 0.0, 1.0, 0.0);
                        else -- Yellow icon
                                GameTooltip:AddLine(capZone, 1.0, 1.0, 0.0);
                        end
                end
        else -- Zone not found
                txt = ZONELEVEL_ZONENOTFOUNDTOOLTIP;
        end

        GameTooltip:AddLine(txt, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt2, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt3, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt4, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt5, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt6, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt7, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt8, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt9, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt10, 1.0, 1.0, 1.0);
    GameTooltip:AddLine(txt11, 1.0, 1.0, 1.0);
end

-- Returns true if zone is in table, false otherwise
function ZoneLevel_ZoneIsValid(zone)
    local retVal;
        if(zone == nil or zoneLevelLow[string.lower(zone)] == nil)
        then
                retVal = false;
        else
                retVal = true;
        end

        return retVal;
end

function ZoneLevel_TranslateShort(zone)
        if(zone == nil)
        then
                return nil;
        end
        
        if(zoneLevelShort[zone] == nil)
        then
                return zone;
        else
                return zoneLevelShort[zone];
        end
end

-- Returns true is the zone is segregated by level ranges
function ZoneLevel_ZoneIsTiered(zone)
    local low;
    local high;
        if (zone == nil)
        then
                DEFAULT_CHAT_FRAME:AddMessage(ZONELEVEL_NOZONE);
                retVal = false;
        else
                if(zone == string.lower(WGch) or (zone == string.lower(ABsn)) or (zone == string.lower(AVal)))
                then
                        zonelevelinbg = true;
                else
                        zonelevelinbg = false;
                end
        end
        
        return retVal;
end

-- Handles the level stuff for tiered zones
function ZoneLevel_HandleTiering(zone)
  local level = UnitLevel("player");
  local low;
  local high;
  if(level == 10)
  then
     low = 10;
     high = 19;
  elseif(level == 20)
  then
     low = 20;
     high = 29;
  elseif(level == 30)
  then
     low = 30;
     high = 39;
  elseif(level == 40)
  then
     low = 40;
     high = 49;
  elseif(level == 50)
  then
     low = 50;
     high = 59;
  elseif(level == 60)
  then
     low = 60;
     high = 69;
  elseif(level == 70)
  then
     low = 70;
     high = 79;
  elseif(level == 80)
  then
     low = 80;
     high = 89;
  end
  
  return low, high;
end

-- Makes tables containing level ranges for each zone
function ZoneLevel_MakeTables()
        -- Eastern Kingdom zones
        zoneLevelLow[string.lower(ChHl)]=-1;
        zoneLevelHigh[string.lower(ChHl)]=-1;
        zoneLevelLow[string.lower(BtyB)]=-1; -- booty bay
        zoneLevelHigh[string.lower(BtyB)]=-1; -- booty bay
        zoneLevelLow[string.lower(Tram)]=-1; -- deeprun tram
        zoneLevelHigh[string.lower(Tram)]=-1; -- deeprun tram
        zoneLevelLow[string.lower(Irfg)]=-1; -- ironforge
        zoneLevelHigh[string.lower(Irfg)]=-1; -- ironforge
        zoneLevelLow[string.lower(StwC)]=-1; -- stormwind city
        zoneLevelHigh[string.lower(StwC)]=-1; -- stormwind city
        zoneLevelLow[string.lower(EwnF)]=1; -- elwyn forest
        zoneLevelHigh[string.lower(EwnF)]=10; -- elwyn forest
        zoneLevelLow[string.lower(DunM)]=1; -- dun morogh
        zoneLevelHigh[string.lower(DunM)]=10; -- dun morogh
        zoneLevelLow[string.lower(Tfal)]=1; -- trisfal
        zoneLevelHigh[string.lower(Tfal)]=10; -- trisfal
        zoneLevelLow[string.lower(LMod)]=10; -- Loc Modan
        zoneLevelHigh[string.lower(LMod)]=20; -- Loc Modan
        zoneLevelLow[string.lower(SvpF)]=10; 
        zoneLevelHigh[string.lower(SvpF)]=20;
        zoneLevelLow[string.lower(Wtfl)]=10; -- Westfall
        zoneLevelHigh[string.lower(Wtfl)]=20; -- Westfall
        zoneLevelLow[string.lower(RrMt)]=15; -- Redridge mountain
        zoneLevelHigh[string.lower(RrMt)]=25; -- redridge mountain
        zoneLevelLow[string.lower(Dkwd)]=18; -- duskwood
        zoneLevelHigh[string.lower(Dkwd)]=30; -- duskwood
        zoneLevelLow[string.lower(HdFt)]=20; 
        zoneLevelHigh[string.lower(HdFt)]=30;
        zoneLevelLow[string.lower(Wtld)]=20;
        zoneLevelHigh[string.lower(Wtld)]=30;
        zoneLevelLow[string.lower(AcMt)]=30; -- alterac mountain
        zoneLevelHigh[string.lower(AcMt)]=40; -- alterac mountain
        zoneLevelLow[string.lower(AHld)]=30; 
        zoneLevelHigh[string.lower(AHld)]=40;
        zoneLevelLow[string.lower(StrV)]=30;
        zoneLevelHigh[string.lower(StrV)]=50;
        zoneLevelLow[string.lower(Bdld)]=35;
        zoneLevelHigh[string.lower(Bdld)]=45;
        zoneLevelLow[string.lower(SoSs)]=35;
        zoneLevelHigh[string.lower(SoSs)]=45;
        zoneLevelLow[string.lower(DwPs)]=70; -- Deadwind Pass
        zoneLevelHigh[string.lower(DwPs)]=73; -- Deadwind Pass
        zoneLevelLow[string.lower(Htld)]=40;
        zoneLevelHigh[string.lower(Htld)]=50;
        zoneLevelLow[string.lower(SgGg)]=43;
        zoneLevelHigh[string.lower(SgGg)]=50;
        zoneLevelLow[string.lower(BlLd)]=45;
        zoneLevelHigh[string.lower(BlLd)]=55;
        zoneLevelLow[string.lower(BgSt)]=50;
        zoneLevelHigh[string.lower(BgSt)]=58;
        zoneLevelLow[string.lower(WPlg)]=51; -- Western Plaguelands
        zoneLevelHigh[string.lower(WPlg)]=58; -- Western Plaguelands
        zoneLevelLow[string.lower(EPlg)]=53; -- Eastern Plaguelands
        zoneLevelHigh[string.lower(EPlg)]=60; -- Eastern Plaguelands
    zoneLevelLow[string.lower(MST)]=70; -- Magisters' Terrace
        zoneLevelHigh[string.lower(MST)]=75; -- Magisters' Terrace
    zoneLevelLow[string.lower(PlgScrlt)]=55; -- Plaguelands: The Scarlet Enclave
    zoneLevelHigh[string.lower(PlgScrlt)]=58; -- Plaguelands: The Scarlet Enclave

        -- Kalimdor Zones
        zoneLevelLow[string.lower(Rcht)]=10; -- Ratchet
        zoneLevelHigh[string.lower(Rcht)]=20; -- Rachet
        zoneLevelLow[string.lower(Gtzn)]=40; -- Gadgetstan
        zoneLevelHigh[string.lower(Gtzn)]=50; -- Gadgetstan
        zoneLevelLow[string.lower(Orgr)]=-1; -- Orgrimmar
        zoneLevelHigh[string.lower(Orgr)]=-1; -- Orgrimmar
        zoneLevelLow[string.lower(TdrB)]=-1; -- Thunderbluff
        zoneLevelHigh[string.lower(TdrB)]=-1; -- Thunderbluff
        zoneLevelLow[string.lower(Ucty)]=-1; -- Undercity
        zoneLevelHigh[string.lower(Ucty)]=-1; -- Undercity
        zoneLevelLow[string.lower(Drtr)]=1; -- Durotar
        zoneLevelHigh[string.lower(Drtr)]=10; -- Durotar
        zoneLevelLow[string.lower(Mlgr)]=1; -- Mulgore
        zoneLevelHigh[string.lower(Mlgr)]=10; -- Mulgore
        zoneLevelLow[string.lower(Dksr)]=10; 
        zoneLevelHigh[string.lower(Dksr)]=20;
        zoneLevelLow[string.lower(Brns)]=10;
        zoneLevelHigh[string.lower(Brns)]=25;
        zoneLevelLow[string.lower(StMt)]=15; -- Stonetalon Mountains
        zoneLevelHigh[string.lower(StMt)]=27; -- Stonetalon Mountains
        zoneLevelLow[string.lower(Ashv)]=18;  -- Ashenvale
        zoneLevelHigh[string.lower(Ashv)]=30; -- Ashenvale
        zoneLevelLow[string.lower(KNdl)]=25; 
        zoneLevelHigh[string.lower(KNdl)]=35;
        zoneLevelLow[string.lower(Dslc)]=30; -- Desolace
        zoneLevelHigh[string.lower(Dslc)]=40; -- Desolace
        zoneLevelLow[string.lower(DtwM)]=35; 
        zoneLevelHigh[string.lower(DtwM)]=45;
        zoneLevelLow[string.lower(Frls)]=40; -- ferlas
        zoneLevelHigh[string.lower(Frls)]=50; -- ferlas
        zoneLevelLow[string.lower(Tnrs)]=40; 
        zoneLevelHigh[string.lower(Tnrs)]=50;
        zoneLevelLow[string.lower(Azsr)]=45; -- Azshara
        zoneLevelHigh[string.lower(Azsr)]=55; -- Azshara
        zoneLevelLow[string.lower(Flwd)]=48;
        zoneLevelHigh[string.lower(Flwd)]=55;
        zoneLevelLow[string.lower(Goro)]=48; -- Ungoro
        zoneLevelHigh[string.lower(Goro)]=55; -- Ungoro
        zoneLevelLow[string.lower(Slts)]=55; 
        zoneLevelHigh[string.lower(Slts)]=60;
        zoneLevelLow[string.lower(Wtsg)]=55;
        zoneLevelHigh[string.lower(Wtsg)]=60;
        zoneLevelLow[string.lower(Hyal)]=60;
        zoneLevelHigh[string.lower(Hyal)]=60;
        zoneLevelLow[string.lower(AnQG)]=60; -- AQ I think
        zoneLevelHigh[string.lower(AnQG)]=65; -- AQ I think
    
    -- Instances
    zoneLevelLow[string.lower(Stck)]=24;
        zoneLevelHigh[string.lower(Stck)]=32;
        zoneLevelLow[string.lower(RfCm)]=13;
        zoneLevelHigh[string.lower(RfCm)]=18;
        zoneLevelLow[string.lower(ZlFk)]=44;
        zoneLevelHigh[string.lower(ZlFk)]=54;
        zoneLevelLow[string.lower(Ddmn)]=17;
        zoneLevelHigh[string.lower(Ddmn)]=26;
        zoneLevelLow[string.lower(WCvn)]=17;
        zoneLevelHigh[string.lower(WCvn)]=24;
        zoneLevelLow[string.lower(Grgn)]=29;
        zoneLevelHigh[string.lower(Grgn)]=38;
        zoneLevelLow[string.lower(RfKr)]=29;
        zoneLevelHigh[string.lower(RfKr)]=38;
        zoneLevelLow[string.lower(BlfD)]=24;
        zoneLevelHigh[string.lower(BlfD)]=32;
        zoneLevelLow[string.lower(SfKp)]=22;
        zoneLevelHigh[string.lower(SfKp)]=30;
        zoneLevelLow[string.lower(StMn)]=34;
        zoneLevelHigh[string.lower(StMn)]=45;
        zoneLevelLow[string.lower(Uldm)]=41;
        zoneLevelHigh[string.lower(Uldm)]=51;
        zoneLevelLow[string.lower(RfDn)]=37;
        zoneLevelHigh[string.lower(RfDn)]=46;
        zoneLevelLow[string.lower(Mrdn)]=46;
        zoneLevelHigh[string.lower(Mrdn)]=55;
        zoneLevelLow[string.lower(Onyx)]=80;
        zoneLevelHigh[string.lower(Onyx)]=80;
        zoneLevelLow[string.lower(BlMt)]=42;
        zoneLevelHigh[string.lower(BlMt)]=54;
        zoneLevelLow[string.lower(CvTm)]=43;
        zoneLevelHigh[string.lower(CvTm)]=61;
        zoneLevelLow[string.lower(Tmpl)]=50;
        zoneLevelHigh[string.lower(Tmpl)]=60;
        zoneLevelLow[string.lower(DrMl)]=56;
        zoneLevelHigh[string.lower(DrMl)]=60;
        zoneLevelLow[string.lower(BlrD)]=52;
        zoneLevelHigh[string.lower(BlrD)]=60;
        zoneLevelLow[string.lower(BlrS)]=55;
        zoneLevelHigh[string.lower(BlrS)]=60;
        zoneLevelLow[string.lower(Sthm)]=58;
        zoneLevelHigh[string.lower(Sthm)]=60;
        zoneLevelLow[string.lower(MCor)]=60;
        zoneLevelHigh[string.lower(MCor)]=62;
        zoneLevelLow[string.lower(Slmc)]=58;
        zoneLevelHigh[string.lower(Slmc)]=60;
        zoneLevelLow[string.lower(BlwL)]=60;
        zoneLevelHigh[string.lower(BlwL)]=62;
        zoneLevelLow[string.lower(ZlGb)]=60;
        zoneLevelHigh[string.lower(ZlGb)]=62;
        zoneLevelLow[string.lower(AnQR)]=60;
        zoneLevelHigh[string.lower(AnQR)]=65;
        zoneLevelLow[string.lower(AnQT)]=60;
        zoneLevelHigh[string.lower(AnQT)]=65;
        zoneLevelLow[string.lower(Naxx)]=60;
        zoneLevelHigh[string.lower(Naxx)]=65;
        zoneLevelLow[string.lower(Krzn)]=70;
        zoneLevelHigh[string.lower(Krzn)]=75;
        zoneLevelLow[string.lower(HfCt)]=60;
        zoneLevelHigh[string.lower(HfCt)]=70;
        zoneLevelLow[string.lower(ZlAm)]=70;
        zoneLevelHigh[string.lower(ZlAm)]=75;
    zoneLevelLow[string.lower(CfRs)]=62;
        zoneLevelHigh[string.lower(CfRs)]=72;
    zoneLevelLow[string.lower(Auch)]=64;
        zoneLevelHigh[string.lower(Auch)]=72;
        zoneLevelLow[string.lower(TmKp)]=69;
        zoneLevelHigh[string.lower(TmKp)]=72;
        zoneLevelLow[string.lower(GrLr)]=60;
        zoneLevelHigh[string.lower(GrLr)]=72;
        zoneLevelLow[string.lower(BTmp)]=70;
        zoneLevelHigh[string.lower(BTmp)]=75;
        zoneLevelLow[string.lower(Stck)]=23;
        zoneLevelHigh[string.lower(Stck)]=26;
        zoneLevelLow[string.lower(RfCm)]=13;
        zoneLevelHigh[string.lower(RfCm)]=15;
        zoneLevelLow[string.lower(ZlFk)]=43;
        zoneLevelHigh[string.lower(ZlFk)]=47;
    zoneLevelLow[string.lower(Ddmn)]=15;
        zoneLevelHigh[string.lower(Ddmn)]=20;
        zoneLevelLow[string.lower(WCvn)]=15;
        zoneLevelHigh[string.lower(WCvn)]=21;
        zoneLevelLow[string.lower(Grgn)]=24;
        zoneLevelHigh[string.lower(Grgn)]=33;
        zoneLevelLow[string.lower(RfKr)]=25;
        zoneLevelHigh[string.lower(RfKr)]=35;
        zoneLevelLow[string.lower(BlfD)]=20;
        zoneLevelHigh[string.lower(BlfD)]=27;
        zoneLevelLow[string.lower(SfKp)]=18;
        zoneLevelHigh[string.lower(SfKp)]=25;
        zoneLevelLow[string.lower(StMn)]=30;
        zoneLevelHigh[string.lower(StMn)]=40;
        zoneLevelLow[string.lower(Uldm)]=35;
        zoneLevelHigh[string.lower(Uldm)]=45;
        zoneLevelLow[string.lower(RfDn)]=35;
        zoneLevelHigh[string.lower(RfDn)]=40;
        zoneLevelLow[string.lower(Mrdn)]=40;
        zoneLevelHigh[string.lower(Mrdn)]=49;
        zoneLevelLow[string.lower(Onyx)]=60;
        zoneLevelHigh[string.lower(Onyx)]=62;
        zoneLevelLow[string.lower(BlMt)]=42;
        zoneLevelHigh[string.lower(BlMt)]=54;
        zoneLevelLow[string.lower(CvTm)]=-1;
        zoneLevelHigh[string.lower(CvTm)]=-1;
        zoneLevelLow[string.lower(Tmpl)]=44;
        zoneLevelHigh[string.lower(Tmpl)]=50;
        zoneLevelLow[string.lower(DrMl)]=56;
        zoneLevelHigh[string.lower(DrMl)]=60;
        zoneLevelLow[string.lower(BlrD)]=48;
        zoneLevelHigh[string.lower(BlrD)]=56;
        zoneLevelLow[string.lower(BlrS)]=53;
        zoneLevelHigh[string.lower(BlrS)]=60;
        zoneLevelLow[string.lower(Sthm)]=55;
        zoneLevelHigh[string.lower(Sthm)]=60;
        zoneLevelLow[string.lower(MCor)]=60;
        zoneLevelHigh[string.lower(MCor)]=62;
        zoneLevelLow[string.lower(Slmc)]=56;
        zoneLevelHigh[string.lower(Slmc)]=60;
        zoneLevelLow[string.lower(BlwL)]=60;
        zoneLevelHigh[string.lower(BlwL)]=62;
        zoneLevelLow[string.lower(ZlGb)]=60;
        zoneLevelHigh[string.lower(ZlGb)]=62;
        zoneLevelLow[string.lower(AnQR)]=60;
        zoneLevelHigh[string.lower(AnQR)]=65;
        zoneLevelLow[string.lower(AnQT)]=60;
        zoneLevelHigh[string.lower(AnQT)]=65;
        zoneLevelLow[string.lower(Naxx)]=60;
        zoneLevelHigh[string.lower(Naxx)]=65;
        zoneLevelLow[string.lower(Krzn)]=70;
        zoneLevelHigh[string.lower(Krzn)]=75;
        zoneLevelLow[string.lower(HfCt)]=60;
        zoneLevelHigh[string.lower(HfCt)]=70;
        zoneLevelLow[string.lower(ZlAm)]=70;
        zoneLevelHigh[string.lower(ZlAm)]=75;
        zoneLevelLow[string.lower(CfRs)]=62;
        zoneLevelHigh[string.lower(CfRs)]=72;
        zoneLevelLow[string.lower(Auch)]=64;
        zoneLevelHigh[string.lower(Auch)]=72;
        zoneLevelLow[string.lower(TmKp)]=69;
        zoneLevelHigh[string.lower(TmKp)]=72;
        zoneLevelLow[string.lower(GrLr)]=60;
        zoneLevelHigh[string.lower(GrLr)]=72;
        zoneLevelLow[string.lower(BTmp)]=70;
        zoneLevelHigh[string.lower(BTmp)]=75;
    zoneLevelLow[string.lower(Mngd)]=-1; --MoonGlade
        zoneLevelHigh[string.lower(Mngd)]=-1; -- MoonGlade
        zoneLevelLow[string.lower(Darn)]=-1; -- Darnassus
        zoneLevelHigh[string.lower(Darn)]=-1; -- Darnassus
        zoneLevelLow[string.lower(Tldr)]=1; --Teldrassel
        zoneLevelHigh[string.lower(Tldr)]=10; -- Teldrassel
    zoneLevelLow[string.lower(AVal)]=60; -- AV
        zoneLevelHigh[string.lower(AVal)]=80; -- AV
        zoneLevelLow[string.lower(WGch)]=10; -- WSG
        zoneLevelHigh[string.lower(WGch)]=90; -- WSG
        zoneLevelLow[string.lower(ABsn)]=20; -- AB
        zoneLevelHigh[string.lower(ABsn)]=80; -- AB
    zoneLevelLow[string.lower(EoTS)]=61; -- Eye of the Storm
    zoneLevelHigh[string.lower(EoTS)]=80; -- Eye of the Storm
    zoneLevelLow[string.lower(EsWd)]=1; --Eversong Woods
        zoneLevelHigh[string.lower(EsWd)]=10; --Eversong Woods
        zoneLevelLow[string.lower(GstL)]=10; -- Not sure, Have not played BE
        zoneLevelHigh[string.lower(GstL)]=20; -- Not sure, Have not played BE.
        zoneLevelLow[string.lower(SvmC)]=-1; --Silvermoon City
        zoneLevelHigh[string.lower(SvmC)]=-1; --Silvermoon City
    zoneLevelLow[string.lower(AzmI)]=1;  -- Azuremyst Isle
        zoneLevelHigh[string.lower(AzmI)]=10; -- Azuremyst Isle
        zoneLevelLow[string.lower(BldI)]=10; -- Bloodmyst Isle
        zoneLevelHigh[string.lower(BldI)]=20; -- Bloodmyst Isle
        zoneLevelLow[string.lower(Exdr)]=-1; -- Exodar
        zoneLevelHigh[string.lower(Exdr)]=-1; -- Exodar
        zoneLevelLow[string.lower(VldS)]=1; -- Not Sure, have not played Dranei to much
        zoneLevelHigh[string.lower(VldS)]=10; -- Not Sure, Have not played Dranei to much
    zoneLevelLow[string.lower(IoQD)]=70; -- isle of quel danas
    zoneLevelHigh[string.lower(IoQD)]=75; -- Isle of quel danas
    zoneLevelLow[string.lower(HiddenReef)]=20;
    zoneLevelHigh[string.lower(HiddenReef)]=25;
    zoneLevelLow[string.lower(SlavePens)]=63;
    zoneLevelHigh[string.lower(SlavePens)]=66;
    zoneLevelLow[string.lower(Underbog)]=63;
    zoneLevelHigh[string.lower(Underbog)]=66;
    
    --northrend
    zoneLevelLow[string.lower(Dalran)]=-1; -- dalaran
    zoneLevelHigh[string.lower(Dalran)]=-1; -- dalaran
    zoneLevelLow[string.lower(BRTA)]=68; --Borean Tundra
    zoneLevelHigh[string.lower(BRTA)]=72; -- Borean Tundra
    zoneLevelLow[string.lower(CrystlSng)]=77; --Crystalsong Forest
    zoneLevelHigh[string.lower(CrystlSng)]=80; --Crystalsong Forest
    zoneLevelLow[string.lower(DrgnBlght)]=71; --Dragonblight
    zoneLevelHigh[string.lower(DrgnBlght)]=76; --Dragonblight
    zoneLevelLow[string.lower(GrzlyHils)]=73; --Grizzly Hills
    zoneLevelHigh[string.lower(GrzlyHils)]=76; --Grizzly Hills
    zoneLevelLow[string.lower(HwlngFjrd)]=-68; -- Howling Fjord
    zoneLevelHigh[string.lower(HwlngFjrd)]=73; -- Howling Fjord
    zoneLevelLow[string.lower(Icecrwn)]=77; --Icecrown
    zoneLevelHigh[string.lower(Icecrwn)]=82; --Icecrown
    zoneLevelLow[string.lower(ShlzBasn)]=76; --Sholzar Basin
    zoneLevelHigh[string.lower(ShlzBasn)]=79; --Sholzar Basin
    zoneLevelLow[string.lower(StrmPeak)]=77; --Storms Peak
    zoneLevelHigh[string.lower(StrmPeak)]=82; --Storms Peak
    zoneLevelLow[string.lower(ZulDrak)]=74; -- Zul'Drak
    zoneLevelHigh[string.lower(ZulDrak)]=78; --Zul'Drak
    zoneLevelLow[string.lower(Wintergrsp)]=78; --Wintersgrasp
    zoneLevelHigh[string.lower(Wintergrsp)]=82; -- Wintersgrasp
    zoneLevelLow[string.lower(SOTA)]=71; -- Strand of the Ancients
    zoneLevelHigh[string.lower(SOTA)]=80; -- Strand of the Ancients
    zoneLevelLow[string.lower(SlzBasn)]=74; -- Sholazar Basin
    zoneLevelHigh[string.lower(SlzBasn)]=78; -- Sholazar Basin


    -- Outland Zones
    zoneLevelLow[string.lower(ShtC)]=-6; --Shattrath
        zoneLevelHigh[string.lower(ShtC)]=-6; --Shattrath
    zoneLevelLow[string.lower(HfPn)]=58; -- Hellfire
        zoneLevelHigh[string.lower(HfPn)]=63; -- Hellfire
        zoneLevelLow[string.lower(Zgrm)]=60; --Zangermarsh
        zoneLevelHigh[string.lower(Zgrm)]=64; -- Zangermarsh
        zoneLevelLow[string.lower(Ngrd)]=64; -- Nagrand
        zoneLevelHigh[string.lower(Ngrd)]=67; -- Nagrand
        zoneLevelLow[string.lower(TkrF)]=62; -- Terrokar
        zoneLevelHigh[string.lower(TkrF)]=65; -- Terrokar
        zoneLevelLow[string.lower(SdmV)]=67; -- Shadowmoon
        zoneLevelHigh[string.lower(SdmV)]=70; -- Shadowmoon
        zoneLevelLow[string.lower(BEMt)]=65; -- Blades Edge Mountains
        zoneLevelHigh[string.lower(BEMt)]=68; -- Blades Edge Mountains
        zoneLevelLow[string.lower(Nstm)]=67; -- Netherstorm
        zoneLevelHigh[string.lower(Nstm)]=70; -- Netherstorm
    zoneLevelLow[string.lower(BlackMorass)]=68;
    zoneLevelHigh[string.lower(BlackMorass)]=70;
    zoneLevelLow[string.lower(OldHilsbrad)]=68; --CoT Hillsbrad
    zoneLevelHigh[string.lower(OldHilsbrad)]=70; -- CoT Hillsbrad
    zoneLevelHigh[string.lower(FrozenSea)]=-1;
    zoneLevelLow[string.lower(FrozenSea)]=-1;
    zoneLevelLow[string.lower(TwistingNether)]=-1;
    zoneLevelHigh[string.lower(TwistingNether)]=-1;
    zoneLevelLow[string.lower(HellfireRamparts)]=58;
    zoneLevelHigh[string.lower(HellfireRamparts)]=62;
    zoneLevelLow[string.lower(SteamVault)]=68;
    zoneLevelHigh[string.lower(SteamVault)]=70;
        
        
    -- Northrend Dungeons
    zoneLevelLow[string.lower(UtK)]=70; -- Utargde Keep
    zoneLevelHigh[string.lower(UtK)]=74; -- Utargde Keep
    zoneLevelLow[string.lower(TheNexus)]=71; -- The Nexus
    zoneLevelHigh[string.lower(TheNexus)]=74; -- The Nexus
    zoneLevelLow[string.lower(AhnKaht)]=73; -- Ahn'Kahet
    zoneLevelHigh[string.lower(AhnKaht)]=76; -- Ahn'Kahet
    zoneLevelLow[string.lower(AzjNerub)]=72; -- Azjol'Nerub
    zoneLevelHigh[string.lower(AzjNerub)]=75; -- Azjol'Nerub
    zoneLevelLow[string.lower(NaxxNrth)]=80; -- Naxxramas
    zoneLevelHigh[string.lower(NaxxNrth)]=80; -- Naxxramas
    zoneLevelLow[string.lower(Ulduar)]=80; -- Ulduar
    zoneLevelHigh[string.lower(Ulduar)]=80; -- Ulduar
    zoneLevelLow[string.lower(IcrwnCitadel)]=80; -- Icecrown Citadel
    zoneLevelHigh[string.lower(IcrwnCitadel)]=80; -- Icecrown Citadel
    zoneLevelLow[string.lower(DrakTharKeep)]=74; -- Drak'tharon keep
    zoneLevelHigh[string.lower(DrakTharKeep)]=78; -- Drak'tharon Keep
    zoneLevelLow[string.lower(ChmbrOfAspect)]=80; -- Chamber of Aspects
    zoneLevelHigh[string.lower(ChmbrOfAspect)]=80; -- Chamber of Aspects
    zoneLevelLow[string.lower(CoTCoStrat)]=78; -- Culling of Strathhomle
    zoneLevelHigh[string.lower(CoTCoStrat)]=80; -- Culling of Strathhomle
    zoneLevelLow[string.lower(Gundrak)]=76; -- Gundrak
    zoneLevelHigh[string.lower(Gundrak)]=80; -- Gundrak
    zoneLevelLow[string.lower(HallsofLighting)]=76; -- Halls of Lighting
    zoneLevelHigh[string.lower(HallsofLighting)]=80; -- Halls of Lighting
    zoneLevelLow[string.lower(HallsofStone)]=76; -- Halls of Stone
    zoneLevelHigh[string.lower(HallsofStone)]=80; -- Halls of Stone
    zoneLevelLow[string.lower(Malygos)]=80; -- Malygos
    zoneLevelHigh[string.lower(Malygos)]=80; -- malygos
    zoneLevelLow[string.lower(TheDocOc)]=78; -- Occulus
    zoneLevelHigh[string.lower(TheDocOc)]=80; -- Occulus
    zoneLevelLow[string.lower(Sartharion)]=80; -- Sartharion
    zoneLevelHigh[string.lower(Sartharion)]=80; -- Sartharion
    zoneLevelLow[string.lower(UtgrdKptwo)]=78; -- I believe this was saposta be UP but isn't
    zoneLevelHigh[string.lower(UtgrdKptwo)]=80; 
    zoneLevelLow[string.lower(TheVioletHld)]=75; -- THe Violet Hold
    zoneLevelHigh[string.lower(TheVioletHld)]=80; -- The Violet Hold
    zoneLevelLow[string.lower(UtgPin)]=78; -- Utargde Pinnicle
    zoneLevelHigh[string.lower(UtgPin)]=80; -- Utargde Pinnicle
    zoneLevelLow[string.lower(IcecrownCitadel)]=80;
    zoneLevelHigh[string.lower(IcecrownCitadel)]=80;
    zoneLevelLow[string.lower(RubySanctum)]=80;
    zoneLevelHigh[string.lower(RubySanctum)]=80;
    zoneLevelLow[string.lower(PitofSaron)]=78;
    zoneLevelHigh[string.lower(PitofSaron)]=80;
    zoneLevelLow[string.lower(TrialoftheGrandCrusader)]=80;
    zoneLevelHigh[string.lower(TrialoftheGrandCrusader)]=80;
    zoneLevelLow[string.lower(ForgeofSouls)]=78;
    zoneLevelHigh[string.lower(ForgeofSouls)]=80;
    zoneLevelLow[string.lower(HallsofReflection)]=78;
    zoneLevelHigh[string.lower(HallsofReflection)]=80;
    zoneLevelLow[string.lower(TrialoftheChampion)]=80;
    zoneLevelHigh[string.lower(TrialoftheChampion)]=80;
    zoneLevelLow[string.lower(HrothgarsLanding)]=80;
    zoneLevelHigh[string.lower(HrothgarsLanding)]=80;
        zoneLevelLow[string.lower(Deepholm)]=82;
        zoneLevelHigh[string.lower(Deepholm)]=84;
        zoneLevelLow[string.lower(Kezan)]=1;
        zoneLevelHigh[string.lower(Kezan)]=7;
        zoneLevelLow[string.lower(TheLostIsles)]=5;
        zoneLevelHigh[string.lower(TheLostIsles)]=12;
        zoneLevelLow[string.lower(TheMaelstrom)]=-1;
        zoneLevelHigh[string.lower(TheMaelstrom)]=-1;
        zoneLevelLow[string.lower(TolBarad)]=85;
        zoneLevelHigh[string.lower(TolBarad)]=85;
        zoneLevelLow[string.lower(TBPen)]=85;
        zoneLevelHigh[string.lower(TBPen)]=85;
        zoneLevelLow[string.lower(MountHyjal)]=80;
        zoneLevelHigh[string.lower(MountHyjal)]=82;
        zoneLevelLow[string.lower(TheSteamPools)]=-1;
        zoneLevelHigh[string.lower(TheSteamPools)]=-1;
        zoneLevelLow[string.lower(Uldum)]=83;
        zoneLevelHigh[string.lower(Uldum)]=84;
        zoneLevelLow[string.lower(Gilneas)]=1;
        zoneLevelHigh[string.lower(Gilneas)]=5;
        zoneLevelLow[string.lower(GilneasCity)]=1;
        zoneLevelHigh[string.lower(GilneasCity)]=5;
        zoneLevelLow[string.lower(TwilightHighlands)]=84;
        zoneLevelHigh[string.lower(TwilightHighlands)]=85;
        zoneLevelLow[string.lower(Vashjir)]=80;
        zoneLevelHigh[string.lower(Vashjir)]=82;
        zoneLevelLow[string.lower(VashjirAbyssalDepths)]=80;
        zoneLevelHigh[string.lower(VashjirAbyssalDepths)]=82;
        zoneLevelLow[string.lower(VashjirKelptharForest)]=80;
        zoneLevelHigh[string.lower(VashjirKelptharForest)]=82;
        zoneLevelLow[string.lower(VashjirShimmeringExpanse)]=80;
        zoneLevelHigh[string.lower(VashjirShimmeringExpanse)]=82;
    
        -- Abbreviation table
        zoneLevelShort["alterac"] = AcMt;
        zoneLevelShort["alterac mountains"] = AcMt;
        zoneLevelShort["ab"] = ABsn;
        zoneLevelShort["aq"] = AnQG;
        zoneLevelShort["arathi basin"] = ABsn;
        zoneLevelShort["arathi"] = AHld;
        zoneLevelShort["arathi highlands"] = AHld;
        zoneLevelShort["av"] = AVal;
        zoneLevelShort["alterac valley"] = AVal;
        zoneLevelShort["ashenvale"] = Ashv;
        zoneLevelShort["azshara"] = Azsr;
        zoneLevelShort["badlands"] = Bdld;
        zoneLevelShort["bs"] = BgSt;
        zoneLevelShort["burning steppes"] = BgSt;
        zoneLevelShort["bfd"] = BlfD;
        zoneLevelShort["blackfathom deeps"] = BlfD;
        zoneLevelShort["bl"] = BlLd;
        zoneLevelShort["blasted lands"] = BlLd;
        zoneLevelShort["brm"] = BlMt;
        zoneLevelShort["blackrock mountain"] = BlMt;
        zoneLevelShort["brd"] = BlrD;
        zoneLevelShort["blackrock depths"] = BlrD;
        zoneLevelShort["brs"] = BlrS;
        zoneLevelShort["blackrock spire"] = BlrS;
        zoneLevelShort["barrens"] = Brns;
        zoneLevelShort["bwl"] = BlwL;
        zoneLevelShort["blackwing lair"] = BlwL;
        zoneLevelShort["bb"] = BtyB;
        zoneLevelShort["booty bay"] = BtyB;
        zoneLevelShort["cot"] = CvTm;
        zoneLevelShort["caverns of time"] = CvTm;
        zoneLevelShort["darkshore"] = Dksr;
        zoneLevelShort["darn"] = Darn;
        zoneLevelShort["darnassus"] = Darn;
        zoneLevelShort["deadmines"] = Ddmn;
        zoneLevelShort["deadwind"] = DwPs;
        zoneLevelShort["deadwind pass"] = DwPs;
        zoneLevelShort["desolace"] = Dslc;
        zoneLevelShort["dm"] = DrMl;
        zoneLevelShort["dire maul"] = DrMl;
        zoneLevelShort["dun morogh"] = DunM;
        zoneLevelShort["durotar"] = Drtr;
        zoneLevelShort["duskwood"] = Dkwd;
        zoneLevelShort["dustwallow"] = DtwM;
        zoneLevelShort["dwm"] = DtwM;
        zoneLevelShort["dustwallow marsh"] = DtwM;
        zoneLevelShort["epl"] = EPlg;
        zoneLevelShort["eastern plaguelands"] = EPlg;
        zoneLevelShort["elwynn"] = EwnF;
        zoneLevelShort["elwynn forest"] = EwnF;
        zoneLevelShort["felwood"] = Flwd;
        zoneLevelShort["feralas"] = Frls;
        zoneLevelShort["loch"] = LMod;
        zoneLevelShort["loch modan"] = LMod;
        zoneLevelShort["mulgore"] = Mlgr;
        zoneLevelShort["moonglade"] = Mngd;
        zoneLevelShort["silithus"] = Slts;
        zoneLevelShort["ungoro"] = Goro;
        zoneLevelShort["ungoro crater"] = Goro;
        zoneLevelShort["gnomer"] = Grgn;
        zoneLevelShort["gnomeregon"] = Grgn;
        zoneLevelShort["gadget"] = Gtzn;
        zoneLevelShort["gadgetzan"] = Gtzn;
    zoneLevelShort["hellfire"] = HfPn
    zoneLevelShort["hellfire Peninsula"] = HfPn
        zoneLevelShort["hillsbrad"] = Hellfire;
        zoneLevelShort["hillsbrad foothills"] = HdFt;
        zoneLevelShort["hinterlands"] = Htld;
        zoneLevelShort["1kn"] = KNdl;
        zoneLevelShort["thousand needles"] = KNdl;
        zoneLevelShort["mc"] = MCor;
        zoneLevelShort["molten core"] = MCor;
        zoneLevelShort["md"] = Mrdn;
        zoneLevelShort["maur"] = Mrdn;
        zoneLevelShort["mauradon"] = Mrdn;
        zoneLevelShort["nax"] = Naxx;
        zoneLevelShort["naxx"] = Naxx;
        zoneLevelShort["naxxramas"] = Naxx;
        zoneLevelShort["onyxia"] = Onyx;
        zoneLevelShort["onyx"] = Onyx;
        zoneLevelShort["onyxias lair"] = Onyx;
        zoneLevelShort["rfc"] = RfCm;
        zoneLevelShort["ragefire chasm"] = RfCm;
        zoneLevelShort["rfd"] = RfDn;
        zoneLevelShort["razorfen downs"] = RfDn;
        zoneLevelShort["rfk"] = RfKr;
        zoneLevelShort["razorfen kraul"] = RfKr;
        zoneLevelShort["redridge"] = RrMt;
        zoneLevelShort["redridge mts"] = RrMt;
        zoneLevelShort["redridge mountains"] = RrMt;
        zoneLevelShort["sfk"] = SfKp;
        zoneLevelShort["shadowfang keep"] = SfKp;
        zoneLevelShort["scholo"] = Slmc;
        zoneLevelShort["scholomance"] = Slmc;
        zoneLevelShort["stratholme"] = Sthm;
        zoneLevelShort["sos"] = SoSs;
        zoneLevelShort["swamp of sorrows"] = SoSs;
        zoneLevelShort["stockade"] = Stck;
        zoneLevelShort["sm"] = StMn;
        zoneLevelShort["scarlet monastery"] = StMn;
        zoneLevelShort["stonetalon"] = StMt;
        zoneLevelShort["stonetalon mts"] = StMt;
        zoneLevelShort["stonetalon mountains"] = StMt;
        zoneLevelShort["stv"] = StrV;
        zoneLevelShort["stranglethorn vale"] = StrV;
        zoneLevelShort["silverpine"] = SvpF;
        zoneLevelShort["silverpine forest"] = SvpF;
        zoneLevelShort["tb"] = TdrB;
        zoneLevelShort["thunder bluff"] = TdrB;
        zoneLevelShort["tirisfal"] = Tfal;
        zoneLevelShort["tirisfal glades"] = Tfal;
        zoneLevelShort["teldrassil"] = Trdl;
        zoneLevelShort["tanaris"] = Tnrs;
        zoneLevelShort["uldaman"] = Uldm;
        zoneLevelShort["westfall"] = Wtfl;
        zoneLevelShort["wetlands"] = Wtld;
        zoneLevelShort["ws"] = Wtsg;
        zoneLevelShort["winterspring"] = Wtsg;
        zoneLevelShort["st"] = Tmpl;
        zoneLevelShort["sunken temple"] = Tmpl;
        zoneLevelShort["wc"] = WCvn;
        zoneLevelShort["wailing caverns"] = WCvn;
        zoneLevelShort["wsg"] = WGch;
        zoneLevelShort["warsong gulch"] = WGch;
        zoneLevelShort["wpl"] = WPlg;
        zoneLevelShort["western plaguelands"] = WPlg;
        zoneLevelShort["zf"] = ZlFk;
        zoneLevelShort["zulfarrak"] = ZlFk;
        zoneLevelShort["zul farrak"] = ZlFk;
        zoneLevelShort["zg"] = ZlGb;
        zoneLevelShort["zulgurub"] = ZlGb;
        zoneLevelShort["zul gurub"] = ZlGb;
    zoneLevelShort["blade's edge mountain"] = BladesEdgeMountains;
    zoneLevelShort["blade's edge"] = BladesEdgeMountains;
    zoneLevelShort["blades edge"] = BladesEdgeMountains;
    zoneLevelShort["nagrand"] = Nagrand;
    zoneLevelShort["netherstorm"] = Netherstorm;
    zoneLevelShort["shadowmoon"] = ShadowmoonValley;
    zoneLevelShort["shadowmoon valley"] = ShadowmoonValley;
    zoneLevelShort["shatt"] = ShattrathCity;
    zoneLevelShort["shattrath"] = ShattrathCity;
    zoneLevelShort["shattrath City"] = ShattrathCity;
    zoneLevelShort["terokkar forest"] = TerokkarForest;
    zoneLevelShort["terokkar"] = TerokkarForest;
    zoneLevelShort["zangar"] = Zgrm ;
    zoneLevelShort["zangarmarsh"] = Zgrm;
    zoneLevelShort["borean tundra"] = BoreanTundra;
    zoneLevelShort["crystalsong forest"] = CrystlSng;
    zoneLevelShort["crystalsong"] = CrystlSng;
    zoneLevelShort["dalaran"] = Dalran;
    zoneLevelShort["dragonblight"] = Dragonblight; 
    zoneLevelShort["grizzly hills"] = GrizzlyHills;
    zoneLevelShort["howling fjord"] = HwlngFjrd;
    zoneLevelShort["hrothgar's landing"] = HrothgarsLanding;
    zoneLevelShort["icecrown"] = Icecrown;
    zoneLevelShort["sholazar basin"] = SholazarBasin;
    zoneLevelShort["the storm peaks"] = StormPeaks;
    zoneLevelShort["storm peaks"] = Wintergrasp;
    zoneLevelShort["wintergrasp"] = Wintergrasp;
    zoneLevelShort["zul'drak"] = ZulDrak;
    zoneLevelShort["zul drak"] = ZulDrak;
end

function ZLVLMAP()
        ZoneLevelM=CreateFrame("Frame","ZoneLevelM",WorldMapFrame);
        ZoneLevelM.c=ZoneLevelM:CreateFontString(nil,"OVERLAY");
    if IsAddOnLoaded("Carbonite") or IsAddOnLoaded("TomTom") or IsAddOnLoaded("AlphaMap") or IsAddOnLoaded("Mapster") or IsAddOnLoaded("pMap") then 
    ZoneLevelM.c:SetPoint("TOPLEFT", WorldMapFrame, "TopLeft",0,730);
    end
        ZoneLevelM.c:SetPoint("Bottom",WorldMapFrame,"Bottom",0,10);
    if IsAddOnLoaded("Carbonite") or IsAddOnLoaded("TomTom") or IsAddOnLoaded("pMap")then
    ZoneLevelM.c:SetJustifyV("CENTER");
    end
        ZoneLevelM.c:SetJustifyH("CENTER");
        ZoneLevelM.c:SetFontObject(GameFontNormal);
        ZoneLevelM:SetScript("OnUpdate",ZoneLevelMapOnUpdate);
end

function ZoneLevelMapOnUpdate()
   if(zlvlmaptext == true) then
        local level = UnitLevel("player");
        capZone = GetRealZoneText();
        zone = string.lower(capZone);
    zoneIndex = GetCurrentMapZone();
    zoneindexreturn = "";
    continent = GetCurrentMapContinent();
     
  if(continent == 2) then -- Eastern Kindgoms
    if(zoneIndex == 11) then
      zoneindexreturn = "Eversong Woods 1-10";
    elseif(zoneIndex == 7) then
      zoneindexreturn = "Dun Morogh 1-10";
    elseif(zoneIndex == 1) then
      zoneindexreturn = "Alterac Mountains 30-40";
    elseif(zoneIndex == 2) then
      zoneindexreturn = "Arathi Highlands 30-40";
    elseif(zoneIndex == 3) then
      zoneindexreturn = "Badlands 30-40";
    elseif(zoneIndex == 4) then
      zoneindexreturn = "Blasted Lands 50-60";
    elseif(zoneIndex == 5) then
      zoneindexreturn = "Burning Steppes 50-60";
    elseif(zoneIndex == 6) then
      zoneindexreturn = "Deadwind Pass 68-70";
    elseif(zoneIndex == 8) then
      zoneindexreturn = "Duskwood 20-30";
    elseif(zoneIndex == 9) then
      zoneindexreturn = "Eastern Plaguelands 50-60";
    elseif(zoneIndex == 10) then
      zoneindexreturn = "Elwynn Forest 1-10";
    elseif(zoneIndex == 12) then
      zoneindexreturn = "Ghostlands 10-20";
    elseif(zoneIndex == 13) then
      zoneindexreturn = "Hillsbrad Foothills 20-30";
    elseif(zoneIndex == 14) then
      zoneindexreturn = "Ironforge Town";
    elseif(zoneIndex == 15) then
      zoneindexreturn = "Isle of Quel'Danas 68-72";
    elseif(zoneIndex == 16) then
      zoneindexreturn = "Loch Modan 10-20";
    elseif(zoneIndex == 17) then
      zoneindexreturn = "Redrige Mountains 20-30";
    elseif(zoneIndex == 18) then
      zoneindexreturn = "Searing Gorge 40-50";
    elseif(zoneIndex == 19) then
      zoneindexreturn = "Silvermoon City Town";
    elseif(zoneIndex == 20) then
      zoneindexreturn = "Silverpine Forest 10-20";
    elseif(zoneIndex == 21) then
      zoneindexreturn = "Stormwind City Town";
    elseif(zoneIndex == 22) then
      zoneindexreturn = "Stranglethorn Vale 30-45";
    elseif(zoneIndex == 23) then
      zoneindexreturn = "Swampe of Sorrows 35-45";
    elseif(zoneIndex == 24) then
      zoneindexreturn = "The Hinterlands 40-50";
    elseif(zoneIndex == 25) then
      zoneindexreturn = "Tirisfal Glades 1-10";
    elseif(zoneIndex == 26) then
      zoneindexreturn = "Undercity Town";
    elseif(zoneIndex == 27) then
      zoneindexreturn = "Western Plaguelands 50-60";
    elseif(zoneIndex == 28) then
      zoneindexreturn = "Westfall 10-20";
    elseif(zoneIndex == 29) then
      zoneindexreturn = "Wetlands 20-30";
    elseif(zoneIndex == 0) then
      zoneindexreturn = "Pick a zone!";
    end
  elseif(continent == 1) then -- kalimdor
    if(zoneIndex == 1) then
      zoneindexreturn = "Ashenvale 20-30";
    elseif(zoneIndex == 2) then
      zoneindexreturn = "Azshara 45-55";
    elseif(zoneIndex == 3) then
      zoneindexreturn = "Azuremyst Isle 1-10";
    elseif(zoneIndex == 4) then
      zoneindexreturn = "Bloodmyst Isle 10-20";
    elseif(zoneIndex == 5) then
      zoneindexreturn = "Darkshore 10-20";
    elseif(zoneIndex == 6) then
      zoneindexreturn = "Darnassus Town";
    elseif(zoneIndex == 7) then
      zoneindexreturn = "Desolace 30-40";
    elseif(zoneIndex == 8) then
      zoneindexreturn = "Durotar 1-10";
    elseif(zoneIndex == 9) then
      zoneindexreturn = "Dustwallow Marsh 30-40";
    elseif(zoneIndex == 10) then
      zoneindexreturn = "Felwood 50-60";
    elseif(zoneIndex == 11) then
      zoneindexreturn = "Feralas 40-50"
    elseif(zoneIndex == 12) then
      zoneindexreturn = "Moonglade Town";
    elseif(zoneIndex == 13) then
      zoneindexreturn = "Mulgore 1-10";
    elseif(zoneIndex == 14) then
      zoneindexreturn = "Orgrimmar Town";
    elseif(zoneIndex == 15) then
      zoneindexreturn = "Silithus 50-60";
    elseif(zoneIndex == 16) then
      zoneindexreturn = "Stonetalon Mountains 20-30";
    elseif(zoneIndex == 17) then
      zoneindexreturn = "Tanaris 40-50";
    elseif(zoneIndex == 18) then
      zoneindexreturn = "Teldrassil 1-10";
    elseif(zoneIndex == 19) then
      zoneindexreturn = "The Barrens 10-20";
    elseif(zoneIndex == 20) then
      zoneindexreturn = "The Exodar Town";
    elseif(zoneIndex == 21) then
      zoneindexreturn = "Thousand Needles 20-30";
    elseif(zoneIndex == 22) then
      zoneindexreturn = "Thunderbluff Town";
    elseif(zoneIndex == 23) then
      zoneindexreturn = "Un'Goro Crater 50-55";
    elseif(zoneIndex == 24) then
      zoneindexreturn = "Winterspring 50-60";
    elseif(zoneIndex == 0) then
      zoneindexreturn = "Pick a zone!";
    end
   elseif(continent == 0) then
     zoneindexreturn = "Pick a Continent";
   elseif(continent == 3) then
     if(zoneIndex == 1) then
       zoneindexreturn = "Blade's Edge Mountains 68-70"
     elseif(zoneIndex == 2) then
       zoneindexreturn = "Hellfire Peninsula 58-62"
     elseif(zoneIndex == 3) then
       zoneindexreturn = "Nagrand 65-68"
     elseif(zoneIndex == 4) then
       zoneindexreturn = "Netherstorm 68-70"
     elseif(zoneIndex == 5) then
       zoneindexreturn = "Shadowmoon Valley 68-70"
     elseif(zoneIndex == 6) then
       zoneindexreturn = "Shattrath City Town"
     elseif(zoneIndex == 7) then
       zoneindexreturn = "Terokar Forest 65-68";
     elseif(zoneIndex == 8) then
       zoneindexreturn = "Zangarmarsh 62-65";
     elseif(zoneIndex == 0) then
       zoneindexreturn = "Pick a zone!"
    end
   elseif(continent == 4) then
     if(zoneIndex == 1) then
       zoneindexreturn = "Borean Tundra 68-72"
     elseif(zoneIndex == 2) then
       zoneindexreturn = "Crystalsong Forest 65-68"
     elseif(zoneIndex == 3) then
       zoneindexreturn = "Dalaran Town"
     elseif(zoneIndex == 4) then
       zoneindexreturn = "Dragonblight 63-66"
     elseif(zoneIndex == 5) then
       zoneindexreturn = "Grizzly HIlls 65-68"
     elseif(zoneIndex == 6) then
       zoneindexreturn = "Howling Fjord 68-72"
     elseif(zoneIndex == 8) then
       zoneindexreturn = "Icecrown 78-80"
     elseif(zoneIndex == 9) then
       zoneindexreturn = "Sholazar Basin 65-68"
     elseif(zoneIndex == 10) then
       zoneindexreturn = "The Storm Peaks 78-80"
     elseif(zoneIndex == 11) then
       zoneindexreturn = "Wintersgrasp PVP";
     elseif(zoneIndex == 12) then
       zoneindexreturn = "Zul'Drak 75-78";
     elseif(zoneIndex == 0)then
       zoneindexreturn = "Pick a zone!"
     end
   elseif(continent == -1) then
     zoneindexreturn = "Pick a World!"
  end

    text="Player:"..capZone.." "..zoneLevelLow[zone].."-"..zoneLevelHigh[zone].." ".."Map:"..zoneindexreturn
    
    ZoneLevelM.c:SetText(text)
  end
end
ZLVLMAP()

function ZLVLEXPBAR()
        ZoneLevelEXP=CreateFrame("Frame","ZoneLevelEXP",MainMenuExpBar);
        ZoneLevelEXP.c=ZoneLevelEXP:CreateFontString(nil,"OVERLAY"); --OVERLAY --nil ARTWORK
        ZoneLevelEXP.c:SetPoint("BOTTOMRIGHT",MainMenuExpBar,"BOTTOMRIGHT",4,2); --0,10
        ZoneLevelEXP.c:SetJustifyH("RIGHT");
        ZoneLevelEXP.c:SetFontObject(GameFontNormal);
        ZoneLevelEXP:SetScript("OnUpdate",ZoneLevelEXPOnUpdate);
end

function ZoneLevelEXPOnUpdate()
    local xp = UnitXP("player")
    local xpmax = UnitXPMax("player")
    local level = UnitLevel("player")
    
  if(zlvlexpbar == true) then
    text="("..floor(xpmax-xp)..")";
    ZoneLevelEXP.c:SetText(text)
  elseif(level == 80) then
    text="";
    ZoneLevelEXP.c:SetText(text)
  elseif(zlvlexpbar == false) then
    text="";
    ZoneLevelEXP.c:SetText(text)
  end
end
ZLVLEXPBAR()

function ZLVLREPBAR()
        ZoneLevelREP=CreateFrame("Frame","ZoneLevelREP",ReputationWatchBar);
        ZoneLevelREP.c=ZoneLevelREP:CreateFontString(nil,"OVERLAY"); --OVERLAY --nil ARTWORK
        ZoneLevelREP.c:SetPoint("BOTTOMRIGHT",ReputationWatchBar,"BOTTOMRIGHT",-25,2); --0,10
        ZoneLevelREP.c:SetJustifyH("RIGHT");
        ZoneLevelREP.c:SetFontObject(GameFontNormal);
        ZoneLevelREP:SetScript("OnUpdate",ZoneLevelREPOnUpdate);
end

function ZoneLevelREPOnUpdate()
  local name, standing, min, max, value = GetWatchedFactionInfo();
 
  if(zlvlrepbartogo == true) then
  text=floor(max-value)
  ZoneLevelREP.c:SetText(text)
  elseif(zlvlrepbartogo == false) then
  text=""
  ZoneLevelREP.c:SetText(text)
  end

end
ZLVLREPBAR()

function ZLVLREPBART()
        ZoneLevelREPT=CreateFrame("Frame","ZoneLevelREPT",ReputationWatchBar);
        ZoneLevelREPT.c=ZoneLevelREPT:CreateFontString(nil,"OVERLAY"); --OVERLAY --nil ARTWORK
        ZoneLevelREPT.c:SetPoint("BOTTOMLEFT",ReputationWatchBar,"BOTTOMLEFT",25,2); --0,10
        ZoneLevelREPT.c:SetJustifyH("LEFT");
        ZoneLevelREPT.c:SetFontObject(GameFontNormal);
        ZoneLevelREPT:SetScript("OnUpdate",ZoneLevelREPTOnUpdate);
end

function ZoneLevelREPTOnUpdate()
local name, standing, min, max, value = GetWatchedFactionInfo();

if(zlvlrepbartext == true) then
  if(standing == 0) then
    text="Unknown"
    ZoneLevelREPT.c:SetText(text)
  elseif(standing == 1) then
    text="Hated"
    ZoneLevelREPT.c:SetText(text)
  elseif(standing == 2) then
    text="Hostile"
    ZoneLevelREPT.c:SetText(text)
  elseif(standing == 3) then
    text="Unfriendly"
    ZoneLevelREPT.c:SetText(text)
  elseif(standing == 4) then
    text="Neutral"
    ZoneLevelREPT.c:SetText(text)
  elseif(standing == 5) then
    text="Friendly"
    ZoneLevelREPT.c:SetText(text)
  elseif(standing == 6) then
    text="Honored"
    ZoneLevelREPT.c:SetText(text)
  elseif(standing == 7) then
    text="Revered"
    ZoneLevelREPT.c:SetText(text)
  elseif(standing == 8) then
    text="Exalted"
    ZoneLevelREPT.c:SetText(text)
  end
elseif(zlvlrepbartext == false) then
    text=""
    ZoneLevelREPT.c:SetText(text)
 end
end
ZLVLREPBART()

-- BASE FRAME
MyFrame = CreateFrame("Frame", "ZLVLCONFIG", ZLVLCONFIG)
MyFrame:ClearAllPoints()
MyFrame:SetBackdrop(StaticPopup1:GetBackdrop())
MyFrame:SetFrameStrata("HIGH")
MyFrame:SetHeight(300)
MyFrame:SetWidth(300)
MyFrame:SetClampedToScreen(true)
MyFrame:SetMovable(true)
MyFrame:EnableMouse(true)
MyFrame:Hide()
MyFrame:SetScript("OnMouseDown",function()
  MyFrame:StartMoving()
end)
MyFrame:SetScript("OnMouseUp",function()
  MyFrame:StopMovingOrSizing()
end)
--TOP TEXT
MyFrame.text = MyFrame:CreateFontString(nil, "BACKGROUND", "GameFontNormal")
MyFrame.text:SetPoint("TOP",ZLVLCONFIG,"TOP", 0,-15)
MyFrame.text:SetText("ZoneLevel")
MyFrame:SetPoint("CENTER", 0, 0)
--UNDER TOP TEXT
MyFrame.textt = MyFrame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
MyFrame.textt:SetPoint("TOP", ZLVLCONFIG, "TOP", 0,-25)
MyFrame.textt:SetText("Config")
--REP/EXP
MyFrame.textaz = MyFrame:CreateFontString(nil, "BACKGROUND", "GameFontNormal")
MyFrame.textaz:SetPoint("TOP", ZLVLCONFIG, "TOP", -75,-45)
MyFrame.textaz:SetText("Rep/Exp Bar")
--ICONFUNCTION CONT
MyFrame.texticona = MyFrame:CreateFontString(nil, "BACKGROUND", "GameFontNormal")
MyFrame.texticona:SetPoint("TOP", ZLVLCONFIG, "TOP", -75,-150)
MyFrame.texticona:SetText("Icon Functions")
--INFO BOTTOM
MyFrame.textab = MyFrame:CreateFontString(nil, "BACKGROUND", "GameFontNormal")
MyFrame.textab:SetPoint("BOTTOM", ZLVLCONFIG, "BOTTOM", -30,15)
MyFrame.textab:SetText("ZoneLevel - soulofsin007@gmail.com")
--ICON FUNCTIONS
MyFrame.texticon = MyFrame:CreateFontString(nil, "BACKGROUND", "GameFontNormal")
MyFrame.texticon:SetPoint("TOP", ZLVLCONFIG, "TOP", 75,-45)
MyFrame.texticon:SetText("Icon Cont.")
--BUTTON Exp TOGO
MyFrame.btn = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btn:SetWidth(100)
MyFrame.btn:SetHeight(22)
MyFrame.btn:SetPoint("TOP", ZLVLCONFIG, "TOP", -75,-64)
MyFrame.btn:SetText("EXP ToGo")
MyFrame.btn:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btn:SetScript("OnClick", function() if(zlvlexpbar == true) then DEFAULT_CHAT_FRAME:AddMessage("Turning off exp bar text.") zlvlexpbar = false elseif(zlvlexpbar == false) then DEFAULT_CHAT_FRAME:AddMessage("Turning on exp bar togo.") zlvlexpbar = true end end)
MyFrame.btn:SetAlpha(1)
MyFrame.btn:Show()
--BUTTON REP EXP TO GO
MyFrame.btnrep = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnrep:SetWidth(100)
MyFrame.btnrep:SetHeight(22)
MyFrame.btnrep:SetPoint("TOP", ZLVLCONFIG, "TOP", -75,-94)
MyFrame.btnrep:SetText("Rep ToGo")
MyFrame.btnrep:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnrep:SetScript("OnClick", function() if(zlvlrepbartogo == true) then DEFAULT_CHAT_FRAME:AddMessage("Hiding rep togo.") zlvlrepbartogo = false; elseif(zlvlrepbartogo == false) then DEFAULT_CHAT_FRAME:AddMessage("Showing rep togo.") zlvlrepbartogo = true end end)
MyFrame.btnrep:SetAlpha(1)
MyFrame.btnrep:Show()
--BUTTON REP STATUS
MyFrame.btnrepstat = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnrepstat:SetWidth(100)
MyFrame.btnrepstat:SetHeight(22)
MyFrame.btnrepstat:SetPoint("TOP", ZLVLCONFIG, "TOP", -75,-124)
MyFrame.btnrepstat:SetText("Rep Status")
MyFrame.btnrepstat:SetPoint("CENTER", MyFrame, "Center")
MyFrame.btnrepstat:SetScript("OnClick", function() if(zlvlrepbartext == true) then DEFAULT_CHAT_FRAME:AddMessage("Hiding your current status from rep bar.") zlvlrepbartext = false; elseif(zlvlrepbartext == false) then DEFAULT_CHAT_FRAME:AddMessage("Showing your current status on rep bar.") zlvlrepbartext = true end end)
--BUTTON EXIT
MyFrame.btnexit = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnexit:SetWidth(20)
MyFrame.btnexit:SetHeight(20)
MyFrame.btnexit:SetPoint("TOP", ZLVLCONFIG, "TOP", 125,-10)
MyFrame.btnexit:SetText("X")
MyFrame.btnexit:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnexit:SetScript("OnClick", function() if(MyFrame:Show()) then MyFrame:Hide() elseif(MyFrame:Hide()) then MyFrame:Show() end end)
MyFrame.btnexit:SetAlpha(1)
MyFrame.btnexit:Show()
--HIDE/SHOW ICOn
MyFrame.btnicon = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnicon:SetWidth(100)
MyFrame.btnicon:SetHeight(22)
MyFrame.btnicon:SetPoint("TOP", ZLVLCONFIG, "TOP", 75,-55)
MyFrame.btnicon:SetText("Icon")
MyFrame.btnicon:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnicon:SetScript("OnClick", function() if(zoneLevelShowIcon == true) then DEFAULT_CHAT_FRAME:AddMessage("Hiding Icon.") zoneLevelShowIcon = false ZoneLevelBase:Hide(); elseif(zoneLevelShowIcon == false) then DEFAULT_CHAT_FRAME:AddMessage("Showing icon.") ZoneLevelBase:Show() zoneLevelShowIcon = true end end)
MyFrame.btnicon:SetAlpha(1)
MyFrame.btnicon:Show()
--LOCK ICON
MyFrame.btnlock = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnlock:SetWidth(100)
MyFrame.btnlock:SetHeight(22)
MyFrame.btnlock:SetPoint("TOP", ZLVLCONFIG, "TOP", 75,-85)
MyFrame.btnlock:SetText("Lock/Unlock")
MyFrame.btnlock:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnlock:SetScript("OnClick", function() if(zoneLevelLocked == true) then DEFAULT_CHAT_FRAME:AddMessage("Unlocking Icon.") zoneLevelLocked = false; ZoneLevelBase:GetTitleRegion():SetAllPoints(ZoneLevelBase); elseif(zoneLevelLocked == false) then DEFAULT_CHAT_FRAME:AddMessage("Locking Icon.") zoneLevelLocked = true; ZoneLevelBase:GetTitleRegion():ClearAllPoints() ZoneLevelBase:GetTitleRegion():SetPoint("TOPLEFT", frame, "TOPLEFT", 0,0 ) ZoneLevelBase:GetTitleRegion():SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", 0,0 ) end end)
MyFrame.btnlock:SetAlpha(1)
MyFrame.btnlock:Show()
--CORDS
MyFrame.btnlock = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnlock:SetWidth(100)
MyFrame.btnlock:SetHeight(22)
MyFrame.btnlock:SetPoint("TOP", ZLVLCONFIG, "TOP", 75,-115)
MyFrame.btnlock:SetText("Cords")
MyFrame.btnlock:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnlock:SetScript("OnClick", function() if(zonelevelcords == true) then DEFAULT_CHAT_FRAME:AddMessage("Hiding Cords from icon. Requires reload of ui. Type /zlvl 1 to reload UI.") zonelevelcords = false; elseif(zonelevelcords == false) then DEFAULT_CHAT_FRAME:AddMessage("Showing cords on icon.") zonelevelcords = true; end end)
MyFrame.btnlock:SetAlpha(1)
MyFrame.btnlock:Show()
--LEVEL ON ICOn
MyFrame.btnlock = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnlock:SetWidth(100)
MyFrame.btnlock:SetHeight(22)
MyFrame.btnlock:SetPoint("TOP", ZLVLCONFIG, "TOP", 75,-145)
MyFrame.btnlock:SetText("Your Level")
MyFrame.btnlock:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnlock:SetScript("OnClick", function() if(zonelevellevel == true) then DEFAULT_CHAT_FRAME:AddMessage("Hiding your level from icon. Requires reload of ui. Type /zlvl 1 to reload UI.") zonelevellevel = false; elseif(zonelevellevel == false) then DEFAULT_CHAT_FRAME:AddMessage("Showing your level on icon.") zonelevellevel = true; end end)
MyFrame.btnlock:SetAlpha(1)
MyFrame.btnlock:Show()
-- FPS ON ICON
MyFrame.btnlock = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnlock:SetWidth(100)
MyFrame.btnlock:SetHeight(22)
MyFrame.btnlock:SetPoint("TOP", ZLVLCONFIG, "TOP", 75,-175)
MyFrame.btnlock:SetText("FPS")
MyFrame.btnlock:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnlock:SetScript("OnClick", function() if(zonelevelfps == true) then DEFAULT_CHAT_FRAME:AddMessage("Hiding your FPS from icon. Requires reload of ui. Type /zlvl 1 to reload UI.") zonelevelfps = false; elseif(zonelevelfps == false) then DEFAULT_CHAT_FRAME:AddMessage("Showing your FPS on icon.") zonelevelfps = true; end end)
MyFrame.btnlock:SetAlpha(1)
MyFrame.btnlock:Show()
--HONOR ON ICON
MyFrame.btnlock = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnlock:SetWidth(100)
MyFrame.btnlock:SetHeight(22)
MyFrame.btnlock:SetPoint("TOP", ZLVLCONFIG, "TOP", -75,-195)
MyFrame.btnlock:SetText("Honor")
MyFrame.btnlock:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnlock:SetScript("OnClick", function() if(zonelevelhonor == true) then DEFAULT_CHAT_FRAME:AddMessage("Hiding your current honor from icon. Requires reload of ui. Type /zlvl 1 to reload UI.") zonelevelhonor = false; elseif(zonelevelhonor == false) then DEFAULT_CHAT_FRAME:AddMessage("Showing your current honor on icon.") zonelevelhonor = true; end end)
MyFrame.btnlock:SetAlpha(1)
MyFrame.btnlock:Show()
--HONOR SESSION
MyFrame.btnlock = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnlock:SetWidth(100)
MyFrame.btnlock:SetHeight(22)
MyFrame.btnlock:SetPoint("TOP", ZLVLCONFIG, "TOP", -75,-225)
MyFrame.btnlock:SetText("Honor Session")
MyFrame.btnlock:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnlock:SetScript("OnClick", function() if(zonelevelhonorsession == true) then DEFAULT_CHAT_FRAME:AddMessage("Hiding your current honor session from icon. Requires reload of ui. Type /zlvl 1 to reload UI.") zonelevelhonorsession = false; elseif(zonelevelhonorsession == false) then DEFAULT_CHAT_FRAME:AddMessage("Showing your current honor session on icon.") zonelevelhonorsession = true; end end)
MyFrame.btnlock:SetAlpha(1)
MyFrame.btnlock:Show()
--MAPTEXT
MyFrame.btnlock = CreateFrame("BUTTON", nil, MyFrame, "UIPanelButtonTemplate")
MyFrame.btnlock:SetWidth(100)
MyFrame.btnlock:SetHeight(22)
MyFrame.btnlock:SetPoint("TOP", ZLVLCONFIG, "TOP", -75,-165)
MyFrame.btnlock:SetText("Map Text")
MyFrame.btnlock:SetPoint("CENTER", MyFrame, "CENTER")
MyFrame.btnlock:SetScript("OnClick", function() if(zlvlmaptext == true) then DEFAULT_CHAT_FRAME:AddMessage("Hiding map text from world map. Requires reload of ui. Type /zlvl 1 to reload UI.") zlvlmaptext = false; elseif(zlvlmaptext == false) then DEFAULT_CHAT_FRAME:AddMessage("Showing text on world map.") zlvlmaptext = true; end end)
MyFrame.btnlock:SetAlpha(1)
MyFrame.btnlock:Show()

Compare with Previous | Blame