--[[-------------------------------------------------- ----- VanillaGuide ----- ------------------ GuideTable.lua Authors: mrmr Version: 1.04.2 ------------------------------------------------------ Description: Object Handling the Guides 1.00 -- Initial Ace2 release 1.99a -- Ally addition starter version 1.03 -- No Changes. Just adjusting "version". 1.99x for a beta release was a weird choise. 1.04.1 -- This will be the place where we "prepare" the guides, upon player login. We'll include all the needed guides here and we'll provide function to retrive informations too 1.04.2 -- no changes in here for this revision ------------------------------------------------------ Connection: --]]-------------------------------------------------- --local VGuide = VGuide Dv(" VGuide GuideTable.lua Start") objGuideTable = {} objGuideTable.__index = objGuideTable function objGuideTable:new(oSettings) local obj = {} setmetatable(obj, self) local function TablesMerge(t1, t2) for k, v in pairs(t2) do if (type(v) == "table") and (type(t1[k] or false) == "table") then TablesMerge(t1[k], t2[k]) else t1[k] = v end end return t1 end local function ColorizeTable(t1) for k1, _ in pairs(t1) do if type(t1[k1].items) == "table" then for k2, v2 in pairs(t1[k1].items) do if v2 then local opentext = { [1] = { ["find"] = "#ACCEPT", ["replace"] = "|c0000ffff" }, [2] = { ["find"] = "#DOQUEST", ["replace"] = "|c000079d2" }, [3] = { ["find"] = "#TURNIN", ["replace"] = "|c0000ff00" }, [4] = { ["find"] = "#NPC", ["replace"] = "|c00ff00ff" }, [5] = { ["find"] = "#COORDS", ["replace"] = "|c00ffff00" }, [6] = { ["find"] = "#VIDEO", ["replace"] = "|c00ff0000" }, [7] = { ["find"] = "#PICTURE", ["replace"] = "|c00fca742" }, [8] = { ["find"] = "#HUNTER", ["replace"] = "|c00a80000" }, } for n = 1, #opentext do t1[k1].items[k2].str = gsub(t1[k1].items[k2].str, opentext[n]["find"],opentext[n]["replace"]) end t1[k1].items[k2].str = gsub(t1[k1].items[k2].str, "#","|r") end end end end return t1 end obj.TableDDM = { lvl1 = { { "v", "Introduction", id = 1}, { "s", "Starting Zones" }, { "s", "Later Leveling" }, { "s", "Profession Guides" }, }, lvl2 = { ["Later Leveling"] = { { "s", "12-20" }, { "s", "20-30" }, { "s", "30-40" }, { "s", "40-50" }, { "s", "50-60" }, }, ["Profession Guides"] = { { "v", "Alchemy", id = nil }, { "v", "Blacksmithing", id = nil }, { "v", "[H] Cooking", id = nil }, { "v", "[A] Cooking", id = nil }, { "v", "Enchanting", id = nil }, { "v", "Engineering", id = nil }, { "v", "Leatherworking", id = nil }, { "v", "Tailoring", id = nil } }, ["[H] Starting Zones"] = { { "s", "Orcs & Trolls" }, { "s", "Taurens" }, { "s", "Undeads" }, }, ["[A] Starting Zones"] = { { "s", "Humans" }, { "s", "Dwarves & Gnomes" }, { "s", "Night Elves" }, }, }, lvl3 = { ["Orcs & Trolls"] = { { "v", "1-6 Durotar", id = nil }, { "v", "6-9 Durotar", id = nil }, { "v", "9-12 Durotar", id = nil }, }, ["Taurens"] = { { "v", "1-6 Mulgore", id = nil }, { "v", "6-10 Mulgore", id = nil }, { "v", "10-12 Mulgore", id = nil }, }, ["Undeads"] = { { "v", "1-6 DeathKnell", id = nil }, { "v", "6-10 Tirisfal Glades", id = nil }, { "v", "10-12 Tirisfal Glades", id = nil }, }, ["[H] 12-20"] = { { "v", "12-15 Barrens", id = nil }, { "v", "15-16 Stonetalon Mountains", id = nil }, { "v", "16-20 Barrens (part 1)", id = nil }, { "v", "16-20 Barrens (part 2)", id = nil }, }, ["[H] 20-30"] = { { "v", "20-21 Stonetalon Mountains", id = nil }, { "v", "21-21 Ashenvale", id = nil }, { "v", "22-23 Southern Barrens", id = nil }, { "v", "23-25 Stonetalon Mountains", id = nil }, { "v", "25-25 Southern Barrens", id = nil }, { "v", "25-26 Thousand Needles", id = nil }, { "v", "26-27 Ashenvale", id = nil }, { "v", "27-27 Stonetalon Mountains", id = nil }, { "v", "27-29 Thousand Needles", id = nil }, { "v", "29-30 Hillsbrad Foothills", id = nil }, }, ["[H] 30-40"] = { { "v", "30-30 Alterac Mountains", id = nil }, { "v", "30-30 Arathi Highlands", id = nil }, { "v", "30-31 Stranglethorn Vale", id = nil }, { "v", "31-32 TN (Shimmering Flats)", id = nil }, { "v", "32-34 Desolace", id = nil }, { "v", "34-35 Stranglethorn Vale", id = nil }, { "v", "35-37 Arathi Highlands", id = nil }, { "v", "37-37 Alterac Mountains", id = nil }, { "v", "37-37 Thousand Needles", id = nil }, { "v", "37-38 Dustwallow Marsh", id = nil }, { "v", "38-40 Stranglethorn Vale", id = nil }, }, ["[H] 40-50"] = { { "v", "40-41 Badlands", id = nil }, { "v", "41-42 Swamp of Sorrows", id = nil }, { "v", "42-43 Stranglethorn Vale", id = nil }, { "v", "43-43 Desolace", id = nil }, { "v", "43-43 Dustwallow Marsh", id = nil }, { "v", "43-44 Tanaris", id = nil }, { "v", "44-46 Feralas", id = nil }, { "v", "46-46 Azshara", id = nil }, { "v", "46-47 Hinterlands", id = nil }, { "v", "47-47 Stranglethorn Vale", id = nil }, { "v", "47-48 Searing Gorge", id = nil }, { "v", "48-48 Swamp of Sorrows", id = nil }, { "v", "48-49 Ferelas", id = nil }, { "v", "49-50 Tanaris", id = nil }, }, ["[H] 50-60"] = { { "v", "50-50 Azshara", id = nil }, { "v", "50-50 Hinterlands", id = nil }, { "v", "50-51 Blasted Lands", id = nil }, { "v", "51-52 Un'Goro Crater", id = nil }, { "v", "52-53 Burning Steppes", id = nil }, { "v", "53-54 Azshara", id = nil }, { "v", "54-54 Felwood", id = nil }, { "v", "54-55 Winterspring", id = nil }, { "v", "55-55 Felwood", id = nil }, { "v", "55-55 Silithus", id = nil }, { "v", "55-56 Western Plaguelands", id = nil }, { "v", "56-57 Eastern Plaguelands", id = nil }, { "v", "57-58 Western Plaguelands", id = nil }, { "v", "58-60 Winterspring", id = nil }, }, ["Humans"] = { { "v", "1-10 Elwynn Forest", id = nil }, { "v", "10-12 Westfall and Lock Modan", id = nil }, }, ["Dwarves & Gnomes"] = { { "v", "1-6 Cold Ridge Valley", id = nil }, { "v", "6-12 Dun Morogh", id = nil }, }, ["Night Elves"] = { { "v", "1-6 Teldrassil", id = nil }, { "v", "6-12 Teldrassil", id = nil }, }, ["[A] 12-20"] = { { "v", "12-14 Darkshore", id = nil }, { "v", "14-17 Darkshore", id = nil }, { "v", "17-18 Loch Modan", id = nil }, { "v", "18-20 Redredge Mountains", id = nil }, }, ["[A] 20-30"] = { { "v", "20-21 Darkshore", id = nil }, { "v", "21-22 Ashenvale", id = nil }, { "v", "22-23 Stonetalon Mountains", id = nil }, { "v", "23-24 Darkshore", id = nil }, { "v", "24-25 Ashenvale", id = nil }, { "v", "25-27 Wetlands", id = nil }, { "v", "27-28 Lakeshire", id = nil }, { "v", "28-29 Duskwood", id = nil }, { "v", "29-30 Ashenvale", id = nil }, { "v", "30-30 Wetlands", id = nil }, }, ["[A] 30-40"] = { { "v", "30-31 Hillsbrad Foothills", id = nil }, { "v", "31-31 Alterac Mountains", id = nil }, { "v", "31-32 Arathi Highlands", id = nil }, { "v", "32-32 Stranglethorn Vale", id = nil }, { "v", "32-33 Thousand Needles (Shimmering Flats)", id = nil }, { "v", "33-33 Stonetalon Mountains", id = nil }, { "v", "33-35 Desolace", id = nil }, { "v", "35-36 Stranglethorn Vale", id = nil }, { "v", "36-37 Alterac Mountains", id = nil }, { "v", "37-38 Arathi Highlands", id = nil }, { "v", "38-38 Dustwallow Marsh", id = nil }, { "v", "38-40 Stranglethorn Vale", id = nil }, }, ["[A] 40-50"] = { { "v", "40-41 Badlands", id = nil }, { "v", "41-41 Swamp of Sorrows", id = nil }, { "v", "41-42 Desolace", id = nil }, { "v", "42-43 Stranglethron Vale", id = nil }, { "v", "43-43 Tanaris", id = nil }, { "v", "43-45 Feralas", id = nil }, { "v", "45-46 Uldaman", id = nil }, { "v", "46-47 The Hinterlands", id = nil }, { "v", "47-47 Feralas", id = nil }, { "v", "47-48 Tanaris", id = nil }, { "v", "48-48 The Hinterlands", id = nil }, { "v", "48-49 Stranglethorn Vale", id = nil }, { "v", "49-50 Blasted Lands", id = nil }, }, ["[A] 50-60"] = { { "v", "50-51 Searing Gorge", id = nil }, { "v", "51-52 Un’Goro Crater", id = nil }, { "v", "52-53 Azshara", id = nil }, { "v", "53-54 Felwood", id = nil }, { "v", "54-54 Tanaris", id = nil }, { "v", "54-54 Felwood", id = nil }, { "v", "54-55 Winterspring", id = nil }, { "v", "55-56 Burning Steppes", id = nil }, { "v", "56-56 Tanaris", id = nil }, { "v", "56-56 Silithus", id = nil }, { "v", "56-57 Western Plaguelands", id = nil }, { "v", "57-58 Eastern Plaguelands", id = nil }, { "v", "58-58 Western Plaguelands", id = nil }, { "v", "58-58 Eastern Plaguelands", id = nil }, { "v", "58-59 Western Plaguelands", id = nil }, { "v", "59-60 Winterspring", id = nil }, }, }, } local tCharInfo = oSettings:GetSettingsCharInfo() obj.Guide = {} obj.NoGuide = {} obj.GuideCount = 0 obj.NoGuideCount = 0 obj.Faction = tCharInfo.Faction obj.Race = tCharInfo.Race tCharInfo = nil -- Guides Praparation methods obj.PrepareGuidesTableHorde = function(self, tRace) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_001_Introduction)) if tRace == "Tauren" then obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_Mulgore)) elseif tRace == "Undead" then obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_TirisfalGlades)) else obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_Durotar)) end obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_12to20)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_20to30)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_30to40)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_40to50)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Horde_50to60)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_004_Professions)) end obj.PrepareNoGuidesTableHorde = function(self, tRace) -- we normilize here, cause "indexes" will clash otherwise if tRace == "Tauren" then obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_TirisfalGlades)) obj:NormalizeGuide(obj.NoGuide, nil) obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Durotar)) elseif tRace == "Undead" then obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Durotar)) obj:NormalizeGuide(obj.NoGuide, nil) obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Mulgore)) else obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Mulgore)) obj:NormalizeGuide(obj.NoGuide, nil) obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_TirisfalGlades)) end end obj.PrepareGuidesTableAlliance = function(self, tRace) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_001_Introduction)) if tRace == "Human" then obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_ElwynnForest)) elseif tRace == "Night Elf" then obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_Teldrassil)) else obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_002_DunMorogh)) end obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_12to20)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_20to30)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_30to40)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_40to50)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_003_Alliance_50to60)) obj.Guide = TablesMerge(obj.Guide, ColorizeTable(Table_004_Professions)) end obj.PrepareNoGuidesTableAlliance = function(self, tRace) -- we normilize here, cause "indexes" will clash otherwise if tRace == "Human" then obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_DunMorogh)) obj:NormalizeGuide(obj.NoGuide, nil) obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Teldrassil)) elseif tRace == "Night Elf" then obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_ElwynnForest)) obj:NormalizeGuide(obj.NoGuide, nil) obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_DunMorogh)) else obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_Teldrassil)) obj:NormalizeGuide(obj.NoGuide, nil) obj.NoGuide = TablesMerge(obj.NoGuide, ColorizeTable(Table_002_ElwynnForest)) end end obj.NormalizeGuide = function(self, t, offset) if not offset then offset = 0 end -- the index_table will store all the guideIDs, as they are readen from file. -- then, once done, those IDs are sorted (from lower to higer) local index_table = {} for i,_ in pairs(t) do table.insert(index_table, i) end table.sort(index_table) -- this for-cicle will sort the tables, so we'll have them listed from lower to higer -- Every ID will be converted from its original value to a new incremental index -- starting from 1 (Introduction) local c = 0 + offset for _,v in ipairs(index_table) do c = c + 1 t[c] = t[v] if v ~= c then t[v] = nil end end return t, c - offset end -- DropDownMenu Preparation methods local function xSearchID(tDDMsection) for _,v1 in ipairs(tDDMsection) do for k,v2 in ipairs(obj.Guide) do -- we use the "plain" method here, as in those "title" string -- we could find special characters like "-" and "[" if string.find(v2.title, v1[2], 1, true) then v1.id = k end end end end obj.DefineDDMProfessionsSubMenu = function(self) xSearchID(obj.TableDDM.lvl2["Profession Guides"]) end obj.DefineDDMStartingZonesSubMenu = function(self, tFaction) if tFaction == "Horde" then xSearchID(obj.TableDDM.lvl3["Orcs & Trolls"]) xSearchID(obj.TableDDM.lvl3["Taurens"]) xSearchID(obj.TableDDM.lvl3["Undeads"]) else xSearchID(obj.TableDDM.lvl3["Humans"]) xSearchID(obj.TableDDM.lvl3["Night Elves"]) xSearchID(obj.TableDDM.lvl3["Dwarves & Gnomes"]) end end obj.DefineDDMLaterLevelingSubMenu = function(self, tFaction) if tFaction == "Horde" then xSearchID(obj.TableDDM.lvl3["[H] 12-20"]) xSearchID(obj.TableDDM.lvl3["[H] 20-30"]) xSearchID(obj.TableDDM.lvl3["[H] 30-40"]) xSearchID(obj.TableDDM.lvl3["[H] 40-50"]) xSearchID(obj.TableDDM.lvl3["[H] 50-60"]) else xSearchID(obj.TableDDM.lvl3["[A] 12-20"]) xSearchID(obj.TableDDM.lvl3["[A] 20-30"]) xSearchID(obj.TableDDM.lvl3["[A] 30-40"]) xSearchID(obj.TableDDM.lvl3["[A] 40-50"]) xSearchID(obj.TableDDM.lvl3["[A] 50-60"]) end end -- Clear Tables read from .toc obj.ClearInitialTablesContent = function(self) Table_001_Introduction = nil Table_002_Durotar = nil Table_002_Mulgore = nil Table_002_TirisfalGlades = nil Table_002_DunMorogh = nil Table_002_Teldrassil = nil Table_002_ElwynnForest = nil Table_003_Horde_12to20 = nil Table_003_Horde_20to30 = nil Table_003_Horde_30to40 = nil Table_003_Horde_40to50 = nil Table_003_Horde_50to60 = nil Table_003_Alliance_12to20 = nil Table_003_Alliance_20to30 = nil Table_003_Alliance_30to40 = nil Table_003_Alliance_40to50 = nil Table_003_Alliance_50to60 = nil Table_004_Professions = nil end -- Query object methods obj.GetGuide = function(self, nGuideID) if nGuideID > obj.GuideCount then Dv(" -- Guide not present! ID exceed the GuideCount value!") elseif nGuideID < 1 then Dv(" -- negative or zero ID! Are you joking?") else return obj.Guide[nGuideID] end end obj.GetTableDDM = function(self) return obj.TableDDM end -- Constructor Main if obj.Faction == "Horde" then obj:PrepareGuidesTableHorde(obj.Race) obj:PrepareNoGuidesTableHorde(obj.Race) else obj:PrepareGuidesTableAlliance(obj.Race) obj:PrepareNoGuidesTableAlliance(obj.Race) end -- we use a HUGE offset here, so we know those NoGuide will end up at the end! obj.NoGuide, obj.NoGuideCount = obj:NormalizeGuide(obj.NoGuide, 100500) obj.Guide = TablesMerge(obj.Guide, obj.NoGuide) obj.Guide, obj.GuideCount = obj:NormalizeGuide(obj.Guide, nil) obj:DefineDDMProfessionsSubMenu() obj:DefineDDMStartingZonesSubMenu(obj.Faction) obj:DefineDDMLaterLevelingSubMenu(obj.Faction) obj:ClearInitialTablesContent() return obj end Dv(" VGuide GuideTable.lua Start") --return VGuide --[[ do ----------------------------------------------------------------- Table_001_Introduction = { [0001] = { title = "Introduction" }, } ----------------------------------------------------------------- Table_002_Durotar = { [0106] = { title = "1-6 Durotar" }, [0609] = { title = "6-9 Durotar" }, [0912] = { title = "9-12 Durotar" }, } Table_002_Mulgore = { [0106] = { title = "1-6 Mulgore" }, [0610] = { title = "6-10 Mulgore" }, [1012] = { title = "10-12 Mulgore" }, } Table_002_TirisfalGlades = { [0106] = { title = "1-6 DeathKnell (Tirisfal Glades)" }, [0610] = { title = "6-10 Tirisfal Glades" }, [1012] = { title = "10-12 Tirisfal Glades" }, } ----------------------------------------------------------------- Table_002_DunMorogh = { [0106] = { title = "1-6 Cold Ridge Valley" }, [0612] = { title = "6-12 Dun Morogh" }, } Table_002_Teldrassil = { [0106] = { title = "1-6 Teldrassil" }, [0612] = { title = "6-12 Teldrassil" }, } Table_002_ElwynnForest = { [0110] = { title = "1-10 Elwynn Forest" }, [1012] = { title = "10-12 Westfall and Lock Modan" }, } ----------------------------------------------------------------- Table_003_Horde_12to20 = { [1215] = { title = "12-15 Barrens" }, [1516] = { title = "15-16 Stonetalon Mountains" }, [1618] = { title = "16-20 Barrens Part 1" }, [1820] = { title = "16-20 Barrens Part 2" }, } Table_003_Horde_20to30 = { [2021] = { title = "20-21 Stonetalon Mountains" }, [2121] = { title = "21-21 Ashenvale" }, [2223] = { title = "22-23 Southern Barrens" }, [2325] = { title = "23-25 Stonetalon Mountains" }, [2525] = { title = "25-25 Southern Barrens" }, [2526] = { title = "25-26 Thousand Needles" }, [2627] = { title = "26-27 Ashenvale" }, [2727] = { title = "27-27 Stonetalon Mountains" }, [2729] = { title = "27-29 Thousand Needles" }, [2930] = { title = "29-30 Hillsbrad Foothills" }, } Table_003_Horde_30to40 = { [3029] = { title = "30-30 Alterac Mountains" }, [3030] = { title = "30-30 Arathi Highlands" }, [3031] = { title = "30-31 Stranglethorn Vale" }, [3132] = { title = "31-32 TN (Shimmering Flats)" }, [3234] = { title = "32-34 Desolace" }, [3435] = { title = "34-35 Stranglethorn Vale" }, [3537] = { title = "35-37 Arathi Highlands" }, [3736] = { title = "37-37 Alterac Mountains" }, [3737] = { title = "37-37 Thousand Needles" }, [3738] = { title = "37-38 Dustwallow Marsh" }, [3840] = { title = "38-40 Stranglethorn Vale" }, } Table_003_Horde_40to50 = { [4041] = { title = "40-41 Badlands" }, [4142] = { title = "41-42 Swamp of Sorrows" }, [4243] = { title = "42-43 Stranglethorn Vale" }, [4342] = { title = "43-43 Desolace" }, [4343] = { title = "43-43 Dustwallow Marsh" }, [4344] = { title = "43-44 Tanaris" }, [4446] = { title = "44-46 Feralas" }, [4646] = { title = "46-46 Azshara" }, [4647] = { title = "46-47 Hinterlands" }, [4747] = { title = "47-47 Stranglethorn Vale" }, [4748] = { title = "47-48 Searing Gorge" }, [4848] = { title = "48-48 Swamp of Sorrows" }, [4849] = { title = "48-49 Feralas" }, [4950] = { title = "49-50 Tanaris" }, } Table_003_Horde_50to60 = { [5049] = { title = "50-50 Azshara" }, [5050] = { title = "50-50 Hinterlands" }, [5051] = { title = "50-51 Blasted Lands" }, [5152] = { title = "51-52 Un'Goro Crater" }, [5253] = { title = "52-53 Burning Steppes" }, [5354] = { title = "53-54 Azshara" }, [5454] = { title = "54-54 Felwood" }, [5455] = { title = "54-55 Winterspring" }, [5554] = { title = "55-55 Felwood" }, [5555] = { title = "55-55 Silithus" }, [5556] = { title = "55-56 Western Plaguelands" }, [5657] = { title = "56-57 Eastern Plaguelands" }, [5758] = { title = "57-58 Western Plaguelands" }, [5860] = { title = "58-60 Winterspring" }, } ----------------------------------------------------------------- Table_003_Alliance_12to20 = { [1214] = { title = "12-14 Darkshore" }, [1417] = { title = "14-17 Darkshore" }, [1718] = { title = "17-18 Loch Modan" }, [1820] = { title = "18-20 Redredge Mountains" }, } Table_003_Alliance_20to30 = { [2021] = { title = "20-21 Darkshore" }, [2122] = { title = "21-22 Ashenvale" }, [2223] = { title = "22-23 Stonetalon Mountains" }, [2324] = { title = "23-24 Darkshore" }, [2425] = { title = "24-25 Ashenvale" }, [2526] = { title = "25-27 Wetlands" }, [2728] = { title = "27-28 Lakeshire" }, [2829] = { title = "28-29 Duskwood" }, [2930] = { title = "29-30 Ashenvale" }, [3030] = { title = "30-30 Wetlands" }, } Table_003_Alliance_30to40 = { [3031] = { title = "30-31 Hillsbrad Foothills" }, [3131] = { title = "31-31 Alterac Mountains" }, [3132] = { title = "31-32 Arathi Highlands" }, [3232] = { title = "32-32 Stranglethorn Vale" }, [3233] = { title = "32-33 Thousand Needles (Shimmering Flats)" }, [3333] = { title = "33-33 Stonetalon Mountains" }, [3335] = { title = "33-35 Desolace" }, [3536] = { title = "35-36 Stranglethorn Vale" }, [3637] = { title = "36-37 Alterac Mountains" }, [3738] = { title = "37-38 Arathi Highlands" }, [3838] = { title = "38-38 Dustwallow Marsh", } [3840] = { title = "38-40 Stranglethorn Vale" }, } Table_003_Alliance_40to50 = { [4041] = { title = "40-41 Badlands" }, [4141] = { title = "41-41 Swamp of Sorrows" }, [4142] = { title = "41-42 Desolace" }, [4243] = { title = "42-43 Stranglethron Vale" }, [4343] = { title = "43-43 Tanaris" }, [4345] = { title = "43-45 Feralas" }, [4546] = { title = "45-46 Uldaman" }, [4647] = { title = "46-47 The Hinterlands" }, [4747] = { title = "47-47 Feralas" }, [4748] = { title = "47-48 Tanaris" }, [4848] = { title = "48-48 The Hinterlands" }, [4849] = { title = "48-49 Stranglethorn Vale" }, [4950] = { title = "49-50 Blasted Lands" }, } Table_003_Alliance_50to60 = { [5051] = { title = "50-51 Searing Gorge" }, [5152] = { title = "51-52 Un’Goro Crater" }, [5253] = { title = "52-53 Azshara" }, [5354] = { title = "53-54 Felwood" }, [5453] = { title = "54-54 Tanaris" }, [5454] = { title = "54-54 Felwood" }, [5455] = { title = "54-55 Winterspring" }, [5556] = { title = "55-56 Burning Steppes" }, [5655] = { title = "56-56 Tanaris" }, [5656] = { title = "56-56 Silithus" }, [5657] = { title = "56-57 Western Plaguelands" }, [5758] = { title = "57-58 Eastern Plaguelands" }, [5857] = { title = "58-58 Western Plaguelands" }, [5858] = { title = "58-58 Eastern Plaguelands" }, [5859] = { title = "58-59 Western Plaguelands" }, [5960] = { title = "59-60 Winterspring" }, } ----------------------------------------------------------------- Table_004_Professions = { [7002] = { title = "1-300 Alchemy" }, [7003] = { title = "1-300 Blacksmithing" }, [7004] = { title = "1-300 Cooking (Horde)" }, [7005] = { title = "1-300 Cooking (Alliance)" }, [7006] = { title = "1-300 Enchanting" }, [7007] = { title = "1-300 Engineering" }, [7008] = { title = "1-300 Leatherworking" }, [7009] = { title = "1-300 Tailoring" }, } end ]]