You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
11879 lines
304 KiB
11879 lines
304 KiB
--[[
|
|
Name: LibTouristClassic-1.0
|
|
Revision: $Rev: 253 $
|
|
Author(s): Odica, Mishikal1; based on LibTourist-3.0
|
|
Documentation: https://www.wowace.com/projects/libtourist-1-0/pages/api-reference
|
|
Git: https://repos.wowace.com/wow/libtourist-classic libtourist-classic
|
|
Description: A library to provide information about zones and instances for WoW Classic
|
|
License: MIT
|
|
]]
|
|
|
|
local MAJOR_VERSION = "LibTouristClassic-1.0"
|
|
local MINOR_VERSION = 90000 + tonumber(("$Revision: 252 $"):match("(%d+)"))
|
|
|
|
if not LibStub then error(MAJOR_VERSION .. " requires LibStub") end
|
|
local C_Map = C_Map
|
|
local Tourist, oldLib = LibStub:NewLibrary(MAJOR_VERSION, MINOR_VERSION)
|
|
if not Tourist then
|
|
return
|
|
end
|
|
|
|
local addonName = ...
|
|
|
|
if oldLib then
|
|
oldLib = {}
|
|
for k, v in pairs(Tourist) do
|
|
Tourist[k] = nil
|
|
oldLib[k] = v
|
|
end
|
|
end
|
|
|
|
local HBD = LibStub("HereBeDragons-2.0")
|
|
function Tourist:GetHBD() return HBD end
|
|
|
|
local function trace(msg)
|
|
-- DEFAULT_CHAT_FRAME:AddMessage(msg)
|
|
end
|
|
|
|
-- Localization tables
|
|
local BZ = {}
|
|
local BZR = {}
|
|
|
|
local playerLevel = UnitLevel("player")
|
|
|
|
local isAlliance, isHorde, isNeutral
|
|
do
|
|
local faction = UnitFactionGroup("player")
|
|
isAlliance = faction == "Alliance"
|
|
isHorde = faction == "Horde"
|
|
isNeutral = not isAlliance and not isHorde
|
|
end
|
|
|
|
local isWestern = GetLocale() == "enUS" or GetLocale() == "deDE" or GetLocale() == "frFR" or GetLocale() == "esES"
|
|
|
|
local Azeroth = "Azeroth"
|
|
local Kalimdor = "Kalimdor"
|
|
local Eastern_Kingdoms = "Eastern Kingdoms"
|
|
local Outland = "Outland"
|
|
local Northrend = "Northrend"
|
|
|
|
local X_Y_ZEPPELIN = "%s - %s Zeppelin"
|
|
local X_Y_BOAT = "%s - %s Boat"
|
|
local X_Y_PORTAL = "%s - %s Portal"
|
|
local X_Y_TELEPORT = "%s - %s Teleport"
|
|
|
|
if GetLocale() == "zhCN" then
|
|
X_Y_ZEPPELIN = "%s - %s 飞艇"
|
|
X_Y_BOAT = "%s - %s 船"
|
|
X_Y_PORTAL = "%s - %s 传送门"
|
|
X_Y_TELEPORT = "%s - %s 传送门"
|
|
elseif GetLocale() == "zhTW" then
|
|
X_Y_ZEPPELIN = "%s - %s 飛艇"
|
|
X_Y_BOAT = "%s - %s 船"
|
|
X_Y_PORTAL = "%s - %s 傳送門"
|
|
X_Y_TELEPORT = "%s - %s 傳送門"
|
|
elseif GetLocale() == "frFR" then
|
|
X_Y_ZEPPELIN = "Zeppelin %s - %s"
|
|
X_Y_BOAT = "Bateau %s - %s"
|
|
X_Y_PORTAL = "Portail %s - %s"
|
|
X_Y_TELEPORT = "Téléport %s - %s"
|
|
elseif GetLocale() == "koKR" then
|
|
X_Y_ZEPPELIN = "%s - %s 비행선"
|
|
X_Y_BOAT = "%s - %s 배"
|
|
X_Y_PORTAL = "%s - %s 차원문"
|
|
X_Y_TELEPORT = "%s - %s 차원문"
|
|
elseif GetLocale() == "deDE" then
|
|
X_Y_ZEPPELIN = "%s - %s Zeppelin"
|
|
X_Y_BOAT = "%s - %s Schiff"
|
|
X_Y_PORTAL = "%s - %s Portal"
|
|
X_Y_TELEPORT = "%s - %s Teleport"
|
|
elseif GetLocale() == "esES" then
|
|
X_Y_ZEPPELIN = "%s - %s Zepelín"
|
|
X_Y_BOAT = "%s - %s Barco"
|
|
X_Y_PORTAL = "%s - %s Portal"
|
|
X_Y_TELEPORT = "%s - %s Teletransportador"
|
|
elseif GetLocale() == "esMX" then
|
|
X_Y_ZEPPELIN = "%s - %s Zepelín"
|
|
X_Y_BOAT = "%s - %s Barco"
|
|
X_Y_PORTAL = "%s - %s Portal"
|
|
X_Y_TELEPORT = "%s - %s Teletransportador"
|
|
elseif GetLocale() == "itIT" then
|
|
X_Y_ZEPPELIN = "%s - %s Zeppelin"
|
|
X_Y_BOAT = "%s - %s Barca"
|
|
X_Y_PORTAL = "%s - %s Portale"
|
|
X_Y_TELEPORT = "%s - %s Teletrasporto"
|
|
elseif GetLocale() == "ptBR" then
|
|
X_Y_ZEPPELIN = "%s - %s Zepelim"
|
|
X_Y_BOAT = "%s - %s Barco"
|
|
X_Y_PORTAL = "%s - %s Portal"
|
|
X_Y_TELEPORT = "%s - %s Teleporte"
|
|
end
|
|
|
|
local recZones = {}
|
|
local recInstances = {}
|
|
local lows = setmetatable({}, {__index = function() return 0 end})
|
|
local highs = setmetatable({}, getmetatable(lows))
|
|
local continents = {}
|
|
local instances = {}
|
|
local paths = {}
|
|
local flightnodes = {}
|
|
local types = {}
|
|
local groupSizes = {}
|
|
local groupMinSizes = {}
|
|
local groupMaxSizes = {}
|
|
local groupAltSizes = {}
|
|
local factions = {}
|
|
local yardWidths = {}
|
|
local yardHeights = {}
|
|
local yardXOffsets = {}
|
|
local yardYOffsets = {}
|
|
local fishing_low = {}
|
|
local fishing_high = {}
|
|
local cost = {}
|
|
local textures = {}
|
|
local textures_rev = {}
|
|
local complexOfInstance = {}
|
|
local zoneComplexes = {}
|
|
local entrancePortals_zone = {}
|
|
local entrancePortals_x = {}
|
|
local entrancePortals_y = {}
|
|
|
|
local zoneMapIDtoContinentMapID = {}
|
|
local zoneMapIDs = {}
|
|
local mapZonesByContinentID = {}
|
|
|
|
local FlightnodeLookupTable = {}
|
|
local gatheringFlightnodes = false
|
|
local flightnodeDataGathered = false
|
|
|
|
local GAME_LOCALE = GetLocale()
|
|
local COSMIC_MAP_ID = 946
|
|
|
|
|
|
local flightNodeIgnoreList = {
|
|
[59] = "Dun Baldar, Alterac Valley",
|
|
[60] = "Frostwolf Keep, Alterac Valley",
|
|
[108] = "Nagrand - PvP - Attack Run End 3",
|
|
[142] = "Hellfire Peninsula - Reaver's Fall",
|
|
[212] = "Quest - Sunwell Daily - Ship Bombing - End",
|
|
[113] = "Quest - Nethrandamus Start",
|
|
[131] = "Quest - Horde Hellfire Start",
|
|
[136] = "Quest - Hellfire, Aerial Mission (Horde) End",
|
|
[211] = "Quest - Sunwell Daily - Ship Bombing - Start",
|
|
[104] = "Nagrand - PvP - Attack Run End 1",
|
|
[152] = "Quest - Netherstorm - Manaforge Ultris (Start)",
|
|
[137] = "Quest - Hellfire, Aerial Mission (Alliance) Start",
|
|
[145] = "Quest - Netherstorm - Stealth Flight - Begin",
|
|
[112] = "Eversong - Duskwither Teleport End",
|
|
[135] = "Quest - Hellfire, Aerial Mission (Horde) Start",
|
|
[134] = "Quest - Hellfire Peninsula (Alliance) End",
|
|
[109] = "Nagrand - PvP - Attack Run Start 4",
|
|
[95] = "Zangarmarsh - Quest - As the Crow Flies",
|
|
[147] = "Hellfire Peninsula - Force Camp Beach Head",
|
|
[106] = "Nagrand - PvP - Attack Run End 2",
|
|
[169] = "Quest - Netherwing Ledge - Mine Cart Ride - South - Start",
|
|
[97] = "Quest - Elekk Path to Kessel",
|
|
[143] = "Quest - Caverns of Time (Intro Flight Path) (End)",
|
|
[111] = "Eversong - Duskwither Teleport",
|
|
[157] = "Quest - Blade's Edge - Vision Guide - Start",
|
|
[154] = "Quest - Netherstorm - Manaforge Ultris (Second Pass) Start",
|
|
[138] = "Quest - Hellfire, Aerial Mission (Alliance) End",
|
|
[209] = "Quest - Sunwell Daily - Dead Scar Bombing - Start",
|
|
[133] = "Quest - Hellfire Peninsula (Alliance Path) Start",
|
|
[107] = "Nagrand - PvP - Attack Run Start 3",
|
|
[148] = "Shatter Point, Hellfire Peninsula (Beach Assault)",
|
|
[153] = "Quest - Netherstorm - Manaforge Ultris (End)",
|
|
[110] = "Nagrand - PvP - Attack Run End 4",
|
|
[171] = "Skettis",
|
|
[144] = "Quest - Caverns of Time (Intro Flight Path) (Start)",
|
|
[103] = "Nagrand - PvP - Attack Run Start 1 ",
|
|
[132] = "Quest - Horde Hellfire End",
|
|
[105] = "Nagrand - PvP - Attack Run Start 2",
|
|
[36] = "Generic, World Target 001",
|
|
[168] = "Filming",
|
|
[170] = "Quest - Netherwing Ledge - Mine Cart Ride - South - End",
|
|
[172] = "Ogri'La",
|
|
[173] = "Quest - Yarzill Flight Start",
|
|
[176] = "Quest - Howling Fjord Tauren Canoe (Start)",
|
|
[177] = "Quest - Howling Fjord Tauren Canoe (End)",
|
|
[180] = "Quest - Dustwallow - Alcaz Survey Start",
|
|
[181] = "Quest - Dustwallow - Alcaz Survey End",
|
|
[186] = "Quest - Howling Fjord - Flight to the Windrunner - Start",
|
|
[187] = "Quest - Howling Fjord - Flight to the Windrunner - End",
|
|
[188] = "Quest - Howling Fjord - Test at Sea - Start",
|
|
[193] = "Quest - Howling Fjord - Mission: Plague This! - End",
|
|
[194] = "Quest - Howling Fjord - Mission: Plague This! - Start",
|
|
[199] = "Quest - Howling Fjord - McGoyver Start",
|
|
[200] = "Quest - Howling Fjord - McGoyver End",
|
|
[203] = "Quest - Stars' Rest -> Wintergarde",
|
|
[210] = "Quest - Sunwell Daily - Dead Scar Bombing - End",
|
|
[221] = "Amber Ledge, Borean (To Beryl)",
|
|
[222] = "Beryl Point, Borean",
|
|
[225] = "Amber Ledge, Borean (to Coldarra)",
|
|
[232] = "Borean Tundra - Warsong Hold Wolf Start",
|
|
[235] = "Transitus Shield, Coldarra (NOT USED)",
|
|
[236] = "Coldarra, Keristrasza to Malygos",
|
|
[239] = "Borean Tundra - Quest - Dusk Start",
|
|
[240] = "Borean Tundra - Quest - Dusk - End",
|
|
[242] = "Quest - Dragonblight - Spiritual Vision - Begin",
|
|
[261] = "Quest - Stars' Rest to Wintergarde End",
|
|
[262] = "Grizzly Hills, Alliance Log Ride Start 01",
|
|
[267] = "Grizzly Hills, Alliance Log Ride Start",
|
|
[269] = "Quest - Westguard Keep to Wintergarde Keep Begin",
|
|
[270] = "Quest - Westguard Keep to Wintergarde Keep End",
|
|
[271] = "Grizzly Hills, Horde Log Ride Start",
|
|
[273] = "Wyrmrest Temple - bottom to top, Dragonblight - Begin",
|
|
[275] = "Wyrmrest Temple - top to bottom, Dragonblight - Begin",
|
|
[277] = "Wyrmrest Temple - top to middle, Dragonblight - Begin",
|
|
[280] = "Wyrmrest Temple - middle to top, Dragonblight - Begin",
|
|
[282] = "Wyrmrest Temple - middle to bottom, Dragonblight - Begin",
|
|
[284] = "Wyrmrest Temple - bottom to middle, Dragonblight - Begin",
|
|
[285] = "Quest - Wintergarde -> Stars' Rest (Start)",
|
|
[287] = "Quest - Valgarde -> Westguard Keep Start",
|
|
[292] = "Flavor - Stormwind Harbor - Start",
|
|
[301] = "Quest - Borean Tundra - Check In With Bixie - Begin",
|
|
[311] = "Camp Onequah, Grizzly Hills (Quest)",
|
|
[313] = "Westfall Brigade, Grizzly Hills (Quest)",
|
|
[314] = "Zim'Torga, Zul'Drak (Quest)",
|
|
[316] = "Ebon Hold - Acherus -> Death's Breach Start",
|
|
[318] = "Ebon Hold - Death's Breach -> Acherus Start",
|
|
[358] = "Quest - Icecrown - North Sea Kraken Bombing - Start",
|
|
[359] = "Quest - Icecrown - North Sea Kraken Bombing - End",
|
|
[392] = "CC Prologue - GT - Quest - Vent Horizon - Start",
|
|
[393] = "CC Prologue - GT - Quest - Vent Horizon - End",
|
|
[394] = "CC Prologue - GT - Battle Flight - Start",
|
|
[404] = "Durotar - ET - CC Prologue Spy Frog Start",
|
|
[405] = "Durotar - ET - CC Prologue Spy Frog End",
|
|
[438] = "Durotar - ET - CC Prologue Troll Taxi Bat Start",
|
|
[439] = "Durotar - ET - CC Prologue Troll Recruit End",
|
|
|
|
}
|
|
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
-- Localization --
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
-- UIMapIDs as used by C_Map.GetMapInfo
|
|
local MapIdLookupTable = {
|
|
[113] = "Northrend",
|
|
[114] = "Borean Tundra",
|
|
[115] = "Dragonblight",
|
|
[116] = "Grizzly Hills",
|
|
[117] = "Howling Fjord",
|
|
[118] = "Icecrown",
|
|
[119] = "Sholazar Basin",
|
|
[120] = "The Storm Peaks",
|
|
[121] = "Zul'Drak",
|
|
[123] = "Wintergrasp",
|
|
[124] = "Plaguelands: The Scarlet Enclave",
|
|
[125] = "Dalaran",
|
|
[126] = "Dalaran",
|
|
[127] = "Crystalsong Forest",
|
|
[128] = "Strand of the Ancients",
|
|
[129] = "The Nexus",
|
|
[130] = "The Culling of Stratholme",
|
|
[131] = "The Culling of Stratholme",
|
|
[132] = "Ahn'kahet: The Old Kingdom",
|
|
[133] = "Utgarde Keep",
|
|
[134] = "Utgarde Keep",
|
|
[135] = "Utgarde Keep",
|
|
[136] = "Utgarde Pinnacle",
|
|
[137] = "Utgarde Pinnacle",
|
|
[138] = "Halls of Lightning",
|
|
[139] = "Halls of Lightning",
|
|
[140] = "Halls of Stone",
|
|
[141] = "The Eye of Eternity",
|
|
[142] = "The Oculus",
|
|
[143] = "The Oculus",
|
|
[144] = "The Oculus",
|
|
[145] = "The Oculus",
|
|
[146] = "The Oculus",
|
|
[147] = "Ulduar",
|
|
[148] = "Ulduar",
|
|
[149] = "Ulduar",
|
|
[150] = "Ulduar",
|
|
[151] = "Ulduar",
|
|
[152] = "Ulduar",
|
|
[153] = "Gundrak",
|
|
[154] = "Gundrak",
|
|
[155] = "The Obsidian Sanctum",
|
|
[156] = "Vault of Archavon",
|
|
[157] = "Azjol-Nerub",
|
|
[158] = "Azjol-Nerub",
|
|
[159] = "Azjol-Nerub",
|
|
[160] = "Drak'Tharon Keep",
|
|
[161] = "Drak'Tharon Keep",
|
|
[162] = "Naxxramas",
|
|
[163] = "Naxxramas",
|
|
[164] = "Naxxramas",
|
|
[165] = "Naxxramas",
|
|
[166] = "Naxxramas",
|
|
[167] = "Naxxramas",
|
|
[168] = "The Violet Hold",
|
|
[169] = "Isle of Conquest",
|
|
[170] = "Hrothgar's Landing",
|
|
[171] = "Trial of the Champion",
|
|
[172] = "Trial of the Crusader",
|
|
[173] = "Trial of the Crusader",
|
|
[183] = "The Forge of Souls",
|
|
[184] = "Pit of Saron",
|
|
[185] = "Halls of Reflection",
|
|
[186] = "Icecrown Citadel",
|
|
[187] = "Icecrown Citadel",
|
|
[188] = "Icecrown Citadel",
|
|
[189] = "Icecrown Citadel",
|
|
[190] = "Icecrown Citadel",
|
|
[191] = "Icecrown Citadel",
|
|
[192] = "Icecrown Citadel",
|
|
[193] = "Icecrown Citadel",
|
|
[200] = "The Ruby Sanctum",
|
|
[213] = "Ragefire Chasm",
|
|
[219] = "Zul'Farrak",
|
|
[220] = "The Temple of Atal'Hakkar",
|
|
[221] = "Blackfathom Deeps",
|
|
[222] = "Blackfathom Deeps",
|
|
[223] = "Blackfathom Deeps",
|
|
[225] = "The Stockade",
|
|
[226] = "Gnomeregan",
|
|
[227] = "Gnomeregan",
|
|
[228] = "Gnomeregan",
|
|
[229] = "Gnomeregan",
|
|
[230] = "Uldaman",
|
|
[231] = "Uldaman",
|
|
[232] = "Molten Core",
|
|
[233] = "Zul'Gurub",
|
|
[234] = "Dire Maul",
|
|
[235] = "Dire Maul",
|
|
[236] = "Dire Maul",
|
|
[237] = "Dire Maul",
|
|
[238] = "Dire Maul",
|
|
[239] = "Dire Maul",
|
|
[240] = "Dire Maul",
|
|
[242] = "Blackrock Depths",
|
|
[243] = "Blackrock Depths",
|
|
[246] = "The Shattered Halls",
|
|
[247] = "Ruins of Ahn'Qiraj",
|
|
[248] = "Onyxia's Lair",
|
|
[250] = "Blackrock Spire",
|
|
[251] = "Blackrock Spire",
|
|
[252] = "Blackrock Spire",
|
|
[253] = "Blackrock Spire",
|
|
[254] = "Blackrock Spire",
|
|
[255] = "Blackrock Spire",
|
|
[256] = "Auchenai Crypts",
|
|
[257] = "Auchenai Crypts",
|
|
[258] = "Sethekk Halls",
|
|
[259] = "Sethekk Halls",
|
|
[260] = "Shadow Labyrinth",
|
|
[261] = "The Blood Furnace",
|
|
[262] = "The Underbog",
|
|
[263] = "The Steamvault",
|
|
[264] = "The Steamvault",
|
|
[265] = "The Slave Pens",
|
|
[266] = "The Botanica",
|
|
[267] = "The Mechanar",
|
|
[268] = "The Mechanar",
|
|
[269] = "The Arcatraz",
|
|
[270] = "The Arcatraz",
|
|
[271] = "The Arcatraz",
|
|
[272] = "Mana-Tombs",
|
|
[273] = "The Black Morass",
|
|
[274] = "Old Hillsbrad Foothills",
|
|
[279] = "Wailing Caverns",
|
|
[280] = "Maraudon",
|
|
[281] = "Maraudon",
|
|
[287] = "Blackwing Lair",
|
|
[288] = "Blackwing Lair",
|
|
[289] = "Blackwing Lair",
|
|
[290] = "Blackwing Lair",
|
|
[291] = "The Deadmines",
|
|
[292] = "The Deadmines",
|
|
[300] = "Razorfen Downs",
|
|
[301] = "Razorfen Kraul",
|
|
[302] = "Scarlet Monastery",
|
|
[303] = "Scarlet Monastery",
|
|
[304] = "Scarlet Monastery",
|
|
[305] = "Scarlet Monastery",
|
|
[306] = "ScholomanceOLD",
|
|
[307] = "ScholomanceOLD",
|
|
[308] = "ScholomanceOLD",
|
|
[309] = "ScholomanceOLD",
|
|
[310] = "Shadowfang Keep",
|
|
[311] = "Shadowfang Keep",
|
|
[312] = "Shadowfang Keep",
|
|
[313] = "Shadowfang Keep",
|
|
[314] = "Shadowfang Keep",
|
|
[315] = "Shadowfang Keep",
|
|
[316] = "Shadowfang Keep",
|
|
[317] = "Stratholme",
|
|
[318] = "Stratholme",
|
|
[319] = "Ahn'Qiraj",
|
|
[320] = "Ahn'Qiraj",
|
|
[321] = "Ahn'Qiraj",
|
|
[329] = "Hyjal Summit",
|
|
[330] = "Gruul's Lair",
|
|
[331] = "Magtheridon's Lair",
|
|
[332] = "Serpentshrine Cavern",
|
|
[333] = "Zul'Aman",
|
|
[334] = "Tempest Keep",
|
|
[335] = "Sunwell Plateau",
|
|
[336] = "Sunwell Plateau",
|
|
[337] = "Zul'Gurub",
|
|
[339] = "Black Temple",
|
|
[347] = "Hellfire Ramparts",
|
|
[350] = "Karazhan",
|
|
[351] = "Karazhan",
|
|
[352] = "Karazhan",
|
|
[353] = "Karazhan",
|
|
[354] = "Karazhan",
|
|
[355] = "Karazhan",
|
|
[356] = "Karazhan",
|
|
[357] = "Karazhan",
|
|
[358] = "Karazhan",
|
|
[359] = "Karazhan",
|
|
[360] = "Karazhan",
|
|
[361] = "Karazhan",
|
|
[362] = "Karazhan",
|
|
[363] = "Karazhan",
|
|
[364] = "Karazhan",
|
|
[365] = "Karazhan",
|
|
[366] = "Karazhan",
|
|
[946] = "Cosmic",
|
|
[947] = "Azeroth",
|
|
[987] = "Outland",
|
|
[988] = "Northrend",
|
|
[1375] = "Halls of Stone",
|
|
[1411] = "Durotar",
|
|
[1412] = "Mulgore",
|
|
[1413] = "The Barrens",
|
|
[1414] = "Kalimdor",
|
|
[1415] = "Eastern Kingdoms",
|
|
[1416] = "Alterac Mountains",
|
|
[1417] = "Arathi Highlands",
|
|
[1418] = "Badlands",
|
|
[1419] = "Blasted Lands",
|
|
[1420] = "Tirisfal Glades",
|
|
[1421] = "Silverpine Forest",
|
|
[1422] = "Western Plaguelands",
|
|
[1423] = "Eastern Plaguelands",
|
|
[1424] = "Hillsbrad Foothills",
|
|
[1425] = "The Hinterlands",
|
|
[1426] = "Dun Morogh",
|
|
[1427] = "Searing Gorge",
|
|
[1428] = "Burning Steppes",
|
|
[1429] = "Elwynn Forest",
|
|
[1430] = "Deadwind Pass",
|
|
[1431] = "Duskwood",
|
|
[1432] = "Loch Modan",
|
|
[1433] = "Redridge Mountains",
|
|
[1434] = "Stranglethorn Vale",
|
|
[1435] = "Swamp of Sorrows",
|
|
[1436] = "Westfall",
|
|
[1437] = "Wetlands",
|
|
[1438] = "Teldrassil",
|
|
[1439] = "Darkshore",
|
|
[1440] = "Ashenvale",
|
|
[1441] = "Thousand Needles",
|
|
[1442] = "Stonetalon Mountains",
|
|
[1443] = "Desolace",
|
|
[1444] = "Feralas",
|
|
[1445] = "Dustwallow Marsh",
|
|
[1446] = "Tanaris",
|
|
[1447] = "Azshara",
|
|
[1448] = "Felwood",
|
|
[1449] = "Un'Goro Crater",
|
|
[1450] = "Moonglade",
|
|
[1451] = "Silithus",
|
|
[1452] = "Winterspring",
|
|
[1453] = "Stormwind City",
|
|
[1454] = "Orgrimmar",
|
|
[1455] = "Ironforge",
|
|
[1456] = "Thunder Bluff",
|
|
[1457] = "Darnassus",
|
|
[1458] = "Undercity",
|
|
[1459] = "Alterac Valley",
|
|
[1460] = "Warsong Gulch",
|
|
[1461] = "Arathi Basin",
|
|
[1463] = "Eastern Kingdoms",
|
|
[1464] = "Kalimdor",
|
|
[1554] = "Serpentshrine Cavern",
|
|
[1555] = "Tempest Keep",
|
|
[1941] = "Eversong Woods",
|
|
[1942] = "Ghostlands",
|
|
[1943] = "Azuremyst Isle",
|
|
[1944] = "Hellfire Peninsula",
|
|
[1945] = "Outland",
|
|
[1946] = "Zangarmarsh",
|
|
[1947] = "The Exodar",
|
|
[1948] = "Shadowmoon Valley",
|
|
[1949] = "Blade's Edge Mountains",
|
|
[1950] = "Bloodmyst Isle",
|
|
[1951] = "Nagrand",
|
|
[1952] = "Terokkar Forest",
|
|
[1953] = "Netherstorm",
|
|
[1954] = "Silvermoon City",
|
|
[1955] = "Shattrath City",
|
|
[1956] = "Eye of the Storm",
|
|
[1957] = "Isle of Quel'Danas",
|
|
[2104] = "Wintergrasp",
|
|
}
|
|
|
|
-- InstanceIDs as used by GetRealZoneText
|
|
local InstanceIdLookupTable = {
|
|
[1] = "Kalimdor",
|
|
[13] = "Test Dungeon",
|
|
[25] = "Scott Test",
|
|
[29] = "CashTest",
|
|
[30] = "Alterac Valley",
|
|
[33] = "Shadowfang Keep",
|
|
[34] = "Stormwind Stockade",
|
|
[35] = "<unused>StormwindPrison",
|
|
[36] = "Deadmines",
|
|
[37] = "Azshara Crater",
|
|
[42] = "Collin's Test",
|
|
[43] = "Wailing Caverns",
|
|
[44] = "<unused> Monastery",
|
|
[47] = "Razorfen Kraul",
|
|
[48] = "Blackfathom Deeps",
|
|
[70] = "Uldaman",
|
|
[90] = "Gnomeregan",
|
|
[109] = "Sunken Temple",
|
|
[129] = "Razorfen Downs",
|
|
[169] = "Emerald Dream",
|
|
[189] = "Scarlet Monastery",
|
|
[209] = "Zul'Farrak",
|
|
[229] = "Blackrock Spire",
|
|
[230] = "Blackrock Depths",
|
|
[249] = "Onyxia's Lair",
|
|
[269] = "Opening of the Dark Portal",
|
|
[289] = "Scholomance",
|
|
[309] = "Zul'Gurub",
|
|
[329] = "Stratholme",
|
|
[349] = "Maraudon",
|
|
[369] = "Deeprun Tram",
|
|
[389] = "Ragefire Chasm",
|
|
[409] = "Molten Core",
|
|
[429] = "Dire Maul",
|
|
[449] = "Alliance PVP Barracks",
|
|
[450] = "Horde PVP Barracks",
|
|
[451] = "Development Land",
|
|
[469] = "Blackwing Lair",
|
|
[489] = "Warsong Gulch",
|
|
[509] = "Ruins of Ahn'Qiraj",
|
|
[529] = "Arathi Basin",
|
|
[530] = "Outland",
|
|
[531] = "Ahn'Qiraj Temple",
|
|
[532] = "Karazhan",
|
|
[533] = "Naxxramas",
|
|
[534] = "The Battle for Mount Hyjal",
|
|
[540] = "Hellfire Citadel: The Shattered Halls",
|
|
[542] = "Hellfire Citadel: The Blood Furnace",
|
|
[543] = "Hellfire Citadel: Ramparts",
|
|
[544] = "Magtheridon's Lair",
|
|
[545] = "Coilfang: The Steamvault",
|
|
[546] = "Coilfang: The Underbog",
|
|
[547] = "Coilfang: The Slave Pens",
|
|
[548] = "Coilfang: Serpentshrine Cavern",
|
|
[550] = "Tempest Keep",
|
|
[552] = "Tempest Keep: The Arcatraz",
|
|
[553] = "Tempest Keep: The Botanica",
|
|
[554] = "Tempest Keep: The Mechanar",
|
|
[555] = "Auchindoun: Shadow Labyrinth",
|
|
[556] = "Auchindoun: Sethekk Halls",
|
|
[557] = "Auchindoun: Mana-Tombs",
|
|
[558] = "Auchindoun: Auchenai Crypts",
|
|
[559] = "Nagrand Arena",
|
|
[560] = "The Escape From Durnholde",
|
|
[562] = "Blade's Edge Arena",
|
|
[564] = "Black Temple",
|
|
[565] = "Gruul's Lair",
|
|
[566] = "Eye of the Storm",
|
|
[568] = "Zul'Aman",
|
|
[571] = "Northrend",
|
|
[572] = "Ruins of Lordaeron",
|
|
[574] = "Utgarde Keep",
|
|
[575] = "Utgarde Pinnacle",
|
|
[576] = "The Nexus",
|
|
[578] = "The Oculus",
|
|
[580] = "The Sunwell",
|
|
[582] = "Transport: Rut'theran to Auberdine",
|
|
[584] = "Transport: Menethil to Theramore",
|
|
[585] = "Magister's Terrace",
|
|
[586] = "Transport: Exodar to Auberdine",
|
|
[587] = "Transport: Feathermoon Ferry",
|
|
[588] = "Transport: Menethil to Auberdine",
|
|
[589] = "Transport: Orgrimmar to Grom'Gol",
|
|
[590] = "Transport: Grom'Gol to Undercity",
|
|
[591] = "Transport: Undercity to Orgrimmar",
|
|
[592] = "Transport: Borean Tundra Test",
|
|
[593] = "Transport: Booty Bay to Ratchet",
|
|
[594] = "Transport: Howling Fjord Sister Mercy (Quest)",
|
|
[595] = "The Culling of Stratholme",
|
|
[596] = "Transport: Naglfar",
|
|
[598] = "Sunwell Fix (Unused)",
|
|
[599] = "Halls of Stone",
|
|
[600] = "Drak'Tharon Keep",
|
|
[601] = "Azjol-Nerub",
|
|
[602] = "Halls of Lightning",
|
|
[603] = "Ulduar",
|
|
[604] = "Gundrak",
|
|
[605] = "Development Land (non-weighted textures)",
|
|
[607] = "Strand of the Ancients",
|
|
[608] = "Violet Hold",
|
|
[609] = "Ebon Hold",
|
|
[610] = "Transport: Tirisfal to Vengeance Landing",
|
|
[612] = "Transport: Menethil to Valgarde",
|
|
[613] = "Transport: Orgrimmar to Warsong Hold",
|
|
[614] = "Transport: Stormwind to Valiance Keep",
|
|
[615] = "The Obsidian Sanctum",
|
|
[616] = "The Eye of Eternity",
|
|
[617] = "Dalaran Sewers",
|
|
[618] = "The Ring of Valor",
|
|
[619] = "Ahn'kahet: The Old Kingdom",
|
|
[620] = "Transport: Moa'ki to Unu'pe",
|
|
[621] = "Transport: Moa'ki to Kamagua",
|
|
[622] = "Transport: Orgrim's Hammer",
|
|
[623] = "Transport: The Skybreaker",
|
|
[624] = "Vault of Archavon",
|
|
[628] = "Isle of Conquest",
|
|
[631] = "Icecrown Citadel",
|
|
[632] = "The Forge of Souls",
|
|
[641] = "Transport: Alliance Airship BG",
|
|
[642] = "Transport: HordeAirshipBG",
|
|
[647] = "Transport: Orgrimmar to Thunder Bluff",
|
|
[649] = "Trial of the Crusader",
|
|
[650] = "Trial of the Champion",
|
|
[658] = "Pit of Saron",
|
|
[668] = "Halls of Reflection",
|
|
[672] = "Transport: The Skybreaker (Icecrown Citadel Raid)",
|
|
[673] = "Transport: Orgrim's Hammer (Icecrown Citadel Raid)",
|
|
[712] = "Transport: The Skybreaker (IC Dungeon)",
|
|
[713] = "Transport: Orgrim's Hammer (IC Dungeon)",
|
|
[718] = "Trasnport: The Mighty Wind (Icecrown Citadel Raid)",
|
|
[723] = "Stormwind",
|
|
[724] = "The Ruby Sanctum",
|
|
[2118] = "Wintergrasp",
|
|
[2565] = "Northrend (3.0 phase)",
|
|
[2567] = "Northrend (3.1 phase)",
|
|
}
|
|
|
|
|
|
|
|
-- These zones are known in LibTourist's zones collection but are not returned by C_Map.GetMapInfo.
|
|
-- The IDs are the areaIDs as used by C_Map.GetAreaInfo.
|
|
local zoneTranslation = {
|
|
enUS = {
|
|
-- Instances
|
|
[5914] = "Dire Maul - East",
|
|
[5913] = "Dire Maul - North",
|
|
[5915] = "Dire Maul - West",
|
|
[2366] = "The Black Morass",
|
|
[2367] = "Old Hillsbrad Foothills",
|
|
[3606] = "Hyjal Summit",
|
|
[4075] = "Sunwell Plateau",
|
|
-- [4131] = "Magister's Terrace",
|
|
|
|
-- Complexes
|
|
[1445] = "Blackrock Mountain",
|
|
[3545] = "Hellfire Citadel",
|
|
[3688] = "Auchindoun",
|
|
[3905] = "Coilfang Reservoir",
|
|
[5695] = "Ahn'Qiraj: The Fallen Kingdom",
|
|
[2300] = "Caverns of Time",
|
|
[4024] = "Coldarra",
|
|
},
|
|
deDE = {
|
|
-- Instances
|
|
[5914] = "Düsterbruch - Ost",
|
|
[5913] = "Düsterbruch - Nord",
|
|
[5915] = "Düsterbruch - West",
|
|
[2366] = "Der schwarze Morast",
|
|
[2367] = "Vorgebirge des Alten Hügellands",
|
|
[3606] = "Hyjalgipfel",
|
|
[4075] = "Sonnenbrunnenplateau",
|
|
-- [4131] = "Terrasse der Magister",
|
|
-- Complexes
|
|
[1445] = "Der Schwarzfels",
|
|
[3545] = "Höllenfeuerzitadelle",
|
|
[3688] = "Auchindoun",
|
|
[3905] = "Der Echsenkessel",
|
|
[5695] = "Ahn'Qiraj: Das Gefallene Königreich",
|
|
[2300] = "Höhlen der Zeit",
|
|
[4024] = "Kaltarra",
|
|
|
|
},
|
|
esES = {
|
|
-- Instances
|
|
[5914] = "La Masacre: Este",
|
|
[5913] = "La Masacre: Norte",
|
|
[5915] = "La Masacre: Oeste",
|
|
[2366] = "La Ciénaga Negra",
|
|
[2367] = "Antiguas Laderas de Trabalomas",
|
|
[3606] = "La Cima Hyjal",
|
|
[4075] = "Meseta de La Fuente del Sol",
|
|
-- [4131] = "Bancal del Magister",
|
|
-- Complexes
|
|
[1445] = "Montaña Roca Negra",
|
|
[3545] = "Ciudadela del Fuego Infernal",
|
|
[3688] = "Auchindoun",
|
|
[3905] = "Reserva Colmillo Torcido",
|
|
[5695] = "Ahn'Qiraj: El Reino Caído",
|
|
[2300] = "Cavernas del Tiempo",
|
|
[4024] = "Gelidar",
|
|
},
|
|
esMX = {
|
|
-- Instances
|
|
[5914] = "La Masacre: Este",
|
|
[5913] = "La Masacre: Norte",
|
|
[5915] = "La Masacre: Oeste",
|
|
[2366] = "La Ciénaga Negra",
|
|
[2367] = "Antiguas Laderas de Trabalomas",
|
|
[3606] = "La Cima Hyjal",
|
|
[4075] = "Meseta de La Fuente del Sol",
|
|
-- [4131] = "Bancal del Magister",
|
|
-- Complexes
|
|
[1445] = "Montaña Roca Negra",
|
|
[3545] = "Ciudadela del Fuego Infernal",
|
|
[3688] = "Auchindoun",
|
|
[3905] = "Reserva Colmillo Torcido",
|
|
[5695] = "Ahn'Qiraj: El Reino Caído",
|
|
[2300] = "Cavernas del Tiempo",
|
|
[4024] = "Gelidar",
|
|
},
|
|
frFR = {
|
|
-- Instances
|
|
[5914] = "Haches-Tripes - Est",
|
|
[5913] = "Haches-Tripes - Nord",
|
|
[5915] = "Haches-Tripes - Ouest",
|
|
[2366] = "Le Noir Marécage",
|
|
[2367] = "Contreforts de Hautebrande d'antan",
|
|
[3606] = "Sommet d'Hyjal",
|
|
[4075] = "Plateau du Puits de soleil",
|
|
-- [4131] = "Terrasse des Magistères",
|
|
-- Complexes
|
|
[1445] = "Mont Rochenoire",
|
|
[3545] = "Citadelle des Flammes infernales",
|
|
[3688] = "Auchindoun",
|
|
[3905] = "Réservoir de Glissecroc",
|
|
[5695] = "Ahn’Qiraj : le royaume Déchu",
|
|
[2300] = "Grottes du temps",
|
|
[4024] = "Frimarra",
|
|
},
|
|
itIT = {
|
|
-- Instances
|
|
[5914] = "Maglio Infausto - Est",
|
|
[5913] = "Maglio Infausto - Nord",
|
|
[5915] = "Maglio Infausto - Ovest",
|
|
[2366] = "La palude nera",
|
|
[2367] = "Antiche colline pedemontane di Hillsbrad",
|
|
[3606] = "Vertice Hyjal",
|
|
[4075] = "Altopiano del sole",
|
|
-- [4131] = "Terrazza dei Magistri",
|
|
-- Complexes
|
|
[1445] = "Massiccio Roccianera",
|
|
[3545] = "Cittadella del Fuoco Infernale",
|
|
[3688] = "Auchindoun",
|
|
[3905] = "Bacino degli Spiraguzza",
|
|
[5695] = "Ahn'qiraj: il Regno Perduto",
|
|
[2300] = "Caverne del tempo",
|
|
[4024] = "Ibernia",
|
|
},
|
|
koKR = {
|
|
-- Instances
|
|
[5914] = "혈투의 전장 - 동쪽",
|
|
[5913] = "혈투의 전장 - 북쪽",
|
|
[5915] = "혈투의 전장 - 서쪽",
|
|
[2366] = "검은늪",
|
|
[2367] = "옛 힐스브래드 구릉지",
|
|
[3606] = "하이잘 정상",
|
|
[4075] = "태양샘 고원",
|
|
-- [4131] = "마법학자의 정원",
|
|
-- Complexes
|
|
[1445] = "검은바위 산",
|
|
[3545] = "지옥불 성채",
|
|
[3688] = "아킨둔",
|
|
[3905] = "갈퀴송곳니 저수지",
|
|
[5695] = "안퀴라즈: 무너진 왕국",
|
|
[2300] = "시간의 동굴",
|
|
[4024] = "콜다라",
|
|
},
|
|
ptBR = {
|
|
-- Instances
|
|
[5914] = "Gládio Cruel – Leste",
|
|
[5913] = "Gládio Cruel – Norte",
|
|
[5915] = "Gládio Cruel – Oeste",
|
|
[2366] = "Lamaçal Negro",
|
|
[2367] = "Antigo Contraforte de Eira dos Montes",
|
|
[3606] = "Pico Hyjal",
|
|
[4075] = "Platô da Nascente do Sol",
|
|
-- [4131] = "Terraço dos Magísteres",
|
|
-- Complexes
|
|
[1445] = "Montanha Rocha Negra",
|
|
[3545] = "Cidadela Fogo do Inferno",
|
|
[3688] = "Auchindoun",
|
|
[3905] = "Reservatório Presacurva",
|
|
[5695] = "Ahn'Qiraj: O Reino Derrotado",
|
|
[2300] = "Cavernas do Tempo",
|
|
[4024] = "Gelarra",
|
|
},
|
|
zhCN = {
|
|
-- Instances
|
|
[5914] = "厄运之槌 - 东",
|
|
[5913] = "厄运之槌 - 北",
|
|
[5915] = "厄运之槌 - 西",
|
|
[2366] = "黑色沼泽",
|
|
[2367] = "旧希尔斯布莱德丘陵",
|
|
[3606] = "海加尔峰",
|
|
[4075] = "太阳之井高地",
|
|
-- [4131] = "魔导师平台",
|
|
-- Complexes
|
|
[1445] = "黑石山",
|
|
[3545] = "地狱火堡垒",
|
|
[3688] = "奥金顿",
|
|
[3905] = "盘牙水库",
|
|
[5695] = "安其拉:堕落王国",
|
|
[2300] = "时光之穴",
|
|
[4024] = "考达拉",
|
|
},
|
|
zhTW = {
|
|
-- Instances
|
|
[5914] = "厄運之槌 - 東方",
|
|
[5913] = "厄運之槌 - 北方",
|
|
[5915] = "厄運之槌 - 西方",
|
|
[2366] = "黑色沼澤",
|
|
[2367] = "希爾斯布萊德丘陵舊址",
|
|
[3606] = "海加爾山",
|
|
[4075] = "太陽之井高地",
|
|
-- [4131] = "博學者殿堂",
|
|
-- Complexes
|
|
[1445] = "黑石山",
|
|
[3545] = "地獄火堡壘",
|
|
[3688] = "奧齊頓",
|
|
[3905] = "盤牙蓄湖",
|
|
[5695] = "其拉:沒落的王朝",
|
|
[2300] = "時光之穴",
|
|
[4024] = "凜懼島",
|
|
},
|
|
}
|
|
|
|
local function CreateLocalizedZoneNameLookups()
|
|
local uiMapID
|
|
local mapInfo
|
|
local localizedZoneName
|
|
local englishZoneName
|
|
|
|
-- Note: the loop below is not very sexy but makes sure missing entries in MapIdLookupTable are reported.
|
|
-- It is executed only once, upon initialization.
|
|
for uiMapID = 1, 2000, 1 do
|
|
mapInfo = C_Map.GetMapInfo(uiMapID)
|
|
if mapInfo then
|
|
localizedZoneName = mapInfo.name
|
|
englishZoneName = MapIdLookupTable[uiMapID]
|
|
|
|
if englishZoneName then
|
|
-- Add combination of English and localized name to lookup tables
|
|
if not BZ[englishZoneName] then
|
|
BZ[englishZoneName] = localizedZoneName
|
|
end
|
|
if not BZR[localizedZoneName] then
|
|
BZR[localizedZoneName] = englishZoneName
|
|
end
|
|
else
|
|
-- Not in UIMap ID lookup
|
|
trace("|r|cffff4422! -- Tourist:|r English name not found in lookup for uiMapID "..tostring(uiMapID).." ("..tostring(localizedZoneName)..")" )
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Some but not all instances are returned by C_Map.GetMapInfo.
|
|
-- Try to get missing localized names using the Instance ID lookup and GetRealZoneText:
|
|
for instanceID = 1, 2000, 1 do
|
|
localizedZoneName = GetRealZoneText(instanceID);
|
|
if localizedZoneName and localizedZoneName ~= "" then
|
|
englishZoneName = InstanceIdLookupTable[instanceID]
|
|
|
|
if englishZoneName then
|
|
-- Add combination of English and localized name to lookup tables, if missing
|
|
if not BZ[englishZoneName] then
|
|
BZ[englishZoneName] = localizedZoneName
|
|
end
|
|
if not BZR[localizedZoneName] then
|
|
BZR[localizedZoneName] = englishZoneName
|
|
end
|
|
else
|
|
-- Not in instance ID lookup
|
|
trace("|r|cffff4422! -- Tourist:|r English name not found in lookup for instanceID "..tostring(instanceID).." ("..tostring(localizedZoneName)..")" )
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Load from zoneTranslation
|
|
local translations = zoneTranslation[GAME_LOCALE]
|
|
if not translations then
|
|
translations = zoneTranslation["enUS"]
|
|
end
|
|
for key, localizedZoneName in pairs(translations) do
|
|
local englishName = zoneTranslation["enUS"][key]
|
|
if not BZ[englishName] then
|
|
BZ[englishName] = localizedZoneName
|
|
end
|
|
if not BZR[localizedZoneName] then
|
|
BZR[localizedZoneName] = englishName
|
|
end
|
|
end
|
|
end
|
|
|
|
local function tablelength(T)
|
|
local count = 0
|
|
for _ in pairs(T) do count = count + 1 end
|
|
return count
|
|
end
|
|
|
|
local function GetFlightnodeFaction(faction)
|
|
if faction == 0 then
|
|
return "Neutral"
|
|
end
|
|
if faction == 1 then
|
|
return "Horde"
|
|
end
|
|
if faction == 2 then
|
|
return "Alliance"
|
|
else
|
|
return tostring(faction)
|
|
end
|
|
end
|
|
|
|
local function GetFlightnodeFactionLetter(faction)
|
|
if faction == 0 then
|
|
return "N"
|
|
end
|
|
if faction == 1 then
|
|
return "H"
|
|
end
|
|
if faction == 2 then
|
|
return "A"
|
|
else
|
|
return tostring(faction)
|
|
end
|
|
end
|
|
|
|
--[[
|
|
GatherFlightnodeData is called just in time, right before first use, because when LibTourist is being loaded at player logon,
|
|
not all flightpoints are available yet through the C_TaxiMap interface.
|
|
|
|
The FlightnodeLookupTable, which is built during initialization using the hardcoded relationships between zones and nodes,
|
|
contains the flightnode IDs but no values yet. GatherFlightnodeData fills the lookup as much as possible with MapTaxiNodeInfo
|
|
structures retrieved from the C_TaxiMap interface.
|
|
|
|
structure TaxiMap.MapTaxiNodeInfo
|
|
number nodeID -- unique node ID
|
|
table position -- position of the node on the Flight Master's map
|
|
string name -- node name as displayed in game, includes zone name (mostly)
|
|
string atlasName -- atlas object type, includes faction
|
|
Enum.FlightPathFaction faction -- 0 = Neutral, 1 = Horde, 2 = Alliance
|
|
(optional) string textureKitPrefix -- no clue what this is for
|
|
string factionName -- added by LibTourist
|
|
]]--
|
|
|
|
local function GatherFlightnodeData()
|
|
local zMapID, zName, nodes, numNodes
|
|
local count = 0
|
|
local errCount = 0
|
|
if gatheringFlightnodes == true then return end
|
|
gatheringFlightnodes = true
|
|
|
|
local missingNodes = {}
|
|
|
|
|
|
-- Add node objects from the C_TaxiMap interface to the lookup
|
|
for zMapID, zName in pairs(MapIdLookupTable) do
|
|
-- Use MapIdLookupTable instead of iterating through continents and zones to be sure all known zones are checked for flight nodes
|
|
nodes = C_TaxiMap.GetTaxiNodesForMap(zMapID)
|
|
|
|
if nodes ~= nil then
|
|
numNodes = tablelength(nodes)
|
|
if numNodes > 0 then
|
|
for i, node in ipairs(nodes) do
|
|
if not FlightnodeLookupTable[node.nodeID] then
|
|
if not missingNodes[node.nodeID] and not flightNodeIgnoreList[node.nodeID] then
|
|
--trace("|r|cffff4422! -- Tourist: Missing flightnode in lookup: "..tostring(node.nodeID).." = "..tostring(node.name))
|
|
trace( "|r|cffff4422 ["..tostring(node.nodeID).."] = true, -- "..tostring(node.name).." ("..tostring(GetFlightnodeFactionLetter(node.faction))..")")
|
|
|
|
errCount = errCount + 1
|
|
missingNodes[node.nodeID] = node.name
|
|
end
|
|
else
|
|
if FlightnodeLookupTable[node.nodeID] == true then
|
|
count = count + 1
|
|
-- Add faction name
|
|
node["factionName"] = GetFlightnodeFaction(node.faction)
|
|
-- Store node object in lookup
|
|
FlightnodeLookupTable[node.nodeID] = node
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Add hardcoded node-to-zone relations to FlightnodeLookupTable
|
|
local nodesToUpdate = {}
|
|
for zone in Tourist:IterateZones() do
|
|
for node in Tourist:IterateZoneFlightnodes(zone) do
|
|
if FlightnodeLookupTable[node.nodeID] then
|
|
if not nodesToUpdate[node.nodeID] then
|
|
nodesToUpdate[node.nodeID] = {}
|
|
end
|
|
nodesToUpdate[node.nodeID][zone] = true
|
|
else
|
|
--trace("|r|cffff4422! -- Tourist: Missing flightnode in lookup: "..tostring(node.nodeID).." = "..tostring(node.name))
|
|
trace( "|r|cffff4422 ["..tostring(node.nodeID).."] = true, -- "..tostring(node.name).." ("..tostring(GetFlightnodeFactionLetter(node.faction))..")")
|
|
errCount = errCount + 1
|
|
end
|
|
end
|
|
end
|
|
for k, v in pairs(nodesToUpdate) do
|
|
FlightnodeLookupTable[k]["zones"] = v
|
|
end
|
|
|
|
trace("Tourist: Found "..tostring(count).." of "..tostring(tablelength(FlightnodeLookupTable)).." known flight nodes; "..tostring(errCount).." unknown nodes.")
|
|
|
|
flightnodeDataGathered = true
|
|
gatheringFlightnodes = false
|
|
end
|
|
|
|
-- Refreshes the values of the FlightnodeLookupTable
|
|
function Tourist:RefreshFlightNodeData()
|
|
-- Reset lookup
|
|
for k, v in pairs(FlightnodeLookupTable) do
|
|
FlightnodeLookupTable[k] = true
|
|
end
|
|
-- Re-gather data
|
|
GatherFlightnodeData()
|
|
end
|
|
|
|
-- Returns the lookup table with all flightnodes. Key = node ID.
|
|
-- Value is a node struct(see C_Taximap.MapTaxiNodeInfo) if the node could be found by GatherFlightnodeData.
|
|
-- If the node was not returned by C_Taximap, value is true.
|
|
function Tourist:GetFlightnodeLookupTable()
|
|
if flightnodeDataGathered == false then
|
|
GatherFlightnodeData()
|
|
end
|
|
return FlightnodeLookupTable
|
|
end
|
|
|
|
-- Returns a C_Taximap.MapTaxiNodeInfo (with some extra attributes) for the specified nodeID, if available
|
|
function Tourist:GetFlightnode(nodeID)
|
|
local node = Tourist:GetFlightnodeLookupTable()[nodeID]
|
|
if node == true then
|
|
return nil
|
|
else
|
|
return node
|
|
end
|
|
end
|
|
|
|
-- This function replaces the abandoned LibBabble-Zone library and returns a lookup table
|
|
-- containing all zone names (including continents, instances etcetera) where the English
|
|
-- zone name is the key and the localized zone name is the value.
|
|
function Tourist:GetLookupTable()
|
|
return BZ
|
|
end
|
|
|
|
-- This function replaces the abandoned LibBabble-Zone library and returns a lookup table
|
|
-- containing all zone names (including continents, instances etcetera) where the localized
|
|
-- zone name is the key and the English zone name is the value.
|
|
function Tourist:GetReverseLookupTable()
|
|
return BZR
|
|
end
|
|
|
|
-- Returns the lookup table with all uiMapIDs as key and the English zone name as value.
|
|
function Tourist:GetMapIDLookupTable()
|
|
return MapIdLookupTable
|
|
end
|
|
|
|
-- Returns the lookup table with all instanceIDs as key and the English instance name as value.
|
|
function Tourist:GetInstanceIDLookupTable()
|
|
return InstanceIdLookupTable
|
|
end
|
|
|
|
|
|
-- HELPER AND LOOKUP FUNCTIONS -------------------------------------------------------------
|
|
|
|
local function PLAYER_LEVEL_UP(self, level)
|
|
playerLevel = UnitLevel("player")
|
|
|
|
for k in pairs(recZones) do
|
|
recZones[k] = nil
|
|
end
|
|
for k in pairs(recInstances) do
|
|
recInstances[k] = nil
|
|
end
|
|
for k in pairs(cost) do
|
|
cost[k] = nil
|
|
end
|
|
|
|
for zone in pairs(lows) do
|
|
if not self:IsHostile(zone) then
|
|
local low, high = self:GetLevel(zone)
|
|
|
|
local zoneType = self:GetType(zone)
|
|
if zoneType == "Zone" or zoneType == "PvP Zone" and low and high then
|
|
if low <= playerLevel and playerLevel <= high then
|
|
recZones[zone] = true
|
|
end
|
|
elseif zoneType == "Battleground" and low and high then
|
|
local playerLevel = playerLevel
|
|
if low <= playerLevel and playerLevel <= high then
|
|
recInstances[zone] = true
|
|
end
|
|
elseif zoneType == "Instance" and low and high then
|
|
if low <= playerLevel and playerLevel <= high then
|
|
recInstances[zone] = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- Public alternative for legacy function GetMapContinents. Returns uiMapID as key, continent name as value.
|
|
function Tourist:GetMapContinentsAlt()
|
|
local continents = C_Map.GetMapChildrenInfo(COSMIC_MAP_ID, Enum.UIMapType.Continent, true)
|
|
local retValue = {}
|
|
for i, continentInfo in ipairs(continents) do
|
|
retValue[continentInfo.mapID] = continentInfo.name
|
|
end
|
|
return retValue
|
|
end
|
|
|
|
-- Public Alternative for legacy function GetMapZones. Returns uiMapID as key, zone name as value.
|
|
function Tourist:GetMapZonesAlt(continentID)
|
|
if mapZonesByContinentID[continentID] then
|
|
-- Get from cache
|
|
return mapZonesByContinentID[continentID]
|
|
else
|
|
local mapZones = {}
|
|
local recursive = (continentID ~= 947) -- 947 = Azeroth, get zones that have Azeroth as parent only
|
|
local mapChildrenInfo = { C_Map.GetMapChildrenInfo(continentID, Enum.UIMapType.Zone, recursive) }
|
|
for key, zones in pairs(mapChildrenInfo) do -- don't know what this extra table is for
|
|
for zoneIndex, zone in pairs(zones) do
|
|
-- Get the localized zone name
|
|
mapZones[zone.mapID] = zone.name
|
|
end
|
|
end
|
|
|
|
-- Add to cache
|
|
mapZonesByContinentID[continentID] = mapZones
|
|
|
|
return mapZones
|
|
end
|
|
end
|
|
|
|
-- Public alternative for legacy function GetMapNameByID
|
|
-- Takes a uiMapID or instanceID and returns the localized name
|
|
function Tourist:GetMapNameByIDAlt(uiMapID)
|
|
if tonumber(uiMapID) == nil then
|
|
return nil
|
|
end
|
|
|
|
local mapInfo = C_Map.GetMapInfo(uiMapID)
|
|
if mapInfo then
|
|
local zoneName = C_Map.GetMapInfo(uiMapID).name
|
|
return zoneName
|
|
else
|
|
local instanceName = GetRealZoneText(uiMapID)
|
|
if instanceName then
|
|
return instanceName
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Returns the uiMapID of the Continent for the given uiMapID
|
|
function Tourist:GetContinentMapID(uiMapID)
|
|
-- First, check the cache, built during initialisation based on the zones returned by GetMapZonesAlt
|
|
local continentMapID = zoneMapIDtoContinentMapID[uiMapID]
|
|
if continentMapID then
|
|
-- Done
|
|
return continentMapID
|
|
end
|
|
|
|
-- Not in cache, look for the continent, searching up through the map hierarchy.
|
|
-- Add the results to the cache to speed up future queries.
|
|
local mapInfo = C_Map.GetMapInfo(uiMapID)
|
|
if not mapInfo or mapInfo.mapType == 0 or mapInfo.mapType == 1 then
|
|
-- No data or Cosmic map or World map
|
|
zoneMapIDtoContinentMapID[uiMapID] = nil
|
|
return nil
|
|
end
|
|
|
|
if mapInfo.mapType == 2 then
|
|
-- Map is a Continent map
|
|
zoneMapIDtoContinentMapID[uiMapID] = mapInfo.mapID
|
|
return mapInfo.mapID
|
|
end
|
|
|
|
local parentMapInfo = C_Map.GetMapInfo(mapInfo.parentMapID)
|
|
if not parentMapInfo then
|
|
-- No parent -> no continent ID
|
|
zoneMapIDtoContinentMapID[uiMapID] = nil
|
|
return nil
|
|
else
|
|
if parentMapInfo.mapType == 2 then
|
|
-- Found the continent
|
|
zoneMapIDtoContinentMapID[uiMapID] = parentMapInfo.mapID
|
|
return parentMapInfo.mapID
|
|
else
|
|
-- Parent is not the Continent -> Search up one level
|
|
return Tourist:GetContinentMapID(parentMapInfo.mapID)
|
|
end
|
|
end
|
|
end
|
|
|
|
local function FormatLevelString(lo, hi)
|
|
if lo and hi then
|
|
if lo == hi then
|
|
return tostring(lo)
|
|
else
|
|
return tostring(lo).."-"..tostring(hi)
|
|
end
|
|
else
|
|
return tostring(lo or hi or "")
|
|
end
|
|
end
|
|
|
|
-- Formats the minimum and maximum player level for the given zone as "[min]-[max]".
|
|
-- Returns one number if min and max are equal.
|
|
-- Returns an empty string if no player levels are applicable (like in Cities).
|
|
function Tourist:GetLevelString(zone)
|
|
local lo, hi = Tourist:GetLevel(zone)
|
|
return FormatLevelString(lo, hi)
|
|
end
|
|
|
|
-- Returns minimum fishing skill to fish and minimum skill to avoid get-aways
|
|
function Tourist:GetFishingLevel(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return fishing_low[zone], fishing_high[zone]
|
|
end
|
|
|
|
|
|
-- Formats the minimum and maximum fishing level for the given zone as "[min]-[max]".
|
|
-- Returns one number if min and max are equal.
|
|
-- Returns an empty string if no player levels are applicable (like in Cities).
|
|
function Tourist:GetFishingLevelString(zone)
|
|
local lo, hi = Tourist:GetFishingLevel(zone)
|
|
return FormatLevelString(lo, hi)
|
|
end
|
|
|
|
|
|
-- Returns the minimum and maximum level for the given zone, instance or battleground.
|
|
function Tourist:GetLevel(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
|
|
if types[zone] == "Battleground" then
|
|
-- Note: Not all BG's start at level 10, but all BG's support players up to MAX_PLAYER_LEVEL.
|
|
|
|
local playerLvl = playerLevel
|
|
if playerLvl <= lows[zone] then
|
|
-- Player is too low level to enter the BG -> return the lowest available bracket
|
|
-- by assuming the player is at the min level required for the BG.
|
|
playerLvl = lows[zone]
|
|
end
|
|
|
|
-- Find the most suitable bracket
|
|
if playerLvl >= MAX_PLAYER_LEVEL then
|
|
return MAX_PLAYER_LEVEL, MAX_PLAYER_LEVEL, nil
|
|
elseif playerLvl >= 75 then
|
|
return 75, 79
|
|
elseif playerLvl >= 70 then
|
|
return 70, 74
|
|
elseif playerLvl >= 65 then
|
|
return 65, 69, nil
|
|
elseif playerLvl >= 60 then
|
|
return 60, 64, nil
|
|
elseif playerLvl >= 55 then
|
|
return 55, 59, nil
|
|
elseif playerLvl >= 50 then
|
|
return 50, 54, nil
|
|
elseif playerLvl >= 45 then
|
|
return 45, 49, nil
|
|
elseif playerLvl >= 40 then
|
|
return 40, 44, nil
|
|
elseif playerLvl >= 35 then
|
|
return 35, 39, nil
|
|
elseif playerLvl >= 30 then
|
|
return 30, 34, nil
|
|
elseif playerLvl >= 25 then
|
|
return 25, 29, nil
|
|
elseif playerLvl >= 20 then
|
|
return 20, 24, nil
|
|
elseif playerLvl >= 15 then
|
|
return 15, 19, nil
|
|
else
|
|
return 10, 14, nil
|
|
end
|
|
else
|
|
return lows[zone], highs[zone]
|
|
end
|
|
end
|
|
|
|
-- Returns an r, g and b value representing a color ranging from grey (too low) via
|
|
-- green, yellow and orange to red (too high), by calling CalculateLevelColor with
|
|
-- the min and max level of the given zone and the current player level.
|
|
function Tourist:GetLevelColor(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local low, high = self:GetLevel(zone)
|
|
|
|
if types[zone] == "Battleground" then
|
|
if playerLevel < low then
|
|
-- player cannot enter the lowest bracket of the BG -> red
|
|
return 1, 0, 0
|
|
end
|
|
end
|
|
|
|
return Tourist:CalculateLevelColor(low, high, playerLevel)
|
|
end
|
|
|
|
-- Returns an r, g and b value representing a color ranging from grey (too low) via
|
|
-- green, yellow and orange to red (too high) depending on the player level within
|
|
-- the given range. Returns white if no level is applicable, like in cities.
|
|
function Tourist:CalculateLevelColor(low, high, currentLevel)
|
|
local midBracket = (low + high) / 2
|
|
|
|
if low <= 0 and high <= 0 then
|
|
-- City or level unknown -> White
|
|
return 1, 1, 1
|
|
elseif currentLevel == low and currentLevel == high then
|
|
-- Exact match, one-level bracket -> Yellow
|
|
return 1, 1, 0
|
|
elseif currentLevel <= low - 3 then
|
|
-- Player is three or more levels short of Low -> Red
|
|
return 1, 0, 0
|
|
elseif currentLevel < low then
|
|
-- Player is two or less levels short of Low -> sliding scale between Red and Orange
|
|
-- Green component goes from 0 to 0.5
|
|
local greenComponent = (currentLevel - low + 3) / 6
|
|
return 1, greenComponent, 0
|
|
elseif currentLevel == low then
|
|
-- Player is at low, at least two-level bracket -> Orange
|
|
return 1, 0.5, 0
|
|
elseif currentLevel < midBracket then
|
|
-- Player is between low and the middle of the bracket -> sliding scale between Orange and Yellow
|
|
-- Green component goes from 0.5 to 1
|
|
local halfBracketSize = (high - low) / 2
|
|
local posInBracketHalf = currentLevel - low
|
|
local greenComponent = 0.5 + (posInBracketHalf / halfBracketSize) * 0.5
|
|
return 1, greenComponent, 0
|
|
elseif currentLevel == midBracket then
|
|
-- Player is at the middle of the bracket -> Yellow
|
|
return 1, 1, 0
|
|
elseif currentLevel < high then
|
|
-- Player is between the middle of the bracket and High -> sliding scale between Yellow and Green
|
|
-- Red component goes from 1 to 0
|
|
local halfBracketSize = (high - low) / 2
|
|
local posInBracketHalf = currentLevel - midBracket
|
|
local redComponent = 1 - (posInBracketHalf / halfBracketSize)
|
|
return redComponent, 1, 0
|
|
elseif currentLevel == high then
|
|
-- Player is at High, at least two-level bracket -> Green
|
|
return 0, 1, 0
|
|
elseif currentLevel < high + 3 then
|
|
-- Player is up to three levels above High -> sliding scale between Green and Gray
|
|
-- Red and Blue components go from 0 to 0.5
|
|
-- Green component goes from 1 to 0.5
|
|
local pos = (currentLevel - high) / 3
|
|
local redAndBlueComponent = pos * 0.5
|
|
local greenComponent = 1 - redAndBlueComponent
|
|
return redAndBlueComponent, greenComponent, redAndBlueComponent
|
|
else
|
|
-- Player is at High + 3 or above -> Gray
|
|
return 0.5, 0.5, 0.5
|
|
end
|
|
end
|
|
|
|
-- Returns an r, g and b value representing a color, depending on the given zone and the current character's faction.
|
|
function Tourist:GetFactionColor(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
|
|
if self:IsPvPZone(zone) then
|
|
-- Orange
|
|
return 1, 0.7, 0
|
|
elseif factions[zone] == (isHorde and "Alliance" or "Horde") then
|
|
-- Red
|
|
return 1, 0, 0
|
|
elseif factions[zone] == (isHorde and "Horde" or "Alliance") then
|
|
-- Green
|
|
return 0, 1, 0
|
|
else
|
|
-- Yellow
|
|
return 1, 1, 0
|
|
end
|
|
end
|
|
|
|
-- Returns an r, g and b value representing a color, depending on the given flight node faction and the current character's faction.
|
|
-- faction can be 0, 1, 2, "Neutral", "Horde" or "Alliance".
|
|
function Tourist:GetFlightnodeFactionColor(faction)
|
|
faction = GetFlightnodeFaction(faction)
|
|
if faction == (isHorde and "Alliance" or "Horde") then
|
|
-- Red (hostile)
|
|
return 1, 0, 0
|
|
elseif faction == (isHorde and "Horde" or "Alliance") then
|
|
-- Green (friendly)
|
|
return 0, 1, 0
|
|
else
|
|
-- Yellow (neutral or unknown)
|
|
return 1, 1, 0
|
|
end
|
|
end
|
|
|
|
-- Returns the width and height of a zone map in game yards. The height is always 2/3 of the width.
|
|
function Tourist:GetZoneYardSize(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return yardWidths[zone], yardHeights[zone]
|
|
end
|
|
|
|
-- Calculates a distance in game yards between point A and point B.
|
|
-- Points A and B can be in different zones but must be on the same continent.
|
|
function Tourist:GetYardDistance(zone1, x1, y1, zone2, x2, y2)
|
|
if tonumber(zone1) == nil then
|
|
-- Not a uiMapID, translate zone name to map ID
|
|
zone1 = Tourist:GetZoneMapID(zone1)
|
|
end
|
|
if tonumber(zone2) == nil then
|
|
-- Not a uiMapID, translate zone name to map ID
|
|
zone2 = Tourist:GetZoneMapID(zone2)
|
|
end
|
|
if zone1 and zone2 then
|
|
return HBD:GetZoneDistance(zone1, x1, y1, zone2, x2, y2)
|
|
else
|
|
return nil, nil, nil
|
|
end
|
|
end
|
|
|
|
-- This function is used to calculate the coordinates of a location in zone1, on the map of zone2.
|
|
-- The zones can be continents (including Azeroth).
|
|
-- The return value can be outside the 0 to 1 range.
|
|
function Tourist:TransposeZoneCoordinate(x, y, zone1, zone2)
|
|
if tonumber(zone1) == nil then
|
|
-- Not a uiMapID, translate zone name to map ID
|
|
zone1 = Tourist:GetZoneMapID(zone1)
|
|
end
|
|
if tonumber(zone2) == nil then
|
|
-- Not a uiMapID, translate zone name to map ID
|
|
zone2 = Tourist:GetZoneMapID(zone2)
|
|
end
|
|
|
|
return HBD:TranslateZoneCoordinates(x, y, zone1, zone2, true) -- True: allow < 0 and > 1
|
|
end
|
|
|
|
-- This function is used to find the actual zone a player is in, including coordinates for that zone, if the current map
|
|
-- is a map that contains the player position, but is not the map of the zone where the player really is.
|
|
-- Return values:
|
|
-- x, y = player position on the most suitable map
|
|
-- zone = the unique localized zone name of the most suitable map
|
|
-- uiMapID = ID of the most suitable map
|
|
function Tourist:GetBestZoneCoordinate()
|
|
local uiMapID = C_Map.GetBestMapForUnit("player")
|
|
|
|
if uiMapID then
|
|
local zone = Tourist:GetMapNameByIDAlt(uiMapID)
|
|
local pos = C_Map.GetPlayerMapPosition(uiMapID, "player")
|
|
if pos then
|
|
return pos.x, pos.y, zone, uiMapID
|
|
else
|
|
return nil, nil, zone, uiMapID
|
|
end
|
|
else
|
|
local name, instanceType, difficultyID, difficultyName, maxPlayers, dynamicDifficulty, isDynamic, instanceID, instanceGroupSize, LfgDungeonID = GetInstanceInfo()
|
|
if instanceID then
|
|
return nil, nil, name, instanceID
|
|
end
|
|
end
|
|
return nil, nil, nil, nil
|
|
end
|
|
|
|
|
|
-- Returns an r, g and b value representing a color, depending on the given zone and the current character's faction.
|
|
function Tourist:GetFactionColor(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
|
|
if self:IsPvPZone(zone) then
|
|
-- Orange
|
|
return 1, 0.7, 0
|
|
elseif factions[zone] == (isHorde and "Alliance" or "Horde") then
|
|
-- Red
|
|
return 1, 0, 0
|
|
elseif factions[zone] == (isHorde and "Horde" or "Alliance") then
|
|
-- Green
|
|
return 0, 1, 0
|
|
else
|
|
-- Yellow
|
|
return 1, 1, 0
|
|
end
|
|
end
|
|
|
|
|
|
-- Returns an r, g and b value indicating the gathering difficulty for the specified node level
|
|
function Tourist:GetGatheringSkillColor(minLevel, currentSkill)
|
|
local lvl1Corr = 0
|
|
if minLevel == 1 then
|
|
lvl1Corr = -1
|
|
end
|
|
|
|
if currentSkill < minLevel then
|
|
-- Red
|
|
return 1, 0.1, 0.1
|
|
elseif currentSkill < minLevel + 25 + lvl1Corr then
|
|
-- Orange
|
|
return 1, 0.5, 0.25
|
|
elseif currentSkill < minLevel + 50 + lvl1Corr then
|
|
-- Yellow
|
|
return 1, 1, 0
|
|
elseif currentSkill < minLevel + 100 + lvl1Corr then
|
|
-- Green
|
|
return 0.25, 0.75, 0.25
|
|
else
|
|
-- Gray
|
|
return 0.5, 0.5, 0.5
|
|
end
|
|
end
|
|
|
|
-- Returns the minimum required skinning skill for a given mob or zone level
|
|
function Tourist:GetRequiredSkinningSkill(level)
|
|
if level <= 10 then
|
|
return 1
|
|
elseif level <= 20 then
|
|
return (level * 10) - 100
|
|
else
|
|
return level * 5
|
|
end
|
|
end
|
|
|
|
|
|
-- Formats the minimum and maximum skinning skill for the given zone as "[min]-[max]".
|
|
-- Returns one number if min and max are equal.
|
|
-- Returns an empty string if no player levels are applicable (like in Cities).
|
|
function Tourist:GetSkinningLevelString(zone)
|
|
local low, high = Tourist:GetLevel(zone)
|
|
local skinningLow = Tourist:GetRequiredSkinningSkill(low)
|
|
local skinningHigh = Tourist:GetRequiredSkinningSkill(high)
|
|
return FormatLevelString(skinningLow, skinningHigh)
|
|
end
|
|
|
|
|
|
|
|
|
|
local t = {}
|
|
|
|
local function retNil()
|
|
return nil
|
|
end
|
|
|
|
local function retOne(object, state)
|
|
if state == object then
|
|
return nil
|
|
else
|
|
return object
|
|
end
|
|
end
|
|
|
|
local function retNormal(t, position)
|
|
return (next(t, position))
|
|
end
|
|
|
|
local function round(num, digits)
|
|
-- banker's rounding
|
|
local mantissa = 10^digits
|
|
local norm = num*mantissa
|
|
norm = norm + 0.5
|
|
local norm_f = math.floor(norm)
|
|
if norm == norm_f and (norm_f % 2) ~= 0 then
|
|
return (norm_f-1)/mantissa
|
|
end
|
|
return norm_f/mantissa
|
|
end
|
|
|
|
local function mysort(a,b)
|
|
if not lows[a] then
|
|
return false
|
|
elseif not lows[b] then
|
|
return true
|
|
else
|
|
local aval, bval = groupSizes[a] or groupMaxSizes[a], groupSizes[b] or groupMaxSizes[b]
|
|
if aval and bval then
|
|
if aval ~= bval then
|
|
return aval < bval
|
|
end
|
|
end
|
|
aval, bval = lows[a], lows[b]
|
|
if aval ~= bval then
|
|
return aval < bval
|
|
end
|
|
aval, bval = highs[a], highs[b]
|
|
if aval ~= bval then
|
|
return aval < bval
|
|
end
|
|
return a < b
|
|
end
|
|
end
|
|
local function myiter(t)
|
|
local n = t.n
|
|
n = n + 1
|
|
local v = t[n]
|
|
if v then
|
|
t[n] = nil
|
|
t.n = n
|
|
return v
|
|
else
|
|
t.n = nil
|
|
end
|
|
end
|
|
|
|
|
|
-- Flight nodes -------------------------
|
|
|
|
local function flightnodesort(a, b)
|
|
return a.name < b.name
|
|
end
|
|
|
|
function Tourist:IterateZoneInstances(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local inst = instances[zone]
|
|
|
|
if not inst then
|
|
return retNil
|
|
elseif type(inst) == "table" then
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
for k in pairs(inst) do
|
|
t[#t+1] = k
|
|
end
|
|
table.sort(t, mysort)
|
|
t.n = 0
|
|
return myiter, t, nil
|
|
else
|
|
return retOne, inst, nil
|
|
end
|
|
end
|
|
|
|
function Tourist:IterateZoneFlightnodes(zone)
|
|
if flightnodeDataGathered == false then
|
|
GatherFlightnodeData()
|
|
end
|
|
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local nodes = flightnodes[zone]
|
|
|
|
if not nodes then
|
|
-- No nodes
|
|
return retNil
|
|
elseif type(nodes) == "table" then
|
|
-- Table of node IDs. Check if they have been found by GatherFlightnodeData
|
|
-- If so, the value is a node object, otherwise the value is true
|
|
local foundNodes = {}
|
|
for id, _ in pairs(nodes) do
|
|
if FlightnodeLookupTable[id] ~= true then
|
|
-- FlightnodeLookupTable[id] is an object, use it as key for the iter code below
|
|
foundNodes[FlightnodeLookupTable[id]] = true
|
|
-- else
|
|
--trace("Skipped: "..tostring(id))
|
|
end
|
|
end
|
|
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
for k in pairs(foundNodes) do
|
|
t[#t+1] = k
|
|
end
|
|
table.sort(t, flightnodesort)
|
|
t.n = 0
|
|
return myiter, t, nil
|
|
else
|
|
-- Single node ID. Check if it has been found by GatherFlightnodeData
|
|
if FlightnodeLookupTable[nodes] ~= true then
|
|
return retOne, FlightnodeLookupTable[nodes], nil
|
|
else
|
|
-- No data
|
|
return retNil
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Zones ------------------------
|
|
|
|
function Tourist:IterateZoneComplexes(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local compl = zoneComplexes[zone]
|
|
|
|
if not compl then
|
|
return retNil
|
|
elseif type(compl) == "table" then
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
for k in pairs(compl) do
|
|
t[#t+1] = k
|
|
end
|
|
table.sort(t, mysort)
|
|
t.n = 0
|
|
return myiter, t, nil
|
|
else
|
|
return retOne, compl, nil
|
|
end
|
|
end
|
|
|
|
function Tourist:GetInstanceZone(instance)
|
|
instance = Tourist:GetMapNameByIDAlt(instance) or instance
|
|
for k, v in pairs(instances) do
|
|
if v then
|
|
if type(v) == "string" then
|
|
if v == instance then
|
|
return k
|
|
end
|
|
else -- table
|
|
for l in pairs(v) do
|
|
if l == instance then
|
|
return k
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function Tourist:GetComplexZone(complex)
|
|
complex = Tourist:GetMapNameByIDAlt(complex) or complex
|
|
for k, v in pairs(zoneComplexes) do
|
|
if v then
|
|
if type(v) == "string" then
|
|
if v == complex then
|
|
return k
|
|
end
|
|
else -- table
|
|
for l in pairs(v) do
|
|
if l == complex then
|
|
return k
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function Tourist:DoesZoneHaveInstances(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return not not instances[zone]
|
|
end
|
|
|
|
function Tourist:DoesZoneHaveFlightnodes(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return not not flightnodes[zone]
|
|
end
|
|
|
|
function Tourist:DoesZoneHaveComplexes(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return not not zoneComplexes[zone]
|
|
end
|
|
|
|
|
|
local zonesInstances
|
|
local function initZonesInstances()
|
|
if not zonesInstances then
|
|
zonesInstances = {}
|
|
for zone, v in pairs(lows) do
|
|
if types[zone] ~= "Transport" and types[zone] ~= "Portal" and types[zone] ~= "Continent" then
|
|
zonesInstances[zone] = true
|
|
end
|
|
end
|
|
end
|
|
initZonesInstances = nil -- Set function to nil so initialisation is done only once (and just in time)
|
|
end
|
|
|
|
function Tourist:IterateZonesAndInstances()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return retNormal, zonesInstances, nil
|
|
end
|
|
|
|
local function zoneIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and (types[k] == "Instance" or types[k] == "Battleground" or types[k] == "Arena" or types[k] == "Complex") do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateZones()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return zoneIter, nil, nil
|
|
end
|
|
|
|
local function instanceIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and (types[k] ~= "Instance" and types[k] ~= "Battleground" and types[k] ~= "Arena") do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateInstances()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return instanceIter, nil, nil
|
|
end
|
|
|
|
local function bgIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and types[k] ~= "Battleground" do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateBattlegrounds()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return bgIter, nil, nil
|
|
end
|
|
|
|
local function arIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and types[k] ~= "Arena" do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateArenas()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return arIter, nil, nil
|
|
end
|
|
|
|
local function compIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and types[k] ~= "Complex" do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateComplexes()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return compIter, nil, nil
|
|
end
|
|
|
|
local function pvpIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and types[k] ~= "PvP Zone" do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IteratePvPZones()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return pvpIter, nil, nil
|
|
end
|
|
|
|
local function allianceIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and factions[k] ~= "Alliance" do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateAlliance()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return allianceIter, nil, nil
|
|
end
|
|
|
|
local function hordeIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and factions[k] ~= "Horde" do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateHorde()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return hordeIter, nil, nil
|
|
end
|
|
|
|
if isHorde then
|
|
Tourist.IterateFriendly = Tourist.IterateHorde
|
|
Tourist.IterateHostile = Tourist.IterateAlliance
|
|
else
|
|
Tourist.IterateFriendly = Tourist.IterateAlliance
|
|
Tourist.IterateHostile = Tourist.IterateHorde
|
|
end
|
|
|
|
local function contestedIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and factions[k] do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateContested()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return contestedIter, nil, nil
|
|
end
|
|
|
|
local function kalimdorIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and continents[k] ~= Kalimdor do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateKalimdor()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return kalimdorIter, nil, nil
|
|
end
|
|
|
|
local function easternKingdomsIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and continents[k] ~= Eastern_Kingdoms do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateEasternKingdoms()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return easternKingdomsIter, nil, nil
|
|
end
|
|
|
|
local function outlandIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and continents[k] ~= Outland do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateOutland()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return outlandIter, nil, nil
|
|
end
|
|
|
|
local function northrendIter(_, position)
|
|
local k = next(zonesInstances, position)
|
|
while k ~= nil and continents[k] ~= Northrend do
|
|
k = next(zonesInstances, k)
|
|
end
|
|
return k
|
|
end
|
|
function Tourist:IterateNorthrend()
|
|
if initZonesInstances then
|
|
initZonesInstances()
|
|
end
|
|
return northrendIter, nil, nil
|
|
end
|
|
|
|
function Tourist:IterateRecommendedZones()
|
|
return retNormal, recZones, nil
|
|
end
|
|
|
|
function Tourist:IterateRecommendedInstances()
|
|
return retNormal, recInstances, nil
|
|
end
|
|
|
|
function Tourist:HasRecommendedInstances()
|
|
return next(recInstances) ~= nil
|
|
end
|
|
|
|
function Tourist:IsInstance(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t == "Instance" or t == "Battleground" or t == "Arena"
|
|
end
|
|
|
|
function Tourist:IsZone(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t and t ~= "Instance" and t ~= "Battleground" and t ~= "Transport" and t ~= "Portal" and t ~= "Arena" and t ~= "Complex"
|
|
end
|
|
|
|
function Tourist:IsContinent(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t == "Continent"
|
|
end
|
|
|
|
function Tourist:GetComplex(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return complexOfInstance[zone]
|
|
end
|
|
|
|
function Tourist:GetType(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return types[zone] or "Zone"
|
|
end
|
|
|
|
function Tourist:IsZoneOrInstance(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t and t ~= "Transport" and t ~= "Portal"
|
|
end
|
|
|
|
function Tourist:IsTransport(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t == "Transport" or t == "Portal"
|
|
end
|
|
|
|
function Tourist:IsComplex(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t == "Complex"
|
|
end
|
|
|
|
function Tourist:IsBattleground(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t == "Battleground"
|
|
end
|
|
|
|
function Tourist:IsArena(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t == "Arena"
|
|
end
|
|
|
|
function Tourist:IsPvPZone(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t == "PvP Zone"
|
|
end
|
|
|
|
function Tourist:IsCity(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local t = types[zone]
|
|
return t == "City"
|
|
end
|
|
|
|
function Tourist:IsAlliance(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return factions[zone] == "Alliance"
|
|
end
|
|
|
|
function Tourist:IsHorde(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return factions[zone] == "Horde"
|
|
end
|
|
|
|
if isHorde then
|
|
Tourist.IsFriendly = Tourist.IsHorde
|
|
Tourist.IsHostile = Tourist.IsAlliance
|
|
else
|
|
Tourist.IsFriendly = Tourist.IsAlliance
|
|
Tourist.IsHostile = Tourist.IsHorde
|
|
end
|
|
|
|
function Tourist:IsContested(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return not factions[zone]
|
|
end
|
|
|
|
function Tourist:GetContinent(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return BZ[continents[zone]] or UNKNOWN
|
|
end
|
|
|
|
function Tourist:IsInKalimdor(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return continents[zone] == Kalimdor
|
|
end
|
|
|
|
function Tourist:IsInEasternKingdoms(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return continents[zone] == Eastern_Kingdoms
|
|
end
|
|
|
|
function Tourist:IsInOutland(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return continents[zone] == Outland
|
|
end
|
|
|
|
function Tourist:IsInNorthrend(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return continents[zone] == Northrend
|
|
end
|
|
|
|
function Tourist:GetInstanceGroupSize(instance)
|
|
instance = Tourist:GetMapNameByIDAlt(instance) or instance
|
|
return groupSizes[instance] or groupMaxSizes[instance] or 0
|
|
end
|
|
|
|
function Tourist:GetInstanceGroupMinSize(instance)
|
|
instance = Tourist:GetMapNameByIDAlt(instance) or instance
|
|
return groupMinSizes[instance] or groupSizes[instance] or 0
|
|
end
|
|
|
|
function Tourist:GetInstanceGroupMaxSize(instance)
|
|
instance = Tourist:GetMapNameByIDAlt(instance) or instance
|
|
return groupMaxSizes[instance] or groupSizes[instance] or 0
|
|
end
|
|
|
|
function Tourist:GetInstanceGroupSizeString(instance, includeAltSize)
|
|
instance = Tourist:GetMapNameByIDAlt(instance) or instance
|
|
local retValue
|
|
if groupSizes[instance] then
|
|
-- Fixed size
|
|
retValue = tostring(groupSizes[instance])
|
|
elseif groupMinSizes[instance] and groupMaxSizes[instance] then
|
|
-- Variable size
|
|
if groupMinSizes[instance] == groupMaxSizes[instance] then
|
|
-- ...but equal
|
|
retValue = tostring(groupMinSizes[instance])
|
|
else
|
|
retValue = tostring(groupMinSizes[instance]).."-"..tostring(groupMaxSizes[instance])
|
|
end
|
|
else
|
|
-- No size known
|
|
return ""
|
|
end
|
|
if includeAltSize and groupAltSizes[instance] then
|
|
-- Add second size
|
|
retValue = retValue.." or "..tostring(groupAltSizes[instance])
|
|
end
|
|
return retValue
|
|
end
|
|
|
|
function Tourist:GetInstanceAltGroupSize(instance)
|
|
instance = Tourist:GetMapNameByIDAlt(instance) or instance
|
|
return groupAltSizes[instance] or 0
|
|
end
|
|
|
|
function Tourist:GetTexture(zone)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
return textures[zone]
|
|
end
|
|
|
|
function Tourist:GetZoneMapID(zone)
|
|
return zoneMapIDs[zone]
|
|
end
|
|
|
|
function Tourist:GetEntrancePortalLocation(instance)
|
|
instance = Tourist:GetMapNameByIDAlt(instance) or instance
|
|
local x, y = entrancePortals_x[instance], entrancePortals_y[instance]
|
|
if x then x = x/100 end
|
|
if y then y = y/100 end
|
|
return entrancePortals_zone[instance], x, y
|
|
end
|
|
|
|
local inf = math.huge
|
|
local stack = setmetatable({}, {__mode='k'})
|
|
local function iterator(S)
|
|
local position = S['#'] - 1
|
|
S['#'] = position
|
|
local x = S[position]
|
|
if not x then
|
|
for k in pairs(S) do
|
|
S[k] = nil
|
|
end
|
|
stack[S] = true
|
|
return nil
|
|
end
|
|
return x
|
|
end
|
|
|
|
setmetatable(cost, {
|
|
__index = function(self, vertex)
|
|
local price = 1
|
|
|
|
if lows[vertex] > playerLevel then
|
|
price = price * (1 + math.ceil((lows[vertex] - playerLevel) / 6))
|
|
end
|
|
|
|
if factions[vertex] == (isHorde and "Horde" or "Alliance") then
|
|
-- Friendly
|
|
price = price / 2
|
|
elseif factions[vertex] == (isHorde and "Alliance" or "Horde") then
|
|
-- Hostile
|
|
if types[vertex] == "Portal" then
|
|
price = inf
|
|
else
|
|
if types[vertex] == "City" then
|
|
price = price * 10
|
|
else
|
|
price = price * 3
|
|
end
|
|
end
|
|
end
|
|
|
|
if continents[vertex] == Outland and playerLevel < 58 then
|
|
-- Avoid using Shattrath portals in paths between Azeroth locations when they're not yet available
|
|
price = inf
|
|
end
|
|
|
|
if types[vertex] == "Transport" then
|
|
price = price * 2
|
|
end
|
|
|
|
self[vertex] = price
|
|
return price
|
|
end
|
|
})
|
|
|
|
-- This function tries to calculate the most optimal path between alpha and bravo
|
|
-- by foot or ground mount, that is, without using a flying mount or a taxi service (with a few exceptions).
|
|
-- The return value is an iteration that gives a travel advice in the form of a list
|
|
-- of zones, transports and portals to follow in order to get from alpha to bravo.
|
|
-- The function tries to avoid hostile zones by calculating a "price" for each possible
|
|
-- route. The price calculation takes zone level, faction and type into account.
|
|
-- See metatable above for the 'pricing' mechanism.
|
|
function Tourist:IteratePath(alpha, bravo)
|
|
alpha = Tourist:GetMapNameByIDAlt(alpha) or alpha -- departure zone
|
|
bravo = Tourist:GetMapNameByIDAlt(bravo) or bravo -- destination zone
|
|
|
|
if paths[alpha] == nil or paths[bravo] == nil then
|
|
-- departure zone and destination zone must both have at least one path
|
|
return retNil
|
|
end
|
|
|
|
local d = next(stack) or {}
|
|
stack[d] = nil
|
|
local Q = next(stack) or {}
|
|
stack[Q] = nil
|
|
local S = next(stack) or {}
|
|
stack[S] = nil
|
|
local pi = next(stack) or {}
|
|
stack[pi] = nil
|
|
|
|
for vertex, v in pairs(paths) do -- for each zone with at least one path
|
|
d[vertex] = inf -- add to price stack: d[<zone>] = price of the route to get to that zone from alpha, initially infinite
|
|
Q[vertex] = v -- add to zone stack: Q[<zone>] = <path collection>, contains all zones that have one or more paths
|
|
end
|
|
d[alpha] = 0 -- price for departure zone = 0 (no costs to get there)
|
|
|
|
while next(Q) do -- do this for each zone as long as there are zones present in the zone stack
|
|
local u -- this will hold the zone name with the lowest price
|
|
local min = inf -- this will hold the lowest price that has been found while searching; initially infinite
|
|
for z in pairs(Q) do -- for each zone currently present in the zone stack
|
|
local value = d[z] -- get price for the route to get to that zone (see note below)
|
|
if value < min then -- compare to find the zone with the lowest price. If a lower price is found:
|
|
min = value -- remember lowest route price so far
|
|
u = z -- remember the zone with the lowest route price so far
|
|
end
|
|
end
|
|
|
|
if min == inf then
|
|
return retNil -- no zone found for which a price has been determined -> exit and return nil (no path possible between alpha and bravo)
|
|
end
|
|
Q[u] = nil -- remove the zone that came up as cheapest from the stack so it won't be used twice
|
|
if u == bravo then
|
|
break -- we have reached our destination zone; stop searching by exiting the 'while next(Q)' loop
|
|
end
|
|
|
|
-- The very first cycle will result in the departure zone being the cheapest to go to. This zone has price 0, while all other zones are still
|
|
-- priced 'infinite' at this point. The departure zone will then be picked up for processing of its connections (paths).
|
|
--
|
|
-- Each zone that has been processed will be removed from the stack. The departure zone will therefore be the first zone to be removed.
|
|
-- Because every cycle the a zone with the lowest available price is processed, the remaining zones in the stack will always have an equal or
|
|
-- higher price (if not inifinite).
|
|
--
|
|
-- In subsequent cycles, prices will be calculated and set for other zones, causing them to be picked up for processing eventually in later cycles.
|
|
-- The price reflects the costs to reach that zone, originating from the departure zone.
|
|
--
|
|
-- Only zones will be priced, that have a connection with the zone that is being processed (starting with the departure zone).
|
|
-- Prices are only registered when they are lower than the registered price. When this happens the registered price is always 'infinite'.
|
|
-- Because the price of the route keeps increasing, prices are never updated once set. This ensures that the search always moves away from the
|
|
-- departure zone, like an oil stain.
|
|
--
|
|
-- At some point the destination zone will be priced too, if it comes up during the search.
|
|
--
|
|
-- When eventually the destination zone is picked as cheapest one left in the stack, this means that:
|
|
-- a) there is a route between departure and destination, because the destination zone has been priced
|
|
-- b) this route is made up out of the cheapest connections available
|
|
-- As a result, there is no need to continue the search because every other option would be more expensive.
|
|
|
|
|
|
-- process the path connections of the found zone
|
|
local adj = paths[u] -- get the path connections of the zone being processed (adj = adjecent?)
|
|
if type(adj) == "table" then -- multiple paths go from here
|
|
local d_u = d[u] -- current route price: the price of the route to get to the zone being processed
|
|
for v in pairs(adj) do -- for each path that goes from here
|
|
local c = d_u + cost[v] -- add the price of that path to the route price
|
|
if d[v] > c then -- if the currently known price of this path (initialized at infinite at the beginning) is greater than the calculated price...
|
|
d[v] = c -- - update the price of the path to that zone in the collection of prices
|
|
pi[v] = u -- - store or update how to get there: pi[<path zone name>] = <current zone name>
|
|
end
|
|
end
|
|
elseif adj ~= false then -- one path goes from here
|
|
local c = d[u] + cost[adj] -- add the price of that path to the route price
|
|
if d[adj] > c then -- if the the calculated route price for this path is less than the currently known price (initialized at inf at the beginning) is greater than ...
|
|
d[adj] = c -- - update the price of the path to that zone in the collection of prices
|
|
pi[adj] = u -- - store or update how to get there: pi[<path zone name>] = <current zone name>
|
|
end
|
|
end
|
|
end
|
|
|
|
-- At this point, pi will contain a collection of all connections that have been priced, stored as: pi[<you should go here>] = <from here>
|
|
-- Amongst these are the connections that have to be used to create the cheapest route between departure and destination.
|
|
-- Next, the route will be extracted from the data in pi.
|
|
--
|
|
-- The loop below starts at the destination zone and works it way back to the departure zone, asking
|
|
-- "from which direction should I be coming when I arrive here?"
|
|
-- until there is no answer to that question, which will be the case for the departure zone. Technically, the departure zone
|
|
-- has not been priced and is therefore not present in the collection.
|
|
--
|
|
-- The resulting sequence is stored in S[<index>] = <zone name>
|
|
-- The sequence appears to be reversed, starting at the destination zone (not sure why that is)
|
|
|
|
local i = 1
|
|
local last = bravo
|
|
while last do
|
|
S[i] = last
|
|
i = i + 1
|
|
last = pi[last]
|
|
end
|
|
|
|
-- reset the helper stacks
|
|
for k in pairs(pi) do
|
|
pi[k] = nil
|
|
end
|
|
for k in pairs(Q) do
|
|
Q[k] = nil
|
|
end
|
|
for k in pairs(d) do
|
|
d[k] = nil
|
|
end
|
|
stack[pi] = true
|
|
stack[Q] = true
|
|
stack[d] = true
|
|
|
|
S['#'] = i -- set the stack size of S
|
|
|
|
return iterator, S -- return result
|
|
end
|
|
|
|
|
|
local function retIsZone(t, key)
|
|
while true do
|
|
key = next(t, key)
|
|
if not key then
|
|
return nil
|
|
end
|
|
if Tourist:IsZone(key) then
|
|
return key
|
|
end
|
|
end
|
|
end
|
|
|
|
-- This returns an iteration of zone connections (paths).
|
|
-- The second parameter determines whether other connections like transports and portals should be included
|
|
function Tourist:IterateBorderZones(zone, zonesOnly)
|
|
zone = Tourist:GetMapNameByIDAlt(zone) or zone
|
|
local path = paths[zone]
|
|
|
|
if not path then
|
|
return retNil
|
|
elseif type(path) == "table" then
|
|
return zonesOnly and retIsZone or retNormal, path
|
|
else
|
|
if zonesOnly and not Tourist:IsZone(path) then
|
|
return retNil
|
|
end
|
|
return retOne, path
|
|
end
|
|
end
|
|
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
-- Main code --
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
do
|
|
Tourist.frame = oldLib and oldLib.frame or CreateFrame("Frame", MAJOR_VERSION .. "Frame", UIParent)
|
|
Tourist.frame:UnregisterAllEvents()
|
|
Tourist.frame:RegisterEvent("PLAYER_LEVEL_UP")
|
|
Tourist.frame:RegisterEvent("PLAYER_ENTERING_WORLD")
|
|
Tourist.frame:SetScript("OnEvent", function(frame, event, ...)
|
|
PLAYER_LEVEL_UP(Tourist, ...)
|
|
end)
|
|
|
|
|
|
trace("Tourist: Initializing localized zone name lookups...")
|
|
CreateLocalizedZoneNameLookups()
|
|
|
|
-- TRANSPORT DEFINITIONS ----------------------------------------------------------------
|
|
|
|
local transports = {}
|
|
|
|
-- Boats -------------------------------------
|
|
-- Classic
|
|
transports["STRANGLETHORN_BARRENS_BOAT"] = string.format(X_Y_BOAT, BZ["Stranglethorn Vale"], BZ["The Barrens"])
|
|
transports["BARRENS_STRANGLETHORN_BOAT"] = string.format(X_Y_BOAT, BZ["The Barrens"], BZ["Stranglethorn Vale"])
|
|
|
|
transports["WETLANDS_DUSTWALLOW_BOAT"] = string.format(X_Y_BOAT, BZ["Wetlands"], BZ["Dustwallow Marsh"])
|
|
transports["DUSTWALLOW_WETLANDS_BOAT"] = string.format(X_Y_BOAT, BZ["Dustwallow Marsh"], BZ["Wetlands"])
|
|
|
|
transports["STORMWIND_DARKSHORE_BOAT"] = string.format(X_Y_BOAT, BZ["Stormwind City"], BZ["Darkshore"])
|
|
transports["DARKSHORE_STORMWIND_BOAT"] = string.format(X_Y_BOAT, BZ["Darkshore"], BZ["Stormwind City"])
|
|
|
|
-- TBC
|
|
transports["DARKSHORE_TELDRASSIL_BOAT"] = string.format(X_Y_BOAT, BZ["Darkshore"], BZ["Teldrassil"])
|
|
transports["TELDRASSIL_DARKSHORE_BOAT"] = string.format(X_Y_BOAT, BZ["Teldrassil"], BZ["Darkshore"])
|
|
|
|
transports["DARKSHORE_AZUREMYST_BOAT"] = string.format(X_Y_BOAT, BZ["Darkshore"], BZ["Azuremyst Isle"])
|
|
transports["AZUREMYST_DARKSHORE_BOAT"] = string.format(X_Y_BOAT, BZ["Azuremyst Isle"], BZ["Darkshore"])
|
|
|
|
-- WotLK
|
|
transports["WETLANDS_HOWLINGFJORD_BOAT"] = string.format(X_Y_BOAT, BZ["Wetlands"], BZ["Howling Fjord"])
|
|
transports["HOWLINGFJORD_WETLANDS_BOAT"] = string.format(X_Y_BOAT, BZ["Howling Fjord"], BZ["Wetlands"])
|
|
|
|
transports["STORMWIND_BOREANTUNDRA_BOAT"] = string.format(X_Y_BOAT, BZ["Stormwind City"], BZ["Borean Tundra"])
|
|
transports["BOREANTUNDRA_STORMWIND_BOAT"] = string.format(X_Y_BOAT, BZ["Borean Tundra"], BZ["Stormwind City"])
|
|
|
|
transports["BOREANTUNDRA_DRAGONBLIGHT_BOAT"] = string.format(X_Y_BOAT, BZ["Dragonblight"], BZ["Borean Tundra"])
|
|
transports["DRAGONBLIGHT_BOREANTUNDRA_BOAT"] = string.format(X_Y_BOAT, BZ["Borean Tundra"], BZ["Dragonblight"])
|
|
|
|
transports["DRAGONBLIGHT_HOWLINGFJORD_BOAT"] = string.format(X_Y_BOAT, BZ["Dragonblight"], BZ["Howling Fjord"])
|
|
transports["HOWLINGFJORD_DRAGONBLIGHT_BOAT"] = string.format(X_Y_BOAT, BZ["Howling Fjord"], BZ["Dragonblight"])
|
|
|
|
|
|
-- Zeppelins -------------------------------------
|
|
-- Classic
|
|
transports["ORGRIMMAR_TIRISFAL_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Tirisfal Glades"])
|
|
transports["TIRISFAL_ORGRIMMAR_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Tirisfal Glades"], BZ["Orgrimmar"])
|
|
|
|
transports["ORGRIMMAR_STRANGLETHORN_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Stranglethorn Vale"])
|
|
transports["STRANGLETHORN_ORGRIMMAR_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Stranglethorn Vale"], BZ["Orgrimmar"])
|
|
|
|
transports["TIRISFAL_STRANGLETHORN_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Tirisfal Glades"], BZ["Stranglethorn Vale"])
|
|
transports["STRANGLETHORN_TIRISFAL_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Stranglethorn Vale"], BZ["Tirisfal Glades"])
|
|
|
|
-- WotLK
|
|
transports["ORGRIMMAR_BOREANTUNDRA_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Borean Tundra"])
|
|
transports["BOREANTUNDRA_ORGRIMMAR_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Borean Tundra"], BZ["Orgrimmar"])
|
|
|
|
transports["UNDERCITY_HOWLINGFJORD_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Undercity"], BZ["Howling Fjord"])
|
|
transports["HOWLINGFJORD_UNDERCITY_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Howling Fjord"], BZ["Undercity"])
|
|
|
|
|
|
|
|
|
|
-- Portals -------------------------------------
|
|
-- TBC
|
|
transports["SHATTRATH_IRONFORGE_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Ironforge"])
|
|
transports["IRONFORGE_SHATTRATH_PORTAL"] = string.format(X_Y_PORTAL, BZ["Ironforge"], BZ["Shattrath City"])
|
|
|
|
transports["SHATTRATH_STORMWIND_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Stormwind City"])
|
|
transports["STORMWIND_SHATTRATH_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Shattrath City"])
|
|
|
|
transports["SHATTRATH_DARNASSUS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Darnassus"])
|
|
transports["DARNASSUS_SHATTRATH_PORTAL"] = string.format(X_Y_PORTAL, BZ["Darnassus"], BZ["Shattrath City"])
|
|
|
|
transports["SHATTRATH_ORGRIMMAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Orgrimmar"])
|
|
transports["ORGRIMMAR_SHATTRATH_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Shattrath City"])
|
|
|
|
transports["SHATTRATH_THUNDERBLUFF_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Thunder Bluff"])
|
|
transports["THUNDERBLUFF_SHATTRATH_PORTAL"] = string.format(X_Y_PORTAL, BZ["Thunder Bluff"], BZ["Shattrath City"])
|
|
|
|
transports["SHATTRATH_UNDERCITY_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Undercity"])
|
|
transports["UNDERCITY_SHATTRATH_PORTAL"] = string.format(X_Y_PORTAL, BZ["Undercity"], BZ["Shattrath City"])
|
|
|
|
transports["SHATTRATH_EXODAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["The Exodar"])
|
|
transports["EXODAR_SHATTRATH_PORTAL"] = string.format(X_Y_PORTAL, BZ["The Exodar"], BZ["Shattrath City"])
|
|
|
|
transports["SHATTRATH_SILVERMOON_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Silvermoon City"])
|
|
transports["SILVERMOON_SHATTRATH_PORTAL"] = string.format(X_Y_PORTAL, BZ["Silvermoon City"], BZ["Shattrath City"])
|
|
|
|
transports["THE_DARK_PORTAL_BLASTED_LANDS"] = string.format(X_Y_PORTAL, BZ["Blasted Lands"], BZ["Hellfire Peninsula"])
|
|
transports["THE_DARK_PORTAL_HELLFIRE"] = string.format(X_Y_PORTAL, BZ["Hellfire Peninsula"], BZ["Blasted Lands"])
|
|
|
|
transports["SHATTRATH_QUELDANAS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Isle of Quel'Danas"])
|
|
|
|
-- WotLK
|
|
transports["DALARAN_COT_PORTAL"] = string.format(X_Y_PORTAL, BZ["Dalaran"], BZ["Caverns of Time"])
|
|
|
|
transports["DALARAN_ORGRIMMAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Dalaran"], BZ["Orgrimmar"])
|
|
|
|
transports["DALARAN_STORMWIND_PORTAL"] = string.format(X_Y_PORTAL, BZ["Dalaran"], BZ["Stormwind City"])
|
|
|
|
|
|
|
|
-- Teleports -------------------------------------
|
|
-- Classic
|
|
transports["DARNASSUS_TELDRASSIL_TELEPORT"] = string.format(X_Y_TELEPORT, BZ["Darnassus"], BZ["Teldrassil"])
|
|
transports["TELDRASSIL_DARNASSUS_TELEPORT"] = string.format(X_Y_TELEPORT, BZ["Teldrassil"], BZ["Darnassus"])
|
|
|
|
-- TBC
|
|
transports["SILVERMOON_UNDERCITY_TELEPORT"] = string.format(X_Y_TELEPORT, BZ["Silvermoon City"], BZ["Undercity"])
|
|
transports["UNDERCITY_SILVERMOON_TELEPORT"] = string.format(X_Y_TELEPORT, BZ["Undercity"], BZ["Silvermoon City"])
|
|
|
|
-- WotLK
|
|
transports["DALARAN_CRYSTALSONG_TELEPORT"] = string.format(X_Y_TELEPORT, BZ["Dalaran"], BZ["Crystalsong Forest"])
|
|
transports["CRYSTALSONG_DALARAN_TELEPORT"] = string.format(X_Y_TELEPORT, BZ["Crystalsong Forest"], BZ["Dalaran"])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local zones = {}
|
|
|
|
-- CONTINENTS ---------------------------------------------------------------
|
|
|
|
zones[BZ["Azeroth"]] = {
|
|
type = "Continent",
|
|
-- yards = 44531.82907938571,
|
|
yards = 33400.121,
|
|
x_offset = 0,
|
|
y_offset = 0,
|
|
continent = Azeroth,
|
|
}
|
|
|
|
zones[BZ["Eastern Kingdoms"]] = {
|
|
type = "Continent",
|
|
continent = Eastern_Kingdoms,
|
|
}
|
|
|
|
zones[BZ["Kalimdor"]] = {
|
|
type = "Continent",
|
|
continent = Kalimdor,
|
|
}
|
|
|
|
zones[BZ["Outland"]] = {
|
|
type = "Continent",
|
|
continent = Outland,
|
|
}
|
|
|
|
zones[BZ["Northrend"]] = {
|
|
type = "Continent",
|
|
continent = Northrend,
|
|
}
|
|
|
|
-- TRANSPORTS ---------------------------------------------------------------
|
|
|
|
zones[transports["ORGRIMMAR_TIRISFAL_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Tirisfal Glades"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["TIRISFAL_ORGRIMMAR_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Orgrimmar"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
|
|
zones[transports["ORGRIMMAR_STRANGLETHORN_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Stranglethorn Vale"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["STRANGLETHORN_ORGRIMMAR_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Orgrimmar"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
|
|
zones[transports["TIRISFAL_STRANGLETHORN_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Stranglethorn Vale"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["STRANGLETHORN_TIRISFAL_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Tirisfal Glades"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
|
|
|
|
zones[transports["STRANGLETHORN_BARRENS_BOAT"]] = {
|
|
paths = {
|
|
[BZ["The Barrens"]] = true,
|
|
},
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["BARRENS_STRANGLETHORN_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Stranglethorn Vale"]] = true,
|
|
},
|
|
type = "Transport",
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
zones[transports["STORMWIND_DARKSHORE_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Darkshore"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["DARKSHORE_STORMWIND_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Stormwind City"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
|
|
|
|
zones[BZ["Deeprun Tram"]] = {
|
|
paths = {
|
|
[BZ["Stormwind City"]] = true,
|
|
[BZ["Ironforge"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
|
|
|
|
-- TBC
|
|
zones[transports["SILVERMOON_UNDERCITY_TELEPORT"]] = {
|
|
paths = {
|
|
[BZ["Undercity"]] = true,
|
|
},
|
|
-- faction = "Horde", TODO: check
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["UNDERCITY_SILVERMOON_TELEPORT"]] = {
|
|
paths = {
|
|
[BZ["Silvermoon City"]] = true,
|
|
},
|
|
-- faction = "Horde", TODO: check
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["DARKSHORE_AZUREMYST_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Azuremyst Isle"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["AZUREMYST_DARKSHORE_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Darkshore"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
|
|
|
|
|
|
zones[transports["DARKSHORE_TELDRASSIL_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Teldrassil"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["TELDRASSIL_DARKSHORE_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Darkshore"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["DARNASSUS_TELDRASSIL_TELEPORT"]] = {
|
|
paths = {
|
|
[BZ["Teldrassil"]] = true,
|
|
},
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["TELDRASSIL_DARNASSUS_TELEPORT"]] = {
|
|
paths = {
|
|
[BZ["Darnassus"]] = true,
|
|
},
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["SHATTRATH_DARNASSUS_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Darnassus"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["DARNASSUS_SHATTRATH_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Shattrath City"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["SHATTRATH_EXODAR_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["The Exodar"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["EXODAR_SHATTRATH_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Shattrath City"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Portal",
|
|
}
|
|
|
|
|
|
|
|
zones[transports["SHATTRATH_IRONFORGE_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Ironforge"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["IRONFORGE_SHATTRATH_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Shattrath City"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["SHATTRATH_QUELDANAS_PORTAL"]] = {
|
|
paths = BZ["Isle of Quel'Danas"],
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["SHATTRATH_ORGRIMMAR_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Orgrimmar"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["ORGRIMMAR_SHATTRATH_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Shattrath City"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["SHATTRATH_SILVERMOON_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Silvermoon City"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["SILVERMOON_SHATTRATH_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Shattrath City"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Portal",
|
|
}
|
|
|
|
|
|
|
|
zones[transports["SHATTRATH_STORMWIND_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Stormwind City"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["STORMWIND_SHATTRATH_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Shattrath City"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["SHATTRATH_THUNDERBLUFF_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Thunder Bluff"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["THUNDERBLUFF_SHATTRATH_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Shattrath City"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["SHATTRATH_UNDERCITY_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Undercity"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["UNDERCITY_SHATTRATH_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Shattrath City"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Portal",
|
|
}
|
|
|
|
|
|
zones[transports["THE_DARK_PORTAL_BLASTED_LANDS"]] = {
|
|
paths = {
|
|
[BZ["Hellfire Peninsula"]] = true,
|
|
},
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["THE_DARK_PORTAL_HELLFIRE"]] = {
|
|
paths = {
|
|
[BZ["Blasted Lands"]] = true,
|
|
},
|
|
type = "Portal",
|
|
}
|
|
|
|
|
|
-- WotLK
|
|
|
|
zones[transports["DALARAN_COT_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Caverns of Time"]] = true,
|
|
},
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["DALARAN_STORMWIND_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Stormwind City"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["DALARAN_ORGRIMMAR_PORTAL"]] = {
|
|
paths = {
|
|
[BZ["Orgrimmar"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["DALARAN_CRYSTALSONG_TELEPORT"]] = {
|
|
paths = {
|
|
[BZ["Crystalsong Forest"]] = true,
|
|
},
|
|
type = "Portal",
|
|
}
|
|
|
|
zones[transports["CRYSTALSONG_DALARAN_TELEPORT"]] = {
|
|
paths = {
|
|
[BZ["Dalaran"]] = true,
|
|
},
|
|
type = "Portal",
|
|
}
|
|
|
|
|
|
|
|
zones[transports["STORMWIND_BOREANTUNDRA_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Borean Tundra"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["BOREANTUNDRA_STORMWIND_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Stormwind City"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["ORGRIMMAR_BOREANTUNDRA_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Borean Tundra"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["BOREANTUNDRA_ORGRIMMAR_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Orgrimmar"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["UNDERCITY_HOWLINGFJORD_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Howling Fjord"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["HOWLINGFJORD_UNDERCITY_ZEPPELIN"]] = {
|
|
paths = {
|
|
[BZ["Tirisfal Glades"]] = true,
|
|
},
|
|
faction = "Horde",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["WETLANDS_DUSTWALLOW_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Dustwallow Marsh"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["DUSTWALLOW_WETLANDS_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Wetlands"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["WETLANDS_HOWLINGFJORD_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Howling Fjord"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["HOWLINGFJORD_WETLANDS_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Wetlands"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["DRAGONBLIGHT_BOREANTUNDRA_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Borean Tundra"]] = true,
|
|
},
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["BOREANTUNDRA_DRAGONBLIGHT_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Dragonblight"]] = true,
|
|
},
|
|
type = "Transport",
|
|
}
|
|
|
|
|
|
zones[transports["DRAGONBLIGHT_HOWLINGFJORD_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Howling Fjord"]] = true,
|
|
},
|
|
type = "Transport",
|
|
}
|
|
|
|
zones[transports["HOWLINGFJORD_DRAGONBLIGHT_BOAT"]] = {
|
|
paths = {
|
|
[BZ["Dragonblight"]] = true,
|
|
},
|
|
type = "Transport",
|
|
}
|
|
|
|
|
|
|
|
|
|
-- ZONES, INSTANCES AND COMPLEXES ---------------------------------------------------------
|
|
|
|
-- Eastern Kingdoms cities and zones --
|
|
|
|
zones[BZ["Stormwind City"]] = {
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["The Stockade"],
|
|
paths = {
|
|
[BZ["Deeprun Tram"]] = true,
|
|
[BZ["The Stockade"]] = true,
|
|
[BZ["Elwynn Forest"]] = true,
|
|
[transports["STORMWIND_SHATTRATH_PORTAL"]] = true,
|
|
[transports["STORMWIND_BOREANTUNDRA_BOAT"]] = true,
|
|
[transports["STORMWIND_DARKSHORE_BOAT"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[2] = true, -- Stormwind, Elwynn (A)
|
|
},
|
|
faction = "Alliance",
|
|
type = "City",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Undercity"]] = {
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Ruins of Lordaeron"],
|
|
paths = {
|
|
[BZ["Tirisfal Glades"]] = true,
|
|
[BZ["Ruins of Lordaeron"]] = true,
|
|
[transports["UNDERCITY_SILVERMOON_TELEPORT"]] = true,
|
|
[transports["UNDERCITY_SHATTRATH_PORTAL"]] = true,
|
|
[transports["UNDERCITY_HOWLINGFJORD_ZEPPELIN"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[11] = true, -- Undercity, Tirisfal (H)
|
|
},
|
|
faction = "Horde",
|
|
type = "City",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Ironforge"]] = {
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Dun Morogh"]] = true,
|
|
[BZ["Deeprun Tram"]] = true,
|
|
[transports["IRONFORGE_SHATTRATH_PORTAL"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[6] = true, -- Ironforge, Dun Morogh (A)
|
|
},
|
|
faction = "Alliance",
|
|
type = "City",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Dun Morogh"]] = {
|
|
low = 1,
|
|
high = 12,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Gnomeregan"],
|
|
paths = {
|
|
[BZ["Gnomeregan"]] = true,
|
|
[BZ["Ironforge"]] = true,
|
|
[BZ["Loch Modan"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[6] = true, -- Ironforge, Dun Morogh (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
zones[BZ["Elwynn Forest"]] = {
|
|
low = 1,
|
|
high = 12,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Westfall"]] = true,
|
|
[BZ["Redridge Mountains"]] = true,
|
|
[BZ["Stormwind City"]] = true,
|
|
[BZ["Duskwood"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[2] = true, -- Stormwind, Elwynn (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
zones[BZ["Tirisfal Glades"]] = {
|
|
low = 1,
|
|
high = 12,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Scarlet Monastery"],
|
|
paths = {
|
|
[BZ["Western Plaguelands"]] = true,
|
|
[BZ["Undercity"]] = true,
|
|
[BZ["Scarlet Monastery"]] = true,
|
|
[transports["TIRISFAL_ORGRIMMAR_ZEPPELIN"]] = true,
|
|
[transports["TIRISFAL_STRANGLETHORN_ZEPPELIN"]] = true,
|
|
[BZ["Silverpine Forest"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[11] = true, -- Undercity, Tirisfal (H)
|
|
[384] = true, -- The Bulwark, Tirisfal (H)
|
|
},
|
|
faction = "Horde",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
zones[BZ["Westfall"]] = {
|
|
low = 10,
|
|
high = 20,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["The Deadmines"],
|
|
paths = {
|
|
[BZ["Duskwood"]] = true,
|
|
[BZ["Elwynn Forest"]] = true,
|
|
[BZ["The Deadmines"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[4] = true, -- Sentinel Hill, Westfall (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Loch Modan"]] = {
|
|
low = 10,
|
|
high = 20,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Wetlands"]] = true,
|
|
[BZ["Badlands"]] = true,
|
|
[BZ["Dun Morogh"]] = true,
|
|
[BZ["Searing Gorge"]] = not isHorde and true or nil,
|
|
},
|
|
flightnodes = {
|
|
[8] = true, -- Thelsamar, Loch Modan (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Silverpine Forest"]] = {
|
|
low = 10,
|
|
high = 20,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Shadowfang Keep"],
|
|
paths = {
|
|
[BZ["Tirisfal Glades"]] = true,
|
|
[BZ["Hillsbrad Foothills"]] = true,
|
|
[BZ["Shadowfang Keep"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[10] = true, -- The Sepulcher, Silverpine Forest (H)
|
|
},
|
|
faction = "Horde",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Redridge Mountains"]] = {
|
|
low = 15,
|
|
high = 25,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Burning Steppes"]] = true,
|
|
[BZ["Elwynn Forest"]] = true,
|
|
[BZ["Duskwood"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[5] = true, -- Lakeshire, Redridge (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 55,
|
|
fishing_high = 150,
|
|
}
|
|
|
|
zones[BZ["Duskwood"]] = {
|
|
low = 20,
|
|
high = 30,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Redridge Mountains"]] = true,
|
|
[BZ["Stranglethorn Vale"]] = true,
|
|
[BZ["Westfall"]] = true,
|
|
[BZ["Deadwind Pass"]] = true,
|
|
[BZ["Elwynn Forest"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[12] = true, -- Darkshire, Duskwood (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 55,
|
|
fishing_high = 150,
|
|
}
|
|
|
|
zones[BZ["Alterac Mountains"]] = {
|
|
low = 30,
|
|
high = 40,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Alterac Valley"],
|
|
paths = {
|
|
[BZ["Western Plaguelands"]] = true,
|
|
[BZ["Alterac Valley"]] = true,
|
|
[BZ["Hillsbrad Foothills"]] = true,
|
|
},
|
|
fishing_low = 130,
|
|
fishing_high = 225,
|
|
}
|
|
|
|
zones[BZ["Hillsbrad Foothills"]] = {
|
|
low = 20,
|
|
high = 30,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Alterac Mountains"]] = true,
|
|
[BZ["Alterac Valley"]] = true,
|
|
[BZ["The Hinterlands"]] = true,
|
|
[BZ["Arathi Highlands"]] = true,
|
|
[BZ["Silverpine Forest"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[13] = true, -- Tarren Mill, Hillsbrad (H)
|
|
[14] = true, -- Southshore, Hillsbrad (A)
|
|
},
|
|
fishing_low = 55,
|
|
fishing_high = 150,
|
|
}
|
|
|
|
zones[BZ["Wetlands"]] = {
|
|
low = 20,
|
|
high = 30,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Arathi Highlands"]] = true,
|
|
[transports["WETLANDS_DUSTWALLOW_BOAT"]] = true,
|
|
[transports["WETLANDS_HOWLINGFJORD_BOAT"]] = true,
|
|
[BZ["Loch Modan"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[7] = true, -- Menethil Harbor, Wetlands (A)
|
|
},
|
|
fishing_low = 55,
|
|
fishing_high = 150,
|
|
}
|
|
|
|
zones[BZ["Arathi Highlands"]] = {
|
|
low = 30,
|
|
high = 40,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Arathi Basin"],
|
|
paths = {
|
|
[BZ["Wetlands"]] = true,
|
|
[BZ["Hillsbrad Foothills"]] = true,
|
|
[BZ["Arathi Basin"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[16] = true, -- Refuge Pointe, Arathi (A)
|
|
[17] = true, -- Hammerfall, Arathi (H)
|
|
},
|
|
fishing_low = 130,
|
|
fishing_high = 225,
|
|
}
|
|
|
|
zones[BZ["Stranglethorn Vale"]] = {
|
|
low = 30,
|
|
high = 45,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Zul'Gurub"],
|
|
paths = {
|
|
[BZ["Duskwood"]] = true,
|
|
[BZ["Zul'Gurub"]] = true,
|
|
[transports["STRANGLETHORN_ORGRIMMAR_ZEPPELIN"]] = true,
|
|
[transports["STRANGLETHORN_TIRISFAL_ZEPPELIN"]] = true,
|
|
[transports["STRANGLETHORN_BARRENS_BOAT"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[18] = true, -- Booty Bay, Stranglethorn (H)
|
|
[19] = true, -- Booty Bay, Stranglethorn (A)
|
|
[20] = true, -- Grom'gol, Stranglethorn (H)
|
|
[195] = true, -- Rebel Camp, Stranglethorn Vale (A)
|
|
},
|
|
fishing_low = 130,
|
|
fishing_high = 225,
|
|
}
|
|
|
|
zones[BZ["The Hinterlands"]] = {
|
|
low = 40,
|
|
high = 50,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Hillsbrad Foothills"]] = true,
|
|
[BZ["Western Plaguelands"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[43] = true, -- Aerie Peak, The Hinterlands (A)
|
|
[76] = true, -- Revantusk Village, The Hinterlands (H)
|
|
},
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
}
|
|
|
|
zones[BZ["Western Plaguelands"]] = {
|
|
low = 50,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Scholomance"],
|
|
paths = {
|
|
[BZ["The Hinterlands"]] = true,
|
|
[BZ["Eastern Plaguelands"]] = true,
|
|
[BZ["Tirisfal Glades"]] = true,
|
|
[BZ["Scholomance"]] = true,
|
|
[BZ["Alterac Mountains"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[66] = true, -- Chillwind Camp, Western Plaguelands (A)
|
|
[383] = true, -- Thondoril River, Western Plaguelands (N)
|
|
},
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
}
|
|
|
|
zones[BZ["Eastern Plaguelands"]] = {
|
|
low = 55,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
instances = {
|
|
[BZ["Stratholme"]] = true,
|
|
[BZ["Naxxramas"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Western Plaguelands"]] = true,
|
|
[BZ["Stratholme"]] = true,
|
|
[BZ["Naxxramas"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[67] = true, -- Light's Hope Chapel, Eastern Plaguelands (A)
|
|
[68] = true, -- Light's Hope Chapel, Eastern Plaguelands (H)
|
|
[85] = true, -- Northpass Tower, Eastern Plaguelands (N)
|
|
[86] = true, -- Eastwall Tower, Eastern Plaguelands (N)
|
|
[84] = true, -- Plaguewood Tower, Eastern Plaguelands (N)
|
|
[87] = true, -- Crown Guard Tower, Eastern Plaguelands (N)
|
|
[315] = true, -- Acherus: The Ebon Hold (N)
|
|
},
|
|
type = "PvP Zone",
|
|
fishing_low = 330,
|
|
fishing_high = 425,
|
|
}
|
|
|
|
zones[BZ["Badlands"]] = {
|
|
low = 35,
|
|
high = 45,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Uldaman"],
|
|
paths = {
|
|
[BZ["Uldaman"]] = true,
|
|
[BZ["Searing Gorge"]] = true,
|
|
[BZ["Loch Modan"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[21] = true, -- Kargath, Badlands (H)
|
|
},
|
|
}
|
|
|
|
zones[BZ["Searing Gorge"]] = {
|
|
low = 43,
|
|
high = 50,
|
|
continent = Eastern_Kingdoms,
|
|
instances = {
|
|
[BZ["Blackrock Depths"]] = true,
|
|
[BZ["Blackwing Lair"]] = true,
|
|
[BZ["Molten Core"]] = true,
|
|
[BZ["Blackrock Spire"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Blackrock Mountain"]] = true,
|
|
[BZ["Badlands"]] = true,
|
|
[BZ["Loch Modan"]] = not isHorde and true or nil,
|
|
},
|
|
flightnodes = {
|
|
[75] = true, -- Thorium Point, Searing Gorge (H)
|
|
[74] = true, -- Thorium Point, Searing Gorge (A)
|
|
},
|
|
complexes = {
|
|
[BZ["Blackrock Mountain"]] = true,
|
|
},
|
|
}
|
|
|
|
zones[BZ["Burning Steppes"]] = {
|
|
low = 50,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
instances = {
|
|
[BZ["Blackrock Depths"]] = true,
|
|
[BZ["Blackwing Lair"]] = true,
|
|
[BZ["Molten Core"]] = true,
|
|
[BZ["Blackrock Spire"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Blackrock Mountain"]] = true,
|
|
[BZ["Redridge Mountains"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[70] = true, -- Flame Crest, Burning Steppes (H)
|
|
[71] = true, -- Morgan's Vigil, Burning Steppes (A)
|
|
},
|
|
complexes = {
|
|
[BZ["Blackrock Mountain"]] = true,
|
|
},
|
|
fishing_low = 330,
|
|
fishing_high = 425,
|
|
}
|
|
|
|
zones[BZ["Swamp of Sorrows"]] = {
|
|
low = 35,
|
|
high = 45,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["The Temple of Atal'Hakkar"],
|
|
paths = {
|
|
[BZ["Blasted Lands"]] = true,
|
|
[BZ["Deadwind Pass"]] = true,
|
|
[BZ["The Temple of Atal'Hakkar"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[56] = true, -- Stonard, Swamp of Sorrows (H)
|
|
},
|
|
fishing_low = 130,
|
|
fishing_high = 225,
|
|
}
|
|
|
|
zones[BZ["Blasted Lands"]] = {
|
|
low = 47,
|
|
high = 55,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[transports["THE_DARK_PORTAL_BLASTED_LANDS"]] = true,
|
|
[BZ["Swamp of Sorrows"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[45] = true, -- Nethergarde Keep, Blasted Lands (A)
|
|
},
|
|
}
|
|
|
|
zones[BZ["Deadwind Pass"]] = {
|
|
low = 55,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Duskwood"]] = true,
|
|
[BZ["Swamp of Sorrows"]] = true,
|
|
[BZ["Karazhan"]] = true,
|
|
},
|
|
instances = {
|
|
[BZ["Karazhan"]] = true,
|
|
},
|
|
fishing_low = 330,
|
|
fishing_high = 425,
|
|
}
|
|
|
|
-- Kalimdor cities and zones --
|
|
|
|
zones[BZ["Orgrimmar"]] = {
|
|
continent = Kalimdor,
|
|
instances = BZ["Ragefire Chasm"],
|
|
paths = {
|
|
[BZ["Durotar"]] = true,
|
|
[BZ["The Barrens"]] = true,
|
|
[BZ["Ragefire Chasm"]] = true,
|
|
[transports["ORGRIMMAR_STRANGLETHORN_ZEPPELIN"]] = true,
|
|
[transports["ORGRIMMAR_TIRISFAL_ZEPPELIN"]] = true,
|
|
[transports["ORGRIMMAR_SHATTRATH_PORTAL"]] = true,
|
|
[transports["ORGRIMMAR_BOREANTUNDRA_ZEPPELIN"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[23] = true, -- Orgrimmar, Durotar (H)
|
|
},
|
|
faction = "Horde",
|
|
type = "City",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Thunder Bluff"]] = {
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Mulgore"]] = true,
|
|
[transports["THUNDERBLUFF_SHATTRATH_PORTAL"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[22] = true, -- Thunder Bluff, Mulgore (H)
|
|
},
|
|
faction = "Horde",
|
|
type = "City",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Darnassus"]] = {
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[transports["DARNASSUS_TELDRASSIL_TELEPORT"]] = true,
|
|
[transports["DARNASSUS_SHATTRATH_PORTAL"]] = true,
|
|
},
|
|
faction = "Alliance",
|
|
type = "City",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Durotar"]] = {
|
|
low = 1,
|
|
high = 12,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["The Barrens"]] = true,
|
|
[BZ["Orgrimmar"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[23] = true, -- Orgrimmar, Durotar (H)
|
|
},
|
|
faction = "Horde",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
zones[BZ["Mulgore"]] = {
|
|
low = 1,
|
|
high = 12,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Thunder Bluff"]] = true,
|
|
[BZ["The Barrens"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[22] = true, -- Thunder Bluff, Mulgore (H)
|
|
},
|
|
faction = "Horde",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
zones[BZ["Teldrassil"]] = {
|
|
low = 1,
|
|
high = 12,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[transports["TELDRASSIL_DARNASSUS_TELEPORT"]] = true,
|
|
[transports["TELDRASSIL_DARKSHORE_BOAT"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[27] = true, -- Rut'theran Village, Teldrassil (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
zones[BZ["Azshara"]] = {
|
|
low = 48,
|
|
high = 55,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Ashenvale"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[44] = true, -- Valormok, Azshara (H)
|
|
[64] = true, -- Talrendis Point, Azshara (A)
|
|
},
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
}
|
|
|
|
zones[BZ["Darkshore"]] = {
|
|
low = 10,
|
|
high = 20,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Ashenvale"]] = true,
|
|
[transports["DARKSHORE_STORMWIND_BOAT"]] = true,
|
|
[transports["DARKSHORE_TELDRASSIL_BOAT"]] = true,
|
|
[transports["DARKSHORE_AZUREMYST_BOAT"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[26] = true, -- Auberdine, Darkshore (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["The Barrens"]] = {
|
|
low = 10,
|
|
high = 25,
|
|
continent = Kalimdor,
|
|
instances = {
|
|
[BZ["Wailing Caverns"]] = true,
|
|
[BZ["Warsong Gulch"]] = isHorde and true or nil,
|
|
[BZ["Razorfen Kraul"]] = true,
|
|
[BZ["Razorfen Downs"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Ashenvale"]] = true,
|
|
[BZ["Durotar"]] = true,
|
|
[BZ["Orgrimmar"]] = true,
|
|
[BZ["Thousand Needles"]] = true,
|
|
[BZ["Stonetalon Mountains"]] = true,
|
|
[BZ["Mulgore"]] = true,
|
|
[BZ["Wailing Caverns"]] = true,
|
|
[BZ["Warsong Gulch"]] = isHorde and true or nil,
|
|
[BZ["Razorfen Kraul"]] = true,
|
|
[BZ["Razorfen Downs"]] = true,
|
|
[BZ["Dustwallow Marsh"]] = true,
|
|
[transports["BARRENS_STRANGLETHORN_BOAT"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[80] = true, -- Ratchet, The Barrens (N)
|
|
[25] = true, -- The Crossroads, The Barrens (H)
|
|
[77] = true, -- Camp Taurajo, The Barrens (H)
|
|
},
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Ashenvale"]] = {
|
|
low = 15,
|
|
high = 30,
|
|
continent = Kalimdor,
|
|
instances = {
|
|
[BZ["Blackfathom Deeps"]] = true,
|
|
[BZ["Warsong Gulch"]] = not isHorde and true or nil,
|
|
},
|
|
paths = {
|
|
[BZ["Azshara"]] = true,
|
|
[BZ["The Barrens"]] = true,
|
|
[BZ["Blackfathom Deeps"]] = true,
|
|
[BZ["Warsong Gulch"]] = not isHorde and true or nil,
|
|
[BZ["Felwood"]] = true,
|
|
[BZ["Darkshore"]] = true,
|
|
[BZ["Stonetalon Mountains"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[61] = true, -- Splintertree Post, Ashenvale (H)
|
|
[28] = true, -- Astranaar, Ashenvale (A)
|
|
[58] = true, -- Zoram'gar Outpost, Ashenvale (H)
|
|
[167] = true, -- Forest Song, Ashenvale (A)
|
|
},
|
|
fishing_low = 55,
|
|
fishing_high = 150,
|
|
}
|
|
|
|
zones[BZ["Stonetalon Mountains"]] = {
|
|
low = 15,
|
|
high = 27,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Desolace"]] = true,
|
|
[BZ["The Barrens"]] = true,
|
|
[BZ["Ashenvale"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[33] = true, -- Stonetalon Peak, Stonetalon Mountains (A)
|
|
[29] = true, -- Sun Rock Retreat, Stonetalon Mountains (H)
|
|
},
|
|
fishing_low = 55,
|
|
fishing_high = 150,
|
|
}
|
|
|
|
zones[BZ["Desolace"]] = {
|
|
low = 30,
|
|
high = 40,
|
|
continent = Kalimdor,
|
|
instances = BZ["Maraudon"],
|
|
paths = {
|
|
[BZ["Feralas"]] = true,
|
|
[BZ["Stonetalon Mountains"]] = true,
|
|
[BZ["Maraudon"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[38] = true, -- Shadowprey Village, Desolace (H)
|
|
[37] = true, -- Nijel's Point, Desolace (A)
|
|
},
|
|
fishing_low = 130,
|
|
fishing_high = 225,
|
|
}
|
|
|
|
zones[BZ["Dustwallow Marsh"]] = {
|
|
low = 35,
|
|
high = 45,
|
|
continent = Kalimdor,
|
|
instances = BZ["Onyxia's Lair"],
|
|
paths = {
|
|
[BZ["Onyxia's Lair"]] = true,
|
|
[BZ["The Barrens"]] = true,
|
|
[transports["DUSTWALLOW_WETLANDS_BOAT"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[55] = true, -- Brackenwall Village, Dustwallow Marsh (H)
|
|
[32] = true, -- Theramore, Dustwallow Marsh (A)
|
|
[179] = true, -- Mudsprocket, Dustwallow Marsh (N)
|
|
},
|
|
fishing_low = 130,
|
|
fishing_high = 225,
|
|
}
|
|
|
|
zones[BZ["Feralas"]] = {
|
|
low = 40,
|
|
high = 50,
|
|
continent = Kalimdor,
|
|
instances = {
|
|
[BZ["Dire Maul - East"]] = true,
|
|
[BZ["Dire Maul - North"]] = true,
|
|
[BZ["Dire Maul - West"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Thousand Needles"]] = true,
|
|
[BZ["Desolace"]] = true,
|
|
[BZ["Dire Maul"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[41] = true, -- Feathermoon, Feralas (A)
|
|
[42] = true, -- Camp Mojache, Feralas (H)
|
|
[31] = true, -- Thalanaar, Feralas (A)
|
|
},
|
|
complexes = {
|
|
[BZ["Dire Maul"]] = true,
|
|
},
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
}
|
|
|
|
zones[BZ["Thousand Needles"]] = {
|
|
low = 25,
|
|
high = 35,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Feralas"]] = true,
|
|
[BZ["The Barrens"]] = true,
|
|
[BZ["Tanaris"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[30] = true, -- Freewind Post, Thousand Needles (H)
|
|
},
|
|
fishing_low = 130,
|
|
fishing_high = 225,
|
|
}
|
|
|
|
zones[BZ["Felwood"]] = {
|
|
low = 48,
|
|
high = 55,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Winterspring"]] = true,
|
|
[BZ["Moonglade"]] = true,
|
|
[BZ["Ashenvale"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[48] = true, -- Bloodvenom Post, Felwood (H)
|
|
[65] = true, -- Talonbranch Glade, Felwood (A)
|
|
[166] = true, -- Emerald Sanctuary, Felwood (N)
|
|
},
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
}
|
|
|
|
zones[BZ["Tanaris"]] = {
|
|
low = 40,
|
|
high = 50,
|
|
continent = Kalimdor,
|
|
instances =
|
|
{
|
|
[BZ["Zul'Farrak"]] = true,
|
|
[BZ["Old Hillsbrad Foothills"]] = true,
|
|
[BZ["The Black Morass"]] = true,
|
|
[BZ["Hyjal Summit"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Thousand Needles"]] = true,
|
|
[BZ["Un'Goro Crater"]] = true,
|
|
[BZ["Zul'Farrak"]] = true,
|
|
[BZ["Caverns of Time"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[39] = true, -- Gadgetzan, Tanaris (A)
|
|
[40] = true, -- Gadgetzan, Tanaris (H)
|
|
},
|
|
complexes = {
|
|
[BZ["Caverns of Time"]] = true,
|
|
},
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
}
|
|
|
|
zones[BZ["Un'Goro Crater"]] = {
|
|
low = 48,
|
|
high = 55,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Silithus"]] = true,
|
|
[BZ["Tanaris"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[79] = true, -- Marshal's Refuge, Un'Goro Crater (N)
|
|
},
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
}
|
|
|
|
zones[BZ["Winterspring"]] = {
|
|
low = 55,
|
|
high = 60,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Felwood"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[53] = true, -- Everlook, Winterspring (H)
|
|
[52] = true, -- Everlook, Winterspring (A)
|
|
},
|
|
fishing_low = 330,
|
|
fishing_high = 425,
|
|
}
|
|
|
|
zones[BZ["Silithus"]] = {
|
|
low = 55,
|
|
high = 60,
|
|
continent = Kalimdor,
|
|
instances = {
|
|
[BZ["Ahn'Qiraj Temple"]] = true,
|
|
[BZ["Ruins of Ahn'Qiraj"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Un'Goro Crater"]] = true,
|
|
[BZ["Ahn'Qiraj: The Fallen Kingdom"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[73] = true, -- Cenarion Hold, Silithus (A)
|
|
[72] = true, -- Cenarion Hold, Silithus (H)
|
|
},
|
|
complexes = {
|
|
[BZ["Ahn'Qiraj: The Fallen Kingdom"]] = true,
|
|
},
|
|
type = "PvP Zone",
|
|
fishing_low = 330,
|
|
fishing_high = 425,
|
|
}
|
|
|
|
zones[BZ["Moonglade"]] = {
|
|
continent = Kalimdor,
|
|
low = 1,
|
|
high = 1,
|
|
paths = {
|
|
[BZ["Felwood"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[49] = true, -- Moonglade (A)
|
|
[69] = true, -- Moonglade (H)
|
|
[62] = true, -- Nighthaven, Moonglade (A)
|
|
[63] = true, -- Nighthaven, Moonglade (H)
|
|
},
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
}
|
|
|
|
|
|
|
|
|
|
-- The Burning Crusade Cities -------------------------------------
|
|
|
|
zones[BZ["Silvermoon City"]] = {
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Eversong Woods"]] = true,
|
|
[BZ["Undercity"]] = true,
|
|
[transports["SILVERMOON_UNDERCITY_TELEPORT"]] = true,
|
|
[transports["SILVERMOON_SHATTRATH_PORTAL"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[82] = true, -- Silvermoon City (H)
|
|
},
|
|
faction = "Horde",
|
|
type = "City",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["The Exodar"]] = {
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Azuremyst Isle"]] = true,
|
|
[transports["EXODAR_SHATTRATH_PORTAL"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[94] = true, -- The Exodar (A)
|
|
},
|
|
faction = "Alliance",
|
|
type = "City",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
zones[BZ["Shattrath City"]] = {
|
|
continent = Outland,
|
|
paths = {
|
|
[BZ["Nagrand"]] = true,
|
|
[BZ["Terokkar Forest"]] = true,
|
|
[transports["SHATTRATH_THUNDERBLUFF_PORTAL"]] = true,
|
|
[transports["SHATTRATH_STORMWIND_PORTAL"]] = true,
|
|
[transports["SHATTRATH_UNDERCITY_PORTAL"]] = true,
|
|
[transports["SHATTRATH_SILVERMOON_PORTAL"]] = true,
|
|
[transports["SHATTRATH_EXODAR_PORTAL"]] = true,
|
|
[transports["SHATTRATH_DARNASSUS_PORTAL"]] = true,
|
|
[transports["SHATTRATH_ORGRIMMAR_PORTAL"]] = true,
|
|
[transports["SHATTRATH_IRONFORGE_PORTAL"]] = true,
|
|
[transports["SHATTRATH_QUELDANAS_PORTAL"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[128] = true, -- Shattrath, Terokkar Forest (N)
|
|
},
|
|
type = "City",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
}
|
|
|
|
|
|
|
|
-- The Burning Crusade Zones --------------------------------------
|
|
|
|
-- Blood Elf zones
|
|
zones[BZ["Eversong Woods"]] = {
|
|
low = 1,
|
|
high = 10,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Silvermoon City"]] = true,
|
|
[BZ["Ghostlands"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[82] = true, -- Silvermoon City (H)
|
|
},
|
|
faction = "Horde",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
zones[BZ["Ghostlands"]] = {
|
|
low = 10,
|
|
high = 20,
|
|
continent = Eastern_Kingdoms,
|
|
instances = BZ["Zul'Aman"],
|
|
paths = {
|
|
[BZ["Eastern Plaguelands"]] = true,
|
|
[BZ["Zul'Aman"]] = true,
|
|
[BZ["Eversong Woods"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[83] = true, -- Tranquillien, Ghostlands (H)
|
|
[205] = true, -- Zul'Aman, Ghostlands (N)
|
|
},
|
|
faction = "Horde",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
-- Dranei zones
|
|
zones[BZ["Azuremyst Isle"]] = {
|
|
low = 1,
|
|
high = 10,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["The Exodar"]] = true,
|
|
[BZ["Bloodmyst Isle"]] = true,
|
|
[transports["AZUREMYST_DARKSHORE_BOAT"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[94] = true, -- The Exodar (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
zones[BZ["Bloodmyst Isle"]] = {
|
|
low = 10,
|
|
high = 20,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Azuremyst Isle"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[93] = true, -- Blood Watch, Bloodmyst Isle (A)
|
|
},
|
|
faction = "Alliance",
|
|
fishing_low = 1,
|
|
fishing_high = 25,
|
|
}
|
|
|
|
-- Outland zones
|
|
zones[BZ["Hellfire Peninsula"]] = {
|
|
low = 58,
|
|
high = 63,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["The Blood Furnace"]] = true,
|
|
[BZ["Hellfire Ramparts"]] = true,
|
|
[BZ["Magtheridon's Lair"]] = true,
|
|
[BZ["The Shattered Halls"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Zangarmarsh"]] = true,
|
|
[transports["THE_DARK_PORTAL_HELLFIRE"]] = true,
|
|
[BZ["Terokkar Forest"]] = true,
|
|
[BZ["Hellfire Citadel"]] = true,
|
|
},
|
|
complexes = {
|
|
[BZ["Hellfire Citadel"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[99] = true, -- Thrallmar, Hellfire Peninsula (H)
|
|
[101] = true, -- Temple of Telhamat, Hellfire Peninsula (A)
|
|
[141] = true, -- Spinebreaker Ridge, Hellfire Peninsula (H)
|
|
[149] = true, -- Shatter Point, Hellfire Peninsula (A)
|
|
[102] = true, -- Falcon Watch, Hellfire Peninsula (H)
|
|
[100] = true, -- Honor Hold, Hellfire Peninsula (A)
|
|
[129] = true, -- The Dark Portal, Hellfire Peninsula (A)
|
|
[130] = true, -- The Dark Portal, Hellfire Peninsula (H)
|
|
},
|
|
type = "PvP Zone",
|
|
fishing_low = 280,
|
|
fishing_high = 375,
|
|
}
|
|
|
|
zones[BZ["Zangarmarsh"]] = {
|
|
low = 60,
|
|
high = 64,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["The Underbog"]] = true,
|
|
[BZ["Serpentshrine Cavern"]] = true,
|
|
[BZ["The Steamvault"]] = true,
|
|
[BZ["The Slave Pens"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Blade's Edge Mountains"]] = true,
|
|
[BZ["Terokkar Forest"]] = true,
|
|
[BZ["Nagrand"]] = true,
|
|
[BZ["Hellfire Peninsula"]] = true,
|
|
[BZ["Coilfang Reservoir"]] = true,
|
|
},
|
|
complexes = {
|
|
[BZ["Coilfang Reservoir"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[118] = true, -- Zabra'jin, Zangarmarsh (H)
|
|
[164] = true, -- Orebor Harborage, Zangarmarsh (A)
|
|
[151] = true, -- Swamprat Post, Zangarmarsh (H)
|
|
[117] = true, -- Telredor, Zangarmarsh (A)
|
|
},
|
|
type = "PvP Zone",
|
|
fishing_low = 305,
|
|
fishing_high = 400,
|
|
}
|
|
|
|
zones[BZ["Terokkar Forest"]] = {
|
|
low = 62,
|
|
high = 65,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["Mana-Tombs"]] = true,
|
|
[BZ["Sethekk Halls"]] = true,
|
|
[BZ["Shadow Labyrinth"]] = true,
|
|
[BZ["Auchenai Crypts"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Shadowmoon Valley"]] = true,
|
|
[BZ["Zangarmarsh"]] = true,
|
|
[BZ["Shattrath City"]] = true,
|
|
[BZ["Hellfire Peninsula"]] = true,
|
|
[BZ["Nagrand"]] = true,
|
|
[BZ["Auchindoun"]] = true,
|
|
},
|
|
complexes = {
|
|
[BZ["Auchindoun"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[127] = true, -- Stonebreaker Hold, Terokkar Forest (H)
|
|
[128] = true, -- Shattrath, Terokkar Forest (N)
|
|
[121] = true, -- Allerian Stronghold, Terokkar Forest (A)
|
|
},
|
|
type = "PvP Zone",
|
|
fishing_low = 355,
|
|
fishing_high = 450,
|
|
}
|
|
|
|
zones[BZ["Nagrand"]] = {
|
|
low = 64,
|
|
high = 67,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["Nagrand Arena"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Zangarmarsh"]] = true,
|
|
[BZ["Shattrath City"]] = true,
|
|
[BZ["Terokkar Forest"]] = true,
|
|
[BZ["Nagrand Arena"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[120] = true, -- Garadar, Nagrand (H)
|
|
[119] = true, -- Telaar, Nagrand (A)
|
|
},
|
|
type = "PvP Zone",
|
|
fishing_low = 380,
|
|
fishing_high = 475,
|
|
}
|
|
|
|
zones[BZ["Blade's Edge Mountains"]] = {
|
|
low = 65,
|
|
high = 68,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["Gruul's Lair"]] = true,
|
|
[BZ["Blade's Edge Arena"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Netherstorm"]] = true,
|
|
[BZ["Zangarmarsh"]] = true,
|
|
[BZ["Gruul's Lair"]] = true,
|
|
[BZ["Blade's Edge Arena"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[126] = true, -- Thunderlord Stronghold, Blade's Edge Mountains (H)
|
|
[163] = true, -- Mok'Nathal Village, Blade's Edge Mountains (H)
|
|
[160] = true, -- Evergrove, Blade's Edge Mountains (N)
|
|
[125] = true, -- Sylvanaar, Blade's Edge Mountains (A)
|
|
[156] = true, -- Toshley's Station, Blade's Edge Mountains (A)
|
|
},
|
|
-- No fishable waters
|
|
}
|
|
|
|
zones[BZ["Shadowmoon Valley"]] = {
|
|
low = 67,
|
|
high = 70,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["Black Temple"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Terokkar Forest"]] = true,
|
|
[BZ["Black Temple"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[124] = true, -- Wildhammer Stronghold, Shadowmoon Valley (A)
|
|
[123] = true, -- Shadowmoon Village, Shadowmoon Valley (H)
|
|
[140] = true, -- Altar of Sha'tar, Shadowmoon Valley (N)
|
|
[159] = true, -- Sanctum of the Stars, Shadowmoon Valley (N)
|
|
},
|
|
fishing_low = 280,
|
|
fishing_high = 375,
|
|
}
|
|
|
|
zones[BZ["Netherstorm"]] = {
|
|
low = 67,
|
|
high = 70,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["The Mechanar"]] = true,
|
|
[BZ["The Botanica"]] = true,
|
|
[BZ["The Arcatraz"]] = true,
|
|
[BZ["Tempest Keep"]] = true, -- = The Eye
|
|
},
|
|
paths = {
|
|
[BZ["Blade's Edge Mountains"]] = true,
|
|
[BZ["The Mechanar"]] = true,
|
|
[BZ["The Botanica"]] = true,
|
|
[BZ["The Arcatraz"]] = true,
|
|
[BZ["Tempest Keep"]] = true,
|
|
},
|
|
complexes = {
|
|
-- [BZ["Tempest Keep"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[150] = true, -- Cosmowrench, Netherstorm (N)
|
|
[122] = true, -- Area 52, Netherstorm (N)
|
|
[139] = true, -- The Stormspire, Netherstorm (N)
|
|
},
|
|
fishing_low = 380,
|
|
fishing_high = 475,
|
|
}
|
|
|
|
|
|
|
|
-- TBC 2.4 zone
|
|
zones[BZ["Isle of Quel'Danas"]] = {
|
|
continent = Eastern_Kingdoms,
|
|
low = 70,
|
|
high = 70,
|
|
instances = {
|
|
[BZ["Magister's Terrace"]] = true,
|
|
[BZ["Sunwell Plateau"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Magister's Terrace"]] = true,
|
|
[BZ["Sunwell Plateau"]] = true,
|
|
},
|
|
-- flightnodes = {
|
|
-- [00] = true, -- TODO
|
|
-- },
|
|
fishing_low = 355,
|
|
fishing_high = 450,
|
|
}
|
|
|
|
|
|
|
|
|
|
-- Wrath of the Lich King Cities
|
|
|
|
zones[BZ["Dalaran"]] = {
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["The Violet Hold"]] = true,
|
|
[transports["DALARAN_CRYSTALSONG_TELEPORT"]] = true,
|
|
[transports["DALARAN_COT_PORTAL"]] = true,
|
|
[transports["DALARAN_STORMWIND_PORTAL"]] = true,
|
|
[transports["DALARAN_ORGRIMMAR_PORTAL"]] = true,
|
|
},
|
|
instances = {
|
|
[BZ["The Violet Hold"]] = true,
|
|
-- [BZ["Dalaran Arena"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[310] = true, -- Dalaran (N)
|
|
},
|
|
type = "City",
|
|
texture = "Dalaran",
|
|
faction = "Sanctuary",
|
|
fishing_low = 450, -- TODO: check
|
|
fishing_high = 525,
|
|
}
|
|
|
|
|
|
|
|
-- Wrath of the Lich King Zones
|
|
|
|
zones[BZ["Borean Tundra"]] = {
|
|
low = 68,
|
|
high = 72,
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["Coldarra"]] = true,
|
|
[BZ["Dragonblight"]] = true,
|
|
[BZ["Sholazar Basin"]] = true,
|
|
[transports["BOREANTUNDRA_STORMWIND_BOAT"]] = true,
|
|
[transports["BOREANTUNDRA_ORGRIMMAR_ZEPPELIN"]] = true,
|
|
[transports["DRAGONBLIGHT_BOREANTUNDRA_BOAT"]] = true,
|
|
},
|
|
instances = {
|
|
[BZ["The Nexus"]] = true,
|
|
[BZ["The Oculus"]] = true,
|
|
[BZ["The Eye of Eternity"]] = true,
|
|
},
|
|
complexes = {
|
|
[BZ["Coldarra"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[226] = true, -- Transitus Shield, Coldarra (N)
|
|
[234] = true, -- Coldarra Ledge, Coldarra (H)
|
|
[245] = true, -- Valiance Keep, Borean Tundra (A)
|
|
[246] = true, -- Fizzcrank Airstrip, Borean Tundra (A)
|
|
[257] = true, -- Warsong Hold, Borean Tundra (H)
|
|
[258] = true, -- Taunka'le Village, Borean Tundra (H)
|
|
[259] = true, -- Bor'gorok Outpost, Borean Tundra (H)
|
|
[289] = true, -- Amber Ledge, Borean Tundra (N)
|
|
[296] = true, -- Unu'pe, Borean Tundra (N)
|
|
},
|
|
fishing_low = 370, -- TODO: check
|
|
fishing_high = 475,
|
|
}
|
|
|
|
zones[BZ["Howling Fjord"]] = {
|
|
low = 68,
|
|
high = 72,
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["Grizzly Hills"]] = true,
|
|
[transports["HOWLINGFJORD_WETLANDS_BOAT"]] = true,
|
|
[transports["HOWLINGFJORD_UNDERCITY_ZEPPELIN"]] = true,
|
|
[transports["HOWLINGFJORD_DRAGONBLIGHT_BOAT"]] = true,
|
|
[BZ["Utgarde Keep"]] = true,
|
|
[BZ["Utgarde Pinnacle"]] = true,
|
|
},
|
|
instances = {
|
|
[BZ["Utgarde Keep"]] = true,
|
|
[BZ["Utgarde Pinnacle"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[183] = true, -- Valgarde Port, Howling Fjord (A)
|
|
[184] = true, -- Fort Wildervar, Howling Fjord (A)
|
|
[185] = true, -- Westguard Keep, Howling Fjord (A)
|
|
[190] = true, -- New Agamand, Howling Fjord (H)
|
|
[191] = true, -- Vengeance Landing, Howling Fjord (H)
|
|
[192] = true, -- Camp Winterhoof, Howling Fjord (H)
|
|
[248] = true, -- Apothecary Camp, Howling Fjord (H)
|
|
[295] = true, -- Kamagua, Howling Fjord (N)
|
|
},
|
|
fishing_low = 370, -- TODO: check
|
|
fishing_high = 475,
|
|
}
|
|
|
|
zones[BZ["Dragonblight"]] = {
|
|
low = 71,
|
|
high = 75,
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["Borean Tundra"]] = true,
|
|
[BZ["Grizzly Hills"]] = true,
|
|
[BZ["Zul'Drak"]] = true,
|
|
[BZ["Crystalsong Forest"]] = true,
|
|
[transports["BOREANTUNDRA_DRAGONBLIGHT_BOAT"]] = true,
|
|
[transports["DRAGONBLIGHT_HOWLINGFJORD_BOAT"]] = true,
|
|
[BZ["Azjol-Nerub"]] = true,
|
|
[BZ["Ahn'kahet: The Old Kingdom"]] = true,
|
|
[BZ["Naxxramas"]] = true,
|
|
[BZ["The Obsidian Sanctum"]] = true,
|
|
},
|
|
instances = {
|
|
[BZ["Azjol-Nerub"]] = true,
|
|
[BZ["Ahn'kahet: The Old Kingdom"]] = true,
|
|
[BZ["Naxxramas"]] = true,
|
|
[BZ["The Obsidian Sanctum"]] = true,
|
|
[BZ["Strand of the Ancients"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[244] = true, -- Wintergarde Keep, Dragonblight (A)
|
|
[247] = true, -- Stars' Rest, Dragonblight (A)
|
|
[251] = true, -- Fordragon Hold, Dragonblight (A)
|
|
[252] = true, -- Wyrmrest Temple, Dragonblight (N)
|
|
[254] = true, -- Venomspite, Dragonblight (H)
|
|
[256] = true, -- Agmar's Hammer, Dragonblight (H)
|
|
[260] = true, -- Kor'koron Vanguard, Dragonblight (H)
|
|
[294] = true, -- Moa'ki, Dragonblight (N)
|
|
},
|
|
fishing_low = 370, -- TODO: check
|
|
fishing_high = 475,
|
|
}
|
|
|
|
zones[BZ["Grizzly Hills"]] = {
|
|
low = 73,
|
|
high = 75,
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["Howling Fjord"]] = true,
|
|
[BZ["Dragonblight"]] = true,
|
|
[BZ["Zul'Drak"]] = true,
|
|
[BZ["Drak'Tharon Keep"]] = true,
|
|
},
|
|
instances = BZ["Drak'Tharon Keep"],
|
|
flightnodes = {
|
|
[249] = true, -- Camp Oneqwah, Grizzly Hills (H)
|
|
[250] = true, -- Conquest Hold, Grizzly Hills (H)
|
|
[253] = true, -- Amberpine Lodge, Grizzly Hills (A)
|
|
[255] = true, -- Westfall Brigade, Grizzly Hills (A)
|
|
},
|
|
fishing_low = 370, -- TODO: check
|
|
fishing_high = 475,
|
|
}
|
|
|
|
zones[BZ["Zul'Drak"]] = {
|
|
low = 74,
|
|
high = 77,
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["Dragonblight"]] = true,
|
|
[BZ["Grizzly Hills"]] = true,
|
|
[BZ["Crystalsong Forest"]] = true,
|
|
[BZ["Gundrak"]] = true,
|
|
[BZ["Drak'Tharon Keep"]] = true,
|
|
},
|
|
instances = {
|
|
[BZ["Gundrak"]] = true,
|
|
[BZ["Drak'Tharon Keep"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[304] = true, -- The Argent Stand, Zul'Drak (N)
|
|
[305] = true, -- Ebon Watch, Zul'Drak (N)
|
|
[306] = true, -- Light's Breach, Zul'Drak (N)
|
|
[307] = true, -- Zim'Torga, Zul'Drak (N)
|
|
[290] = true, -- Argent Stand, Zul'Drak (H)
|
|
[331] = true, -- Gundrak, Zul'Drak (N)
|
|
},
|
|
fishing_low = 370, -- TODO: check
|
|
fishing_high = 475,
|
|
}
|
|
|
|
zones[BZ["Sholazar Basin"]] = {
|
|
low = 75,
|
|
high = 78,
|
|
continent = Northrend,
|
|
paths = BZ["Borean Tundra"],
|
|
flightnodes = {
|
|
[308] = true, -- River's Heart, Sholazar Basin (N)
|
|
[309] = true, -- Nesingwary Base Camp, Sholazar Basin (N)
|
|
},
|
|
fishing_low = 450, -- TODO: check
|
|
fishing_high = 525,
|
|
}
|
|
|
|
zones[BZ["Crystalsong Forest"]] = {
|
|
low = 77,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = {
|
|
[transports["CRYSTALSONG_DALARAN_TELEPORT"]] = true,
|
|
[BZ["Dragonblight"]] = true,
|
|
[BZ["Zul'Drak"]] = true,
|
|
[BZ["The Storm Peaks"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[336] = true, -- Windrunner's Overlook, Crystalsong Forest (A)
|
|
[337] = true, -- Sunreaver's Command, Crystalsong Forest (H)
|
|
},
|
|
fishing_low = 425, -- TODO: check
|
|
fishing_high = 500,
|
|
}
|
|
|
|
zones[BZ["The Storm Peaks"]] = {
|
|
low = 77,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["Crystalsong Forest"]] = true,
|
|
[BZ["Halls of Stone"]] = true,
|
|
[BZ["Halls of Lightning"]] = true,
|
|
[BZ["Ulduar"]] = true,
|
|
},
|
|
instances = {
|
|
[BZ["Halls of Stone"]] = true,
|
|
[BZ["Halls of Lightning"]] = true,
|
|
[BZ["Ulduar"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[320] = true, -- K3, The Storm Peaks (N)
|
|
[321] = true, -- Frosthold, The Storm Peaks (A)
|
|
[322] = true, -- Dun Nifflelem, The Storm Peaks (N)
|
|
[323] = true, -- Grom'arsh Crash-Site, The Storm Peaks (H)
|
|
[324] = true, -- Camp Tunka'lo, The Storm Peaks (H)
|
|
[326] = true, -- Ulduar, The Storm Peaks (N)
|
|
[327] = true, -- Bouldercrag's Refuge, The Storm Peaks (N)
|
|
},
|
|
fishing_low = 475, -- TODO: check
|
|
fishing_high = 550,
|
|
}
|
|
|
|
zones[BZ["Icecrown"]] = {
|
|
low = 77,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["Trial of the Champion"]] = true,
|
|
[BZ["Trial of the Crusader"]] = true,
|
|
[BZ["The Forge of Souls"]] = true,
|
|
[BZ["Pit of Saron"]] = true,
|
|
[BZ["Halls of Reflection"]] = true,
|
|
[BZ["Icecrown Citadel"]] = true,
|
|
[BZ["Hrothgar's Landing"]] = true,
|
|
},
|
|
instances = {
|
|
[BZ["Trial of the Champion"]] = true,
|
|
[BZ["Trial of the Crusader"]] = true,
|
|
[BZ["The Forge of Souls"]] = true,
|
|
[BZ["Pit of Saron"]] = true,
|
|
[BZ["Halls of Reflection"]] = true,
|
|
[BZ["Icecrown Citadel"]] = true,
|
|
[BZ["Isle of Conquest"]] = true,
|
|
},
|
|
flightnodes = {
|
|
[325] = true, -- Death's Rise, Icecrown (N)
|
|
[333] = true, -- The Shadow Vault, Icecrown (H)
|
|
[334] = true, -- The Argent Vanguard, Icecrown (N)
|
|
[335] = true, -- Crusaders' Pinnacle, Icecrown (N)
|
|
[340] = true, -- Argent Tournament Grounds, Icecrown (N)
|
|
},
|
|
fishing_low = 475, -- TODO: check
|
|
fishing_high = 550,
|
|
}
|
|
|
|
zones[BZ["Hrothgar's Landing"]] = {
|
|
low = 77,
|
|
high = 80,
|
|
paths = BZ["Icecrown"],
|
|
continent = Northrend,
|
|
fishing_low = 475, -- TODO: check
|
|
fishing_high = 550,
|
|
}
|
|
|
|
zones[BZ["Wintergrasp"]] = {
|
|
low = 77,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Vault of Archavon"],
|
|
instances = BZ["Vault of Archavon"],
|
|
type = "PvP Zone",
|
|
flightnodes = {
|
|
[303] = true, -- Valiance Landing Camp, Wintergrasp (A)
|
|
[332] = true, -- Warsong Camp, Wintergrasp (H)
|
|
},
|
|
fishing_low = 450, -- TODO: check
|
|
fishing_high = 550,
|
|
}
|
|
|
|
-- zones[BZ["The Frozen Sea"]] = {
|
|
-- continent = Northrend,
|
|
-- fishing_low = 450, -- TODO: check
|
|
-- fishing_high = 575,
|
|
-- }
|
|
|
|
|
|
|
|
|
|
|
|
-- Classic dungeons ------------------------
|
|
|
|
zones[BZ["Ragefire Chasm"]] = {
|
|
low = 13,
|
|
high = 18,
|
|
continent = Kalimdor,
|
|
paths = BZ["Orgrimmar"],
|
|
groupSize = 5,
|
|
faction = "Horde",
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Orgrimmar"], 52.8, 49 },
|
|
}
|
|
|
|
zones[BZ["The Deadmines"]] = {
|
|
low = 17,
|
|
high = 26,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Westfall"],
|
|
groupSize = 5,
|
|
faction = "Alliance",
|
|
type = "Instance",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
entrancePortal = { BZ["Westfall"], 42.6, 72.2 },
|
|
}
|
|
|
|
zones[BZ["Shadowfang Keep"]] = {
|
|
low = 22,
|
|
high = 30,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Silverpine Forest"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Silverpine Forest"], 44.80, 67.83 },
|
|
}
|
|
|
|
zones[BZ["Wailing Caverns"]] = {
|
|
low = 17,
|
|
high = 24,
|
|
continent = Kalimdor,
|
|
paths = BZ["The Barrens"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
entrancePortal = { BZ["The Barrens"], 42.1, 66.5 },
|
|
}
|
|
|
|
zones[BZ["Blackfathom Deeps"]] = {
|
|
low = 24,
|
|
high = 32,
|
|
continent = Kalimdor,
|
|
paths = BZ["Ashenvale"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
fishing_low = 1,
|
|
fishing_high = 75,
|
|
entrancePortal = { BZ["Ashenvale"], 14.6, 15.3 },
|
|
}
|
|
|
|
zones[BZ["The Stockade"]] = {
|
|
low = 24,
|
|
high = 32,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Stormwind City"],
|
|
groupSize = 5,
|
|
faction = "Alliance",
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Stormwind City"], 39.85, 54.30 },
|
|
}
|
|
|
|
zones[BZ["Gnomeregan"]] = {
|
|
low = 29,
|
|
high = 38,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Dun Morogh"],
|
|
groupSize = 5,
|
|
faction = "Alliance",
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Dun Morogh"], 24, 38.9 },
|
|
}
|
|
|
|
-- Consists of Graveyard, Library, Armory and Cathedral
|
|
zones[BZ["Scarlet Monastery"]] = {
|
|
low = 34,
|
|
high = 45,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Tirisfal Glades"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
fishing_low = 130,
|
|
fishing_high = 225,
|
|
entrancePortal = { BZ["Tirisfal Glades"], 85.3, 32.1 },
|
|
}
|
|
|
|
zones[BZ["Razorfen Kraul"]] = {
|
|
low = 29,
|
|
high = 38,
|
|
continent = Kalimdor,
|
|
paths = BZ["The Barrens"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["The Barrens"], 40.8, 94.5 },
|
|
}
|
|
|
|
zones[BZ["Razorfen Downs"]] = {
|
|
low = 37,
|
|
high = 46,
|
|
continent = Kalimdor,
|
|
paths = BZ["The Barrens"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["The Barrens"], 47.5, 23.7 },
|
|
}
|
|
|
|
-- consists of The Wicked Grotto, Foulspore Cavern and Earth Song Falls
|
|
zones[BZ["Maraudon"]] = {
|
|
low = 46,
|
|
high = 55,
|
|
continent = Kalimdor,
|
|
paths = BZ["Desolace"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
entrancePortal = { BZ["Desolace"], 29, 62.4 },
|
|
}
|
|
|
|
zones[BZ["Uldaman"]] = {
|
|
low = 41,
|
|
high = 51,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Badlands"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Badlands"], 42.4, 18.6 },
|
|
}
|
|
|
|
-- a.k.a. Warpwood Quarter
|
|
zones[BZ["Dire Maul - East"]] = {
|
|
low = 55,
|
|
high = 60,
|
|
continent = Kalimdor,
|
|
paths = BZ["Dire Maul"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Dire Maul"],
|
|
entrancePortal = { BZ["Feralas"], 66.7, 34.8 },
|
|
}
|
|
|
|
-- a.k.a. Capital Gardens
|
|
zones[BZ["Dire Maul - West"]] = {
|
|
low = 55,
|
|
high = 60,
|
|
continent = Kalimdor,
|
|
paths = BZ["Dire Maul"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Dire Maul"],
|
|
entrancePortal = { BZ["Feralas"], 60.3, 30.6 },
|
|
}
|
|
|
|
-- a.k.a. Gordok Commons
|
|
zones[BZ["Dire Maul - North"]] = {
|
|
low = 55,
|
|
high = 60,
|
|
continent = Kalimdor,
|
|
paths = BZ["Dire Maul"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Dire Maul"],
|
|
entrancePortal = { BZ["Feralas"], 62.5, 24.9 },
|
|
}
|
|
|
|
zones[BZ["Scholomance"]] = {
|
|
low = 58,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Western Plaguelands"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
fishing_low = 330,
|
|
fishing_high = 425,
|
|
entrancePortal = { BZ["Western Plaguelands"], 69.4, 72.8 },
|
|
}
|
|
|
|
-- consists of Main Gate and Service Entrance
|
|
zones[BZ["Stratholme"]] = {
|
|
low = 58,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Eastern Plaguelands"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
fishing_low = 330,
|
|
fishing_high = 425,
|
|
entrancePortal = { BZ["Eastern Plaguelands"], 30.8, 14.4 },
|
|
}
|
|
|
|
zones[BZ["Zul'Farrak"]] = {
|
|
low = 42,
|
|
high = 46,
|
|
continent = Kalimdor,
|
|
paths = BZ["Tanaris"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Tanaris"], 36, 11.7 },
|
|
}
|
|
|
|
-- consists of Detention Block and Upper City
|
|
zones[BZ["Blackrock Depths"]] = {
|
|
low = 52,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Molten Core"]] = true,
|
|
[BZ["Blackrock Mountain"]] = true,
|
|
},
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Blackrock Mountain"],
|
|
entrancePortal = { BZ["Searing Gorge"], 35.4, 84.4 },
|
|
}
|
|
|
|
-- a.k.a. Sunken Temple
|
|
zones[BZ["The Temple of Atal'Hakkar"]] = {
|
|
low = 50,
|
|
high = 56,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Swamp of Sorrows"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
fishing_low = 205,
|
|
fishing_high = 300,
|
|
entrancePortal = { BZ["Swamp of Sorrows"], 70, 54 },
|
|
}
|
|
|
|
zones[BZ["Blackrock Spire"]] = {
|
|
low = 55,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
paths = {
|
|
[BZ["Blackrock Mountain"]] = true,
|
|
[BZ["Blackwing Lair"]] = true,
|
|
},
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Blackrock Mountain"],
|
|
entrancePortal = { BZ["Burning Steppes"], 29.7, 37.5 },
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- The Burning Crusade Dungeons --------------------------------------
|
|
|
|
|
|
-- a.k.a The Escape From Durnholde
|
|
zones[BZ["Old Hillsbrad Foothills"]] = {
|
|
low = 66,
|
|
high = 70,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Caverns of Time"]] = true,
|
|
},
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Caverns of Time"],
|
|
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 },
|
|
}
|
|
|
|
-- a.k.a. Opening of the Dark Portal
|
|
zones[BZ["The Black Morass"]] = {
|
|
low = 67,
|
|
high = 70,
|
|
continent = Kalimdor,
|
|
paths = {
|
|
[BZ["Caverns of Time"]] = true,
|
|
},
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Caverns of Time"],
|
|
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 },
|
|
}
|
|
|
|
zones[BZ["Karazhan"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Deadwind Pass"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Deadwind Pass"], 40.9, 73.2 },
|
|
}
|
|
|
|
zones[BZ["Zul'Aman"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Ghostlands"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Ghostlands"], 77.7, 63.2 },
|
|
}
|
|
|
|
-- ---
|
|
|
|
zones[BZ["Hellfire Ramparts"]] = {
|
|
low = 60,
|
|
high = 62,
|
|
continent = Outland,
|
|
paths = BZ["Hellfire Citadel"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Hellfire Citadel"],
|
|
entrancePortal = { BZ["Hellfire Peninsula"], 47.8, 53.3 },
|
|
}
|
|
|
|
zones[BZ["The Blood Furnace"]] = {
|
|
low = 61,
|
|
high = 63,
|
|
continent = Outland,
|
|
paths = BZ["Hellfire Citadel"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Hellfire Citadel"],
|
|
entrancePortal = { BZ["Hellfire Peninsula"], 46.1, 51.8 },
|
|
}
|
|
|
|
zones[BZ["The Shattered Halls"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Hellfire Citadel"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Hellfire Citadel"],
|
|
entrancePortal = { BZ["Hellfire Peninsula"], 47.8, 51.1 },
|
|
}
|
|
|
|
-- ---
|
|
|
|
zones[BZ["The Slave Pens"]] = {
|
|
low = 62,
|
|
high = 64,
|
|
continent = Outland,
|
|
paths = BZ["Coilfang Reservoir"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Coilfang Reservoir"],
|
|
entrancePortal = { BZ["Zangarmarsh"], 49.0, 36.0 },
|
|
}
|
|
|
|
zones[BZ["The Underbog"]] = {
|
|
low = 63,
|
|
high = 65,
|
|
continent = Outland,
|
|
paths = BZ["Coilfang Reservoir"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Coilfang Reservoir"],
|
|
entrancePortal = { BZ["Zangarmarsh"], 54.0, 43.0 },
|
|
}
|
|
|
|
zones[BZ["The Steamvault"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Coilfang Reservoir"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Coilfang Reservoir"],
|
|
entrancePortal = { BZ["Zangarmarsh"], 50.0, 33.0 },
|
|
}
|
|
|
|
-- ---
|
|
|
|
zones[BZ["Auchenai Crypts"]] = {
|
|
low = 65,
|
|
high = 67,
|
|
continent = Outland,
|
|
paths = BZ["Auchindoun"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Auchindoun"],
|
|
entrancePortal = { BZ["Terokkar Forest"], 35, 65.8 },
|
|
}
|
|
|
|
zones[BZ["Shadow Labyrinth"]] = {
|
|
low = 70,
|
|
high = 72,
|
|
continent = Outland,
|
|
paths = BZ["Auchindoun"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Auchindoun"],
|
|
entrancePortal = { BZ["Terokkar Forest"], 39.6, 65.5 },
|
|
}
|
|
|
|
zones[BZ["Sethekk Halls"]] = {
|
|
low = 67,
|
|
high = 69,
|
|
continent = Outland,
|
|
paths = BZ["Auchindoun"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Auchindoun"],
|
|
entrancePortal = { BZ["Terokkar Forest"], 43.4, 65.4 },
|
|
}
|
|
|
|
zones[BZ["Mana-Tombs"]] = {
|
|
low = 64,
|
|
high = 66,
|
|
continent = Outland,
|
|
paths = BZ["Auchindoun"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Auchindoun"],
|
|
entrancePortal = { BZ["Terokkar Forest"], 39.2, 58.5 },
|
|
}
|
|
|
|
-- ---
|
|
|
|
zones[BZ["The Mechanar"]] = {
|
|
low = 69,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Netherstorm"],
|
|
-- paths = BZ["Tempest Keep"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
-- complex = BZ["Tempest Keep"],
|
|
entrancePortal = { BZ["Netherstorm"], 76.5, 65.1 },
|
|
}
|
|
|
|
zones[BZ["The Botanica"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Netherstorm"],
|
|
-- paths = BZ["Tempest Keep"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
-- complex = BZ["Tempest Keep"],
|
|
entrancePortal = { BZ["Netherstorm"], 76.5, 65.1 },
|
|
}
|
|
|
|
zones[BZ["The Arcatraz"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Netherstorm"],
|
|
-- paths = BZ["Tempest Keep"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
-- complex = BZ["Tempest Keep"],
|
|
entrancePortal = { BZ["Netherstorm"], 76.5, 65.1 },
|
|
}
|
|
|
|
-- TBC 2.4 dungeon
|
|
zones[BZ["Magister's Terrace"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Isle of Quel'Danas"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Isle of Quel'Danas"], 61.3, 30.9 },
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Wrath of the Lich King Dungeons
|
|
|
|
zones[BZ["Utgarde Keep"]] = {
|
|
low = 69,
|
|
high = 72,
|
|
continent = Northrend,
|
|
paths = BZ["Howling Fjord"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Howling Fjord"], 57.30, 46.84 },
|
|
}
|
|
|
|
zones[BZ["Utgarde Pinnacle"]] = {
|
|
low = 79,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Howling Fjord"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Howling Fjord"], 57.25, 46.60 },
|
|
}
|
|
|
|
zones[BZ["The Nexus"]] = {
|
|
low = 71,
|
|
high = 73,
|
|
continent = Northrend,
|
|
paths = BZ["Coldarra"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Coldarra"],
|
|
entrancePortal = { BZ["Borean Tundra"], 27.50, 26.03 },
|
|
}
|
|
|
|
zones[BZ["The Oculus"]] = {
|
|
low = 79,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Coldarra"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
complex = BZ["Coldarra"],
|
|
entrancePortal = { BZ["Borean Tundra"], 27.52, 26.67 },
|
|
}
|
|
|
|
zones[BZ["Azjol-Nerub"]] = {
|
|
low = 72,
|
|
high = 74,
|
|
continent = Northrend,
|
|
paths = BZ["Dragonblight"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Dragonblight"], 26.01, 50.83 },
|
|
}
|
|
|
|
zones[BZ["Ahn'kahet: The Old Kingdom"]] = {
|
|
low = 73,
|
|
high = 75,
|
|
continent = Northrend,
|
|
paths = BZ["Dragonblight"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Dragonblight"], 28.49, 51.73 },
|
|
}
|
|
|
|
zones[BZ["Drak'Tharon Keep"]] = {
|
|
low = 74,
|
|
high = 76,
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["Grizzly Hills"]] = true,
|
|
[BZ["Zul'Drak"]] = true,
|
|
},
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Zul'Drak"], 28.53, 86.93 },
|
|
}
|
|
|
|
zones[BZ["Gundrak"]] = {
|
|
low = 76,
|
|
high = 78,
|
|
continent = Northrend,
|
|
paths = BZ["Zul'Drak"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
fishing_low = 350, -- TODO: check
|
|
fishing_high = 475,
|
|
entrancePortal = { BZ["Zul'Drak"], 76.14, 21.00 },
|
|
}
|
|
|
|
zones[BZ["Halls of Stone"]] = {
|
|
low = 77,
|
|
high = 79,
|
|
continent = Northrend,
|
|
paths = BZ["The Storm Peaks"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["The Storm Peaks"], 39.52, 26.91 },
|
|
}
|
|
|
|
zones[BZ["Halls of Lightning"]] = {
|
|
low = 79,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["The Storm Peaks"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["The Storm Peaks"], 45.38, 21.37 },
|
|
}
|
|
|
|
zones[BZ["The Violet Hold"]] = {
|
|
low = 75,
|
|
high = 77,
|
|
continent = Northrend,
|
|
paths = BZ["Dalaran"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Dalaran"], 66.78, 68.19 },
|
|
}
|
|
|
|
zones[BZ["Trial of the Champion"]] = {
|
|
low = 79,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Icecrown"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Icecrown"], 74.18, 20.45 },
|
|
}
|
|
|
|
zones[BZ["The Forge of Souls"]] = {
|
|
low = 79,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Icecrown"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Icecrown"], 52.60, 89.35 },
|
|
}
|
|
|
|
zones[BZ["Pit of Saron"]] = {
|
|
low = 79,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Icecrown"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
fishing_low = 475, -- TODO: check
|
|
fishing_high = 550,
|
|
entrancePortal = { BZ["Icecrown"], 52.60, 89.35 },
|
|
}
|
|
|
|
zones[BZ["Halls of Reflection"]] = {
|
|
low = 79,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Icecrown"],
|
|
groupSize = 5,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Icecrown"], 52.60, 89.35 },
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Classic Raids -----------------------------
|
|
|
|
zones[BZ["Zul'Gurub"]] = {
|
|
low = 60,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Stranglethorn Vale"],
|
|
groupSize = 20,
|
|
type = "Instance",
|
|
fishing_low = 205,
|
|
fishing_high = 330,
|
|
entrancePortal = { BZ["Stranglethorn Vale"], 52.2, 17.1 },
|
|
}
|
|
|
|
zones[BZ["Blackwing Lair"]] = {
|
|
low = 60,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Blackrock Mountain"],
|
|
groupSize = 40,
|
|
type = "Instance",
|
|
complex = BZ["Blackrock Mountain"],
|
|
entrancePortal = { BZ["Burning Steppes"], 29.7, 37.5 },
|
|
}
|
|
|
|
zones[BZ["Molten Core"]] = {
|
|
low = 60,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Blackrock Mountain"],
|
|
groupSize = 40,
|
|
type = "Instance",
|
|
complex = BZ["Blackrock Mountain"],
|
|
entrancePortal = { BZ["Searing Gorge"], 35.4, 84.4 },
|
|
}
|
|
|
|
zones[BZ["Ahn'Qiraj Temple"]] = {
|
|
low = 60,
|
|
high = 60,
|
|
continent = Kalimdor,
|
|
paths = BZ["Ahn'Qiraj: The Fallen Kingdom"],
|
|
groupSize = 40,
|
|
type = "Instance",
|
|
complex = BZ["Ahn'Qiraj: The Fallen Kingdom"],
|
|
entrancePortal = { BZ["Ahn'Qiraj: The Fallen Kingdom"], 46.6, 7.4 }, TODO
|
|
}
|
|
|
|
zones[BZ["Ruins of Ahn'Qiraj"]] = {
|
|
low = 60,
|
|
high = 60,
|
|
continent = Kalimdor,
|
|
paths = BZ["Ahn'Qiraj: The Fallen Kingdom"],
|
|
groupSize = 20,
|
|
type = "Instance",
|
|
complex = BZ["Ahn'Qiraj: The Fallen Kingdom"],
|
|
entrancePortal = { BZ["Ahn'Qiraj: The Fallen Kingdom"], 58.9, 14.3 }, TODO
|
|
}
|
|
|
|
zones[BZ["Onyxia's Lair"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Kalimdor,
|
|
paths = BZ["Dustwallow Marsh"],
|
|
groupSize = 40,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Dustwallow Marsh"], 52, 76 },
|
|
}
|
|
|
|
zones[BZ["Naxxramas"]] = {
|
|
low = 60,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Eastern Plaguelands"],
|
|
groupSize = 40,
|
|
type = "Instance",
|
|
fishing_high = 1, -- acid
|
|
entrancePortal = { BZ["Eastern Plaguelands"], 87.30, 51.00 },
|
|
}
|
|
|
|
|
|
-- The Burning Crusade Raids --------------------------------------
|
|
|
|
zones[BZ["Magtheridon's Lair"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Hellfire Citadel"],
|
|
groupSize = 25,
|
|
type = "Instance",
|
|
complex = BZ["Hellfire Citadel"],
|
|
entrancePortal = { BZ["Hellfire Peninsula"], 46.8, 54.9 },
|
|
}
|
|
|
|
zones[BZ["Serpentshrine Cavern"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Coilfang Reservoir"],
|
|
groupSize = 25,
|
|
type = "Instance",
|
|
complex = BZ["Coilfang Reservoir"],
|
|
entrancePortal = { BZ["Zangarmarsh"], 50.2, 40.8 },
|
|
}
|
|
|
|
zones[BZ["Gruul's Lair"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Blade's Edge Mountains"],
|
|
groupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Blade's Edge Mountains"], 68, 24 },
|
|
}
|
|
|
|
zones[BZ["Black Temple"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Shadowmoon Valley"],
|
|
groupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Shadowmoon Valley"], 77.7, 43.7 },
|
|
}
|
|
|
|
--zones[BZ["The Eye"]] = {
|
|
zones[BZ["Tempest Keep"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
-- paths = BZ["Tempest Keep"],
|
|
paths = BZ["Netherstorm"],
|
|
groupSize = 25,
|
|
type = "Instance",
|
|
-- complex = BZ["Tempest Keep"],
|
|
entrancePortal = { BZ["Netherstorm"], 76.5, 65.1 },
|
|
}
|
|
|
|
-- a.k.a The Battle for Mount Hyjal
|
|
zones[BZ["Hyjal Summit"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Kalimdor,
|
|
paths = BZ["Caverns of Time"],
|
|
groupSize = 25,
|
|
type = "Instance",
|
|
complex = BZ["Caverns of Time"],
|
|
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 },
|
|
}
|
|
|
|
|
|
|
|
|
|
-- TBC 2.4 raid
|
|
zones[BZ["Sunwell Plateau"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Isle of Quel'Danas"],
|
|
groupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Isle of Quel'Danas"], 44.3, 45.7 },
|
|
}
|
|
|
|
|
|
-- Wrath of the Lich King Raids
|
|
|
|
zones[BZ["The Eye of Eternity"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Coldarra"],
|
|
groupSize = 10,
|
|
altGroupSize = 25,
|
|
type = "Instance",
|
|
complex = BZ["Coldarra"],
|
|
entrancePortal = { BZ["Borean Tundra"], 27.54, 26.68 },
|
|
}
|
|
|
|
zones[BZ["Naxxramas"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Dragonblight"],
|
|
groupSize = 10,
|
|
altGroupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Dragonblight"], 87.30, 51.00 },
|
|
}
|
|
|
|
zones[BZ["The Obsidian Sanctum"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Dragonblight"],
|
|
groupSize = 10,
|
|
altGroupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Dragonblight"], 60.00, 57.00 },
|
|
}
|
|
|
|
zones[BZ["Ulduar"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["The Storm Peaks"],
|
|
groupSize = 10,
|
|
altGroupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["The Storm Peaks"], 41.56, 17.76 },
|
|
fishing_min = 550,
|
|
}
|
|
|
|
zones[BZ["Trial of the Crusader"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Icecrown"],
|
|
groupSize = 10,
|
|
altGroupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Icecrown"], 75.07, 21.80 },
|
|
}
|
|
|
|
zones[BZ["Icecrown Citadel"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Icecrown"],
|
|
groupSize = 10,
|
|
altGroupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Icecrown"], 53.86, 87.27 },
|
|
}
|
|
|
|
zones[BZ["Vault of Archavon"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Wintergrasp"],
|
|
groupSize = 10,
|
|
altGroupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Wintergrasp"], 50, 11.2 },
|
|
}
|
|
|
|
zones[BZ["The Ruby Sanctum"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = BZ["Dragonblight"],
|
|
groupSize = 10,
|
|
altGroupSize = 25,
|
|
type = "Instance",
|
|
entrancePortal = { BZ["Dragonblight"], 61.00, 53.00 },
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
-- Classic Battlegrounds --
|
|
|
|
zones[BZ["Arathi Basin"]] = {
|
|
low = 10,
|
|
high = MAX_PLAYER_LEVEL,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Arathi Highlands"],
|
|
groupSize = 15,
|
|
type = "Battleground",
|
|
texture = "ArathiBasin",
|
|
}
|
|
|
|
zones[BZ["Warsong Gulch"]] = {
|
|
low = 10,
|
|
high = MAX_PLAYER_LEVEL,
|
|
continent = Kalimdor,
|
|
paths = isHorde and BZ["The Barrens"] or BZ["Ashenvale"],
|
|
groupSize = 10,
|
|
type = "Battleground",
|
|
texture = "WarsongGulch",
|
|
}
|
|
|
|
zones[BZ["Alterac Valley"]] = {
|
|
low = 51,
|
|
high = MAX_PLAYER_LEVEL,
|
|
continent = Eastern_Kingdoms,
|
|
paths = BZ["Hillsbrad Foothills"],
|
|
groupSize = 40,
|
|
type = "Battleground",
|
|
texture = "AlteracValley",
|
|
}
|
|
|
|
-- The Burning Crusade Battlegrounds --------------------------------------
|
|
|
|
zones[BZ["Eye of the Storm"]] = {
|
|
low = 61,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Netherstorm"],
|
|
groupSize = 25,
|
|
type = "Battleground",
|
|
texture = "NetherstormArena",
|
|
}
|
|
|
|
|
|
|
|
-- Wrath of the Lich King Battelgrounds
|
|
|
|
zones[BZ["Strand of the Ancients"]] = {
|
|
low = 65,
|
|
high = 80,
|
|
continent = Northrend,
|
|
groupSize = 15,
|
|
type = "Battleground",
|
|
texture = "StrandoftheAncients",
|
|
}
|
|
|
|
zones[BZ["Isle of Conquest"]] = {
|
|
low = 75,
|
|
high = 80,
|
|
continent = Northrend,
|
|
groupSize = 40,
|
|
type = "Battleground",
|
|
texture = "IsleofConquest",
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- The Burning Crusade Arenas --------------------------------------
|
|
|
|
zones[BZ["Blade's Edge Arena"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Blade's Edge Mountains"],
|
|
type = "Arena",
|
|
}
|
|
|
|
zones[BZ["Nagrand Arena"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Outland,
|
|
paths = BZ["Nagrand"],
|
|
type = "Arena",
|
|
}
|
|
|
|
zones[BZ["Ruins of Lordaeron"]] = {
|
|
low = 70,
|
|
high = 70,
|
|
continent = Kalimdor,
|
|
paths = BZ["Undercity"],
|
|
type = "Arena",
|
|
}
|
|
|
|
|
|
-- Wrath of the Lich King Arenas
|
|
|
|
-- zones[BZ["Dalaran Arena"]] = {
|
|
-- low = 80,
|
|
-- high = 80,
|
|
-- continent = Northrend,
|
|
-- type = "Arena",
|
|
-- }
|
|
|
|
zones[BZ["The Ring of Valor"]] = {
|
|
low = 80,
|
|
high = 80,
|
|
continent = Kalimdor,
|
|
type = "Arena",
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Classic Complexes ---------------------------------------------
|
|
|
|
zones[BZ["Dire Maul"]] = {
|
|
low = 36,
|
|
high = 60,
|
|
continent = Kalimdor,
|
|
instances = {
|
|
[BZ["Dire Maul - East"]] = true,
|
|
[BZ["Dire Maul - North"]] = true,
|
|
[BZ["Dire Maul - West"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Feralas"]] = true,
|
|
[BZ["Dire Maul - East"]] = true,
|
|
[BZ["Dire Maul - North"]] = true,
|
|
[BZ["Dire Maul - West"]] = true,
|
|
},
|
|
type = "Complex",
|
|
}
|
|
|
|
zones[BZ["Blackrock Mountain"]] = {
|
|
low = 52,
|
|
high = 60,
|
|
continent = Eastern_Kingdoms,
|
|
instances = {
|
|
[BZ["Blackrock Depths"]] = true,
|
|
[BZ["Blackwing Lair"]] = true,
|
|
[BZ["Molten Core"]] = true,
|
|
[BZ["Blackrock Spire"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Burning Steppes"]] = true,
|
|
[BZ["Searing Gorge"]] = true,
|
|
[BZ["Blackwing Lair"]] = true,
|
|
[BZ["Molten Core"]] = true,
|
|
[BZ["Blackrock Depths"]] = true,
|
|
[BZ["Blackrock Spire"]] = true,
|
|
},
|
|
type = "Complex",
|
|
fishing_high = 1, -- lava
|
|
}
|
|
|
|
|
|
-- The Burning Crusade complexes -------------------------------------
|
|
|
|
|
|
zones[BZ["Ahn'Qiraj: The Fallen Kingdom"]] = {
|
|
low = 60,
|
|
high = 63,
|
|
continent = Kalimdor,
|
|
instances = {
|
|
[BZ["Ahn'Qiraj Temple"]] = true,
|
|
[BZ["Ruins of Ahn'Qiraj"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Silithus"]] = true,
|
|
[BZ["Ahn'Qiraj Temple"]] = true,
|
|
[BZ["Ruins of Ahn'Qiraj"]] = true,
|
|
},
|
|
type = "Complex",
|
|
}
|
|
|
|
-- No UiMapID available?
|
|
zones[BZ["Caverns of Time"]] = {
|
|
low = 66,
|
|
high = 70,
|
|
continent = Kalimdor,
|
|
instances = {
|
|
[BZ["Old Hillsbrad Foothills"]] = true,
|
|
[BZ["The Black Morass"]] = true,
|
|
[BZ["Hyjal Summit"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Tanaris"]] = true,
|
|
[BZ["Old Hillsbrad Foothills"]] = true,
|
|
[BZ["The Black Morass"]] = true,
|
|
[BZ["Hyjal Summit"]] = true,
|
|
},
|
|
type = "Complex",
|
|
}
|
|
|
|
|
|
-- No UiMapID available?
|
|
zones[BZ["Hellfire Citadel"]] = {
|
|
low = 60,
|
|
high = 70,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["The Blood Furnace"]] = true,
|
|
[BZ["Hellfire Ramparts"]] = true,
|
|
[BZ["Magtheridon's Lair"]] = true,
|
|
[BZ["The Shattered Halls"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Hellfire Peninsula"]] = true,
|
|
[BZ["The Blood Furnace"]] = true,
|
|
[BZ["Hellfire Ramparts"]] = true,
|
|
[BZ["Magtheridon's Lair"]] = true,
|
|
[BZ["The Shattered Halls"]] = true,
|
|
},
|
|
type = "Complex",
|
|
}
|
|
|
|
-- No UiMapID available?
|
|
zones[BZ["Coilfang Reservoir"]] = {
|
|
low = 62,
|
|
high = 70,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["The Underbog"]] = true,
|
|
[BZ["Serpentshrine Cavern"]] = true,
|
|
[BZ["The Steamvault"]] = true,
|
|
[BZ["The Slave Pens"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Zangarmarsh"]] = true,
|
|
[BZ["The Underbog"]] = true,
|
|
[BZ["Serpentshrine Cavern"]] = true,
|
|
[BZ["The Steamvault"]] = true,
|
|
[BZ["The Slave Pens"]] = true,
|
|
},
|
|
type = "Complex",
|
|
}
|
|
|
|
-- No UiMapID available?
|
|
-- inner circle: "Ring of Observance"
|
|
zones[BZ["Auchindoun"]] = {
|
|
low = 64,
|
|
high = 70,
|
|
continent = Outland,
|
|
instances = {
|
|
[BZ["Auchenai Crypts"]] = true,
|
|
[BZ["Shadow Labyrinth"]] = true,
|
|
[BZ["Sethekk Halls"]] = true,
|
|
[BZ["Mana-Tombs"]] = true,
|
|
},
|
|
paths = {
|
|
[BZ["Terokkar Forest"]] = true,
|
|
[BZ["Auchenai Crypts"]] = true,
|
|
[BZ["Shadow Labyrinth"]] = true,
|
|
[BZ["Sethekk Halls"]] = true,
|
|
[BZ["Mana-Tombs"]] = true,
|
|
},
|
|
type = "Complex",
|
|
}
|
|
|
|
-- Had to remove the complex 'Tempest Keep' because of the 'The Eye' instance actually has same name
|
|
-- zones[BZ["Tempest Keep"]] = {
|
|
-- low = 67,
|
|
-- high = 70,
|
|
-- continent = Outland,
|
|
-- instances = {
|
|
-- [BZ["The Mechanar"]] = true,
|
|
-- [BZ["The Eye"]] = true,
|
|
-- [BZ["The Botanica"]] = true,
|
|
-- [BZ["The Arcatraz"]] = true,
|
|
-- },
|
|
-- paths = {
|
|
-- [BZ["Netherstorm"]] = true,
|
|
-- [BZ["The Mechanar"]] = true,
|
|
-- [BZ["The Eye"]] = true,
|
|
-- [BZ["The Botanica"]] = true,
|
|
-- [BZ["The Arcatraz"]] = true,
|
|
-- },
|
|
-- type = "Complex",
|
|
-- }
|
|
|
|
|
|
|
|
-- Wrath of the Lich King Complexes
|
|
|
|
zones[BZ["Coldarra"]] = {
|
|
low = 69,
|
|
high = 80,
|
|
continent = Northrend,
|
|
paths = {
|
|
[BZ["Borean Tundra"]] = true,
|
|
[BZ["The Nexus"]] = true,
|
|
[BZ["The Oculus"]] = true,
|
|
[BZ["The Eye of Eternity"]] = true,
|
|
},
|
|
instances = {
|
|
[BZ["The Nexus"]] = true,
|
|
[BZ["The Oculus"]] = true,
|
|
[BZ["The Eye of Eternity"]] = true,
|
|
},
|
|
type = "Complex",
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
-- HERB TRANSLATIONS --
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
-- Thanks to GatherMate2 Classic
|
|
local herbTranslations = {
|
|
koKR = {
|
|
["Adder's Tongue"] = "얼레지 꽃",
|
|
["Ancient Lichen"] = "고대 이끼",
|
|
["Arthas' Tears"] = "아서스의 눈물",
|
|
["Black Lotus"] = "검은 연꽃",
|
|
["Blindweed"] = "실명초",
|
|
["Briarthorn"] = "찔레가시",
|
|
["Bruiseweed"] = "생채기풀",
|
|
["Dreamfoil"] = "꿈풀",
|
|
["Dreaming Glory"] = "꿈초롱이",
|
|
["Earthroot"] = "뱀뿌리",
|
|
["Fadeleaf"] = "미명초잎",
|
|
["Felweed"] = "지옥풀",
|
|
["Firebloom"] = "화염초",
|
|
["Firethorn"] = "화염가시풀",
|
|
["Frost Lotus"] = "서리 연꽃",
|
|
["Frozen Herb"] = "얼어붙은 약초",
|
|
["Ghost Mushroom"] = "유령버섯",
|
|
["Goldclover"] = "황금토끼풀",
|
|
["Golden Sansam"] = "황금 산삼",
|
|
["Goldthorn"] = "황금가시",
|
|
["Grave Moss"] = "무덤이끼",
|
|
["Gromsblood"] = "그롬의 피",
|
|
["Icecap"] = "얼음송이",
|
|
["Icethorn"] = "얼음가시",
|
|
["Khadgar's Whisker"] = "카드가의 수염",
|
|
["Kingsblood"] = "왕꽃잎풀",
|
|
["Lichbloom"] = "시체꽃",
|
|
["Liferoot"] = "생명의 뿌리",
|
|
["Mageroyal"] = "마법초",
|
|
["Mana Thistle"] = "마나 엉겅퀴",
|
|
["Mountain Silversage"] = "은초롱이",
|
|
["Netherbloom"] = "황천꽃",
|
|
["Nightmare Vine"] = "악몽의 덩굴",
|
|
["Peacebloom"] = "평온초",
|
|
["Plaguebloom"] = "역병초",
|
|
["Purple Lotus"] = "보라 연꽃",
|
|
["Ragveil"] = "가림막이버섯",
|
|
["Silverleaf"] = "은엽수 덤불",
|
|
["Stranglekelp"] = "갈래물풀",
|
|
["Sungrass"] = "태양풀",
|
|
["Talandra's Rose"] = "탈란드라의 장미",
|
|
["Terocone"] = "테로열매",
|
|
["Tiger Lily"] = "참나리",
|
|
["Wild Steelbloom"] = "야생 철쭉",
|
|
["Wintersbite"] = "겨울서리풀",
|
|
},
|
|
deDE = {
|
|
["Adder's Tongue"] = "Schlangenzunge",
|
|
["Ancient Lichen"] = "Urflechte",
|
|
["Arthas' Tears"] = "Arthas’ Tränen",
|
|
["Black Lotus"] = "Schwarzer Lotus",
|
|
["Blindweed"] = "Blindkraut",
|
|
["Briarthorn"] = "Wilddornrose",
|
|
["Bruiseweed"] = "Beulengras",
|
|
["Dreamfoil"] = "Traumblatt",
|
|
["Dreaming Glory"] = "Traumwinde",
|
|
["Earthroot"] = "Erdwurzel",
|
|
["Fadeleaf"] = "Blassblatt",
|
|
["Felweed"] = "Teufelsgras",
|
|
["Firebloom"] = "Feuerblüte",
|
|
["Firethorn"] = "Feuerdorn",
|
|
["Frost Lotus"] = "Frostlotus",
|
|
["Frozen Herb"] = "Gefrorenes Kraut",
|
|
["Ghost Mushroom"] = "Geisterpilz",
|
|
["Goldclover"] = "Goldklee",
|
|
["Golden Sansam"] = "Goldener Sansam",
|
|
["Goldthorn"] = "Golddorn",
|
|
["Grave Moss"] = "Grabmoos",
|
|
["Gromsblood"] = "Gromsblut",
|
|
["Icecap"] = "Eiskappe",
|
|
["Icethorn"] = "Eisdorn",
|
|
["Khadgar's Whisker"] = "Khadgars Schnurrbart",
|
|
["Kingsblood"] = "Königsblut",
|
|
["Lichbloom"] = "Lichblüte",
|
|
["Liferoot"] = "Lebenswurz",
|
|
["Mageroyal"] = "Maguskönigskraut",
|
|
["Mana Thistle"] = "Manadistel",
|
|
["Mountain Silversage"] = "Bergsilbersalbei",
|
|
["Netherbloom"] = "Netherblüte",
|
|
["Nightmare Vine"] = "Alptraumranke",
|
|
["Peacebloom"] = "Friedensblume",
|
|
["Plaguebloom"] = "Pestblüte",
|
|
["Purple Lotus"] = "Lila Lotus",
|
|
["Ragveil"] = "Zottelkappe",
|
|
["Silverleaf"] = "Silberblatt",
|
|
["Stranglekelp"] = "Würgetang",
|
|
["Sungrass"] = "Sonnengras",
|
|
["Talandra's Rose"] = "Talandras Rose",
|
|
["Terocone"] = "Terozapfen",
|
|
["Tiger Lily"] = "Tigerlilie",
|
|
["Wild Steelbloom"] = "Wildstahlblume",
|
|
["Wintersbite"] = "Winterbiss",
|
|
},
|
|
frFR = {
|
|
["Adder's Tongue"] = "Langue de serpent",
|
|
["Ancient Lichen"] = "Lichen ancien",
|
|
["Arthas' Tears"] = "Larmes d'Arthas",
|
|
["Black Lotus"] = "Lotus noir",
|
|
["Blindweed"] = "Aveuglette",
|
|
["Briarthorn"] = "Eglantine",
|
|
["Bruiseweed"] = "Doulourante",
|
|
["Dreamfoil"] = "Feuillerêve",
|
|
["Dreaming Glory"] = "Glaurier",
|
|
["Earthroot"] = "Terrestrine",
|
|
["Fadeleaf"] = "Pâlerette",
|
|
["Felweed"] = "Gangrelette",
|
|
["Firebloom"] = "Fleur de feu",
|
|
["Firethorn"] = "Epine de feu",
|
|
["Frost Lotus"] = "Lotus givré",
|
|
["Frozen Herb"] = "Herbe gelée",
|
|
["Ghost Mushroom"] = "Champignon fantôme",
|
|
["Goldclover"] = "Trèfle doré",
|
|
["Golden Sansam"] = "Sansam doré",
|
|
["Goldthorn"] = "Dorépine",
|
|
["Grave Moss"] = "Tombeline",
|
|
["Gromsblood"] = "Gromsang",
|
|
["Icecap"] = "Calot de glace",
|
|
["Icethorn"] = "Glacépine",
|
|
["Khadgar's Whisker"] = "Moustache de Khadgar",
|
|
["Kingsblood"] = "Sang-royal",
|
|
["Lichbloom"] = "Fleur-de-liche",
|
|
["Liferoot"] = "Vietérule",
|
|
["Mageroyal"] = "Mage royal",
|
|
["Mana Thistle"] = "Chardon de mana",
|
|
["Mountain Silversage"] = "Sauge-argent des montagnes",
|
|
["Netherbloom"] = "Néantine",
|
|
["Nightmare Vine"] = "Cauchemardelle",
|
|
["Peacebloom"] = "Pacifique",
|
|
["Plaguebloom"] = "Chagrinelle",
|
|
["Purple Lotus"] = "Lotus pourpre",
|
|
["Ragveil"] = "Voile-misère",
|
|
["Silverleaf"] = "Feuillargent",
|
|
["Stranglekelp"] = "Etouffante",
|
|
["Sungrass"] = "Soleillette",
|
|
["Talandra's Rose"] = "Rose de Talandra",
|
|
["Terocone"] = "Terocône",
|
|
["Tiger Lily"] = "Lys tigré",
|
|
["Wild Steelbloom"] = "Aciérite sauvage",
|
|
["Wintersbite"] = "Hivernale",
|
|
},
|
|
esES = {
|
|
["Adder's Tongue"] = "Lengua de víboris",
|
|
["Ancient Lichen"] = "Liquen Antiguo",
|
|
["Arthas' Tears"] = "Lágrimas de Arthas",
|
|
["Black Lotus"] = "Loto negro",
|
|
["Blindweed"] = "Carolina",
|
|
["Briarthorn"] = "Brezospina",
|
|
["Bruiseweed"] = "Hierba cardenal",
|
|
["Dreamfoil"] = "Hojasueño",
|
|
["Dreaming Glory"] = "Gloria de ensueño",
|
|
["Earthroot"] = "Raíz de tierra",
|
|
["Fadeleaf"] = "Pálida",
|
|
["Felweed"] = "Hierba vil",
|
|
["Firebloom"] = "Flor de fuego",
|
|
["Firethorn"] = "Espino de fuego",
|
|
["Frost Lotus"] = "Loto de escarcha",
|
|
["Frozen Herb"] = "Hierba congelada",
|
|
["Ghost Mushroom"] = "Champiñón fantasma",
|
|
["Goldclover"] = "Trébol de oro",
|
|
["Golden Sansam"] = "Sansam dorado",
|
|
["Goldthorn"] = "Espina de oro",
|
|
["Grave Moss"] = "Musgo de tumba",
|
|
["Gromsblood"] = "Gromsanguina",
|
|
["Icecap"] = "Setelo",
|
|
["Icethorn"] = "Espina de hielo",
|
|
["Khadgar's Whisker"] = "Mostacho de Khadgar",
|
|
["Kingsblood"] = "Sangrerregia",
|
|
["Lichbloom"] = "Flor exánime",
|
|
["Liferoot"] = "Vidarraíz",
|
|
["Mageroyal"] = "Marregal",
|
|
["Mana Thistle"] = "Cardo de maná",
|
|
["Mountain Silversage"] = "Salviargenta de montaña",
|
|
["Netherbloom"] = "Flor abisal",
|
|
["Nightmare Vine"] = "Vid pesadilla",
|
|
["Peacebloom"] = "Flor de paz",
|
|
["Plaguebloom"] = "Flor de peste",
|
|
["Purple Lotus"] = "Loto cárdeno",
|
|
["Ragveil"] = "Velada",
|
|
["Silverleaf"] = "Hojaplata",
|
|
["Stranglekelp"] = "Alga estranguladora",
|
|
["Sungrass"] = "Solea",
|
|
["Talandra's Rose"] = "Rosa de Talandra",
|
|
["Terocone"] = "Teropiña",
|
|
["Tiger Lily"] = "Lirio atigrado",
|
|
["Wild Steelbloom"] = "Acérita salvaje",
|
|
["Wintersbite"] = "Ivernalia",
|
|
},
|
|
esMX = {
|
|
["Adder's Tongue"] = "Lengua de víboris",
|
|
["Ancient Lichen"] = "Liquen Antiguo",
|
|
["Arthas' Tears"] = "Lágrimas de Arthas",
|
|
["Black Lotus"] = "Loto negro",
|
|
["Blindweed"] = "Carolina",
|
|
["Briarthorn"] = "Brezospina",
|
|
["Bruiseweed"] = "Hierba cardenal",
|
|
["Dreamfoil"] = "Hojasueño",
|
|
["Dreaming Glory"] = "Gloria de ensueño",
|
|
["Earthroot"] = "Raíz de tierra",
|
|
["Fadeleaf"] = "Pálida",
|
|
["Felweed"] = "Hierba vil",
|
|
["Firebloom"] = "Flor de fuego",
|
|
["Firethorn"] = "Espino de fuego",
|
|
["Frost Lotus"] = "Loto de escarcha",
|
|
["Frozen Herb"] = "Hierba congelada",
|
|
["Ghost Mushroom"] = "Champiñón fantasma",
|
|
["Goldclover"] = "Trébol de oro",
|
|
["Golden Sansam"] = "Sansam dorado",
|
|
["Goldthorn"] = "Espina de oro",
|
|
["Grave Moss"] = "Musgo de tumba",
|
|
["Gromsblood"] = "Gromsanguina",
|
|
["Icecap"] = "Setelo",
|
|
["Icethorn"] = "Espina de hielo",
|
|
["Khadgar's Whisker"] = "Mostacho de Khadgar",
|
|
["Kingsblood"] = "Sangrerregia",
|
|
["Lichbloom"] = "Flor exánime",
|
|
["Liferoot"] = "Vidarraíz",
|
|
["Mageroyal"] = "Marregal",
|
|
["Mana Thistle"] = "Cardo de maná",
|
|
["Mountain Silversage"] = "Salviargenta de montaña",
|
|
["Netherbloom"] = "Flor abisal",
|
|
["Nightmare Vine"] = "Vid pesadilla",
|
|
["Peacebloom"] = "Flor de paz",
|
|
["Plaguebloom"] = "Flor de peste",
|
|
["Purple Lotus"] = "Loto cárdeno",
|
|
["Ragveil"] = "Velada",
|
|
["Silverleaf"] = "Hojaplata",
|
|
["Stranglekelp"] = "Alga estranguladora",
|
|
["Sungrass"] = "Solea",
|
|
["Talandra's Rose"] = "Rosa de Talandra",
|
|
["Terocone"] = "Teropiña",
|
|
["Tiger Lily"] = "Lirio atigrado",
|
|
["Wild Steelbloom"] = "Acérita salvaje",
|
|
["Wintersbite"] = "Ivernalia",
|
|
},
|
|
itIT = {
|
|
["Adder's Tongue"] = "Lingua di vipera",
|
|
["Ancient Lichen"] = "Lichene Antico",
|
|
["Arthas' Tears"] = "Lacrima di Arthas",
|
|
["Black Lotus"] = "Fiore di Loto Nero",
|
|
["Blindweed"] = "Erbacieca",
|
|
["Briarthorn"] = "Grandespina",
|
|
["Bruiseweed"] = "Erbalivida",
|
|
["Dreamfoil"] = "Erba Onirica",
|
|
["Dreaming Glory"] = "Gloria d'Oro",
|
|
["Earthroot"] = "Bulboterro",
|
|
["Fadeleaf"] = "Foglia Eterea",
|
|
["Felweed"] = "Erbavile",
|
|
["Firebloom"] = "Sbocciafuoco",
|
|
["Firethorn"] = "Ardispina",
|
|
["Frost Lotus"] = "Loto Gelido",
|
|
["Frozen Herb"] = "Erba del Gelo",
|
|
["Ghost Mushroom"] = "Fungo Fantasma",
|
|
["Goldclover"] = "Trifoglio d'Oro",
|
|
["Golden Sansam"] = "Sansam Dorato",
|
|
["Goldthorn"] = "Orospino",
|
|
["Grave Moss"] = "Muschio di Tomba",
|
|
["Gromsblood"] = "Sangue di Grom",
|
|
["Icecap"] = "Corolla Invernale",
|
|
["Icethorn"] = "Gelaspina",
|
|
["Khadgar's Whisker"] = "Ciuffo di Khadgar",
|
|
["Kingsblood"] = "Sanguesacro",
|
|
["Lichbloom"] = "Fiore del Lich",
|
|
["Liferoot"] = "Bulbovivo",
|
|
["Mageroyal"] = "Magareale",
|
|
["Mana Thistle"] = "Cardomana",
|
|
["Mountain Silversage"] = "Ramargento Montano",
|
|
["Netherbloom"] = "Sbocciafatuo",
|
|
["Nightmare Vine"] = "Vite dell'Incubo",
|
|
["Peacebloom"] = "Sbocciapace",
|
|
["Plaguebloom"] = "Sbocciapiaga",
|
|
["Purple Lotus"] = "Fiore di Loto Purpureo",
|
|
["Ragveil"] = "Velorotto",
|
|
["Silverleaf"] = "Fogliargenta",
|
|
["Stranglekelp"] = "Algatorta",
|
|
["Sungrass"] = "Erbasole",
|
|
["Talandra's Rose"] = "Rosa di Talandra",
|
|
["Terocone"] = "Terocone",
|
|
["Tiger Lily"] = "Giglio Tigrato",
|
|
["Wild Steelbloom"] = "Fiordiferro Selvatico",
|
|
["Wintersbite"] = "Morso dell'Inverno", -- guessed
|
|
},
|
|
ptBR = {
|
|
["Adder's Tongue"] = "Língua de Áspide",
|
|
["Ancient Lichen"] = "Líquen-antigo",
|
|
["Arthas' Tears"] = "Lágrimas de Arthas",
|
|
["Black Lotus"] = "Lótus Preto",
|
|
["Blindweed"] = "Ervacega",
|
|
["Briarthorn"] = "Cravespinho",
|
|
["Bruiseweed"] = "Ervamossa",
|
|
["Dreamfoil"] = "Folha-de-sonho",
|
|
["Dreaming Glory"] = "Glória-sonhadora",
|
|
["Earthroot"] = "Raiz-telúrica",
|
|
["Fadeleaf"] = "Some-folha",
|
|
["Felweed"] = "Vilerva",
|
|
["Firebloom"] = "Ignídea",
|
|
["Firethorn"] = "Espinho de Fogo",
|
|
["Frost Lotus"] = "Lótus Gélido",
|
|
["Frozen Herb"] = "Planta Congelada",
|
|
["Ghost Mushroom"] = "Cogumelo-fantasma",
|
|
["Goldclover"] = "Trevo Dourado",
|
|
["Golden Sansam"] = "Sonsona-dourada",
|
|
["Goldthorn"] = "Espinheira-dourada",
|
|
["Grave Moss"] = "Musgo-de-tumba",
|
|
["Gromsblood"] = "Sangue-de-grom",
|
|
["Icecap"] = "Chapéu-de-gelo",
|
|
["Icethorn"] = "Espinho de Gelo",
|
|
["Khadgar's Whisker"] = "Bigode-de-hadgar",
|
|
["Kingsblood"] = "Sangue-real",
|
|
["Lichbloom"] = "Flor-de-lich",
|
|
["Liferoot"] = "Raiz-da-vida",
|
|
["Mageroyal"] = "Magi-real",
|
|
["Mana Thistle"] = "Manacardo",
|
|
["Mountain Silversage"] = "Sávia-prata-da-montanha",
|
|
["Netherbloom"] = "Floretérea",
|
|
["Nightmare Vine"] = "Vinha-do-pesadelo",
|
|
["Peacebloom"] = "Botão-da-paz",
|
|
["Plaguebloom"] = "Botão-da-praga", -- guessed
|
|
["Purple Lotus"] = "Lótus Roxo",
|
|
["Ragveil"] = "Trapovéu",
|
|
["Silverleaf"] = "Flor-de-seda",
|
|
["Stranglekelp"] = "Estrangulalga",
|
|
["Sungrass"] = "Ervassol",
|
|
["Talandra's Rose"] = "Rosa de Talandra",
|
|
["Terocone"] = "Teropinha",
|
|
["Tiger Lily"] = "Lírio Tigre",
|
|
["Wild Steelbloom"] = "Ácera-agreste",
|
|
["Wintersbite"] = "Modida-do-inverno", -- guessed
|
|
},
|
|
zhTW = {
|
|
["Adder's Tongue"] = "奎蛇之舌",
|
|
["Ancient Lichen"] = "古老青苔",
|
|
["Arthas' Tears"] = "阿薩斯之淚",
|
|
["Black Lotus"] = "黑蓮花",
|
|
["Blindweed"] = "盲目草",
|
|
["Briarthorn"] = "石南草",
|
|
["Bruiseweed"] = "跌打草",
|
|
["Dreamfoil"] = "夢葉草",
|
|
["Dreaming Glory"] = "譽夢草",
|
|
["Earthroot"] = "地根草",
|
|
["Fadeleaf"] = "枯葉草",
|
|
["Felweed"] = "魔獄草",
|
|
["Firebloom"] = "火焰花",
|
|
["Firethorn"] = "火棘",
|
|
["Frost Lotus"] = "冰霜蓮花",
|
|
["Frozen Herb"] = "冰凍草藥",
|
|
["Ghost Mushroom"] = "鬼魂菇",
|
|
["Goldclover"] = "金黃苜蓿",
|
|
["Golden Sansam"] = "黃金蔘",
|
|
["Goldthorn"] = "金棘草",
|
|
["Grave Moss"] = "墓地苔",
|
|
["Gromsblood"] = "格羅姆之血",
|
|
["Icecap"] = "冰蓋草",
|
|
["Icethorn"] = "冰棘",
|
|
["Khadgar's Whisker"] = "卡德加的鬍鬚",
|
|
["Kingsblood"] = "皇血草",
|
|
["Lichbloom"] = "低語藤",
|
|
["Liferoot"] = "活根草",
|
|
["Mageroyal"] = "魔皇草",
|
|
["Mana Thistle"] = "法力薊",
|
|
["Mountain Silversage"] = "山鼠草",
|
|
["Netherbloom"] = "虛空花",
|
|
["Nightmare Vine"] = "夢魘根",
|
|
["Peacebloom"] = "寧神花",
|
|
["Plaguebloom"] = "瘟疫花",
|
|
["Purple Lotus"] = "紫蓮花",
|
|
["Ragveil"] = "拉格維花",
|
|
["Silverleaf"] = "銀葉草",
|
|
["Stranglekelp"] = "荊棘藻",
|
|
["Sungrass"] = "太陽草",
|
|
["Talandra's Rose"] = "泰蘭卓的玫瑰",
|
|
["Terocone"] = "泰魯草",
|
|
["Tiger Lily"] = "虎百合",
|
|
["Wild Steelbloom"] = "野鋼花",
|
|
["Wintersbite"] = "冬刺草",
|
|
},
|
|
zhCN = {
|
|
["Adder's Tongue"] = "蛇信草",
|
|
["Ancient Lichen"] = "远古苔",
|
|
["Arthas' Tears"] = "阿尔萨斯之泪",
|
|
["Black Lotus"] = "黑莲花",
|
|
["Blindweed"] = "盲目草",
|
|
["Briarthorn"] = "石南草",
|
|
["Bruiseweed"] = "跌打草",
|
|
["Dreamfoil"] = "梦叶草",
|
|
["Dreaming Glory"] = "梦露花",
|
|
["Earthroot"] = "地根草",
|
|
["Fadeleaf"] = "枯叶草",
|
|
["Felweed"] = "魔草",
|
|
["Firebloom"] = "火焰花",
|
|
["Firethorn"] = "火棘",
|
|
["Frost Lotus"] = "雪莲花",
|
|
["Frozen Herb"] = "冰冷的草药",
|
|
["Ghost Mushroom"] = "幽灵菇",
|
|
["Goldclover"] = "金苜蓿",
|
|
["Golden Sansam"] = "黄金参",
|
|
["Goldthorn"] = "金棘草",
|
|
["Grave Moss"] = "墓地苔",
|
|
["Gromsblood"] = "格罗姆之血",
|
|
["Icecap"] = "冰盖草",
|
|
["Icethorn"] = "冰棘草",
|
|
["Khadgar's Whisker"] = "卡德加的胡须",
|
|
["Kingsblood"] = "皇血草",
|
|
["Lichbloom"] = "巫妖花",
|
|
["Liferoot"] = "活根草",
|
|
["Mageroyal"] = "魔皇草",
|
|
["Mana Thistle"] = "法力蓟",
|
|
["Mountain Silversage"] = "山鼠草",
|
|
["Netherbloom"] = "虚空花",
|
|
["Nightmare Vine"] = "噩梦藤",
|
|
["Peacebloom"] = "宁神花",
|
|
["Plaguebloom"] = "瘟疫花",
|
|
["Purple Lotus"] = "紫莲花",
|
|
["Ragveil"] = "邪雾草",
|
|
["Silverleaf"] = "银叶草",
|
|
["Stranglekelp"] = "荆棘藻",
|
|
["Sungrass"] = "太阳草",
|
|
["Talandra's Rose"] = "塔兰德拉的玫瑰",
|
|
["Terocone"] = "泰罗果",
|
|
["Tiger Lily"] = "卷丹",
|
|
["Wild Steelbloom"] = "野钢花",
|
|
["Wintersbite"] = "冬刺草",
|
|
},
|
|
}
|
|
|
|
local function LHerbs(tag)
|
|
if herbTranslations[GAME_LOCALE] then
|
|
return herbTranslations[GAME_LOCALE][tag] or tag
|
|
else
|
|
return tag -- Return English name
|
|
end
|
|
end
|
|
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
-- HERB DATA --
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
local herbs = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
zones = {
|
|
[1439] = true, -- Darkshore
|
|
[1426] = true, -- Dun Morogh
|
|
[1411] = true, -- Durotar
|
|
[1429] = true, -- Elwynn Forest
|
|
[1432] = true, -- Loch Modan
|
|
[1412] = true, -- Mulgore
|
|
[1421] = true, -- Silverpine Forest
|
|
[1438] = true, -- Teldrassil
|
|
[1413] = true, -- The Barrens
|
|
[1420] = true, -- Tirisfal Glades
|
|
[1436] = true, -- Westfall
|
|
[1943] = true, -- Azuremyst Isle
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1941] = true, -- Eversong Woods
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
zones = {
|
|
[1439] = true, -- Darkshore
|
|
[1426] = true, -- Dun Morogh
|
|
[1411] = true, -- Durotar
|
|
[1429] = true, -- Elwynn Forest
|
|
[1432] = true, -- Loch Modan
|
|
[1412] = true, -- Mulgore
|
|
[1421] = true, -- Silverpine Forest
|
|
[1438] = true, -- Teldrassil
|
|
[1413] = true, -- The Barrens
|
|
[1420] = true, -- Tirisfal Glades
|
|
[1436] = true, -- Westfall
|
|
[1943] = true, -- Azuremyst Isle
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1941] = true, -- Eversong Woods
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
zones = {
|
|
[1439] = true, -- Darkshore
|
|
[1426] = true, -- Dun Morogh
|
|
[1411] = true, -- Durotar
|
|
[1429] = true, -- Elwynn Forest
|
|
[1432] = true, -- Loch Modan
|
|
[1412] = true, -- Mulgore
|
|
[1433] = true, -- Redridge Mountains
|
|
[1421] = true, -- Silverpine Forest
|
|
[1438] = true, -- Teldrassil
|
|
[1413] = true, -- The Barrens
|
|
[1420] = true, -- Tirisfal Glades
|
|
[1436] = true, -- Westfall
|
|
[1943] = true, -- Azuremyst Isle
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1941] = true, -- Eversong Woods
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
zones = {
|
|
[1440] = true, -- Ashenvale
|
|
[1439] = true, -- Darkshore
|
|
[1411] = true, -- Durotar
|
|
[1431] = true, -- Duskwood
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1432] = true, -- Loch Modan
|
|
[1433] = true, -- Redridge Mountains
|
|
[1421] = true, -- Silverpine Forest
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1438] = true, -- Teldrassil
|
|
[1413] = true, -- The Barrens
|
|
[1436] = true, -- Westfall
|
|
[1437] = true, -- Wetlands
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
zones = {
|
|
[1440] = true, -- Ashenvale
|
|
[1439] = true, -- Darkshore
|
|
[1431] = true, -- Duskwood
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1432] = true, -- Loch Modan
|
|
[1433] = true, -- Redridge Mountains
|
|
[1421] = true, -- Silverpine Forest
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1413] = true, -- The Barrens
|
|
[1436] = true, -- Westfall
|
|
[1437] = true, -- Wetlands
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
zones = {
|
|
[1440] = true, -- Ashenvale
|
|
[1439] = true, -- Darkshore
|
|
[1443] = true, -- Desolace
|
|
[1445] = true, -- Dustwallow Marsh
|
|
[1444] = true, -- Feralas
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1421] = true, -- Silverpine Forest
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1446] = true, -- Tanaris
|
|
[1413] = true, -- The Barrens
|
|
[1425] = true, -- The Hinterlands
|
|
[1436] = true, -- Westfall
|
|
[1437] = true, -- Wetlands
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1440] = true, -- Ashenvale
|
|
[1439] = true, -- Darkshore
|
|
[1443] = true, -- Desolace
|
|
[1431] = true, -- Duskwood
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1432] = true, -- Loch Modan
|
|
[1433] = true, -- Redridge Mountains
|
|
[1421] = true, -- Silverpine Forest
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1413] = true, -- The Barrens
|
|
[1441] = true, -- Thousand Needles
|
|
[1436] = true, -- Westfall
|
|
[1437] = true, -- Wetlands
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
zones = {
|
|
[1417] = true, -- Arathi Highlands
|
|
[1440] = true, -- Ashenvale
|
|
[1418] = true, -- Badlands
|
|
[1431] = true, -- Duskwood
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1413] = true, -- The Barrens
|
|
[1441] = true, -- Thousand Needles
|
|
[1437] = true, -- Wetlands
|
|
},
|
|
},
|
|
[3369] = {
|
|
name = LHerbs("Grave Moss"),
|
|
itemID = 3369,
|
|
minLevel = 120,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1443] = true, -- Desolace
|
|
[1431] = true, -- Duskwood
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1413] = true, -- The Barrens
|
|
[1437] = true, -- Wetlands
|
|
},
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1440] = true, -- Ashenvale
|
|
[1418] = true, -- Badlands
|
|
[1443] = true, -- Desolace
|
|
[1431] = true, -- Duskwood
|
|
[1445] = true, -- Dustwallow Marsh
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1413] = true, -- The Barrens
|
|
[1441] = true, -- Thousand Needles
|
|
[1437] = true, -- Wetlands
|
|
},
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1440] = true, -- Ashenvale
|
|
[1443] = true, -- Desolace
|
|
[1445] = true, -- Dustwallow Marsh
|
|
[1444] = true, -- Feralas
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1425] = true, -- The Hinterlands
|
|
[1437] = true, -- Wetlands
|
|
},
|
|
},
|
|
[3818] = {
|
|
name = LHerbs("Fadeleaf"),
|
|
itemID = 3818,
|
|
minLevel = 160,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1418] = true, -- Badlands
|
|
[1445] = true, -- Dustwallow Marsh
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1425] = true, -- The Hinterlands
|
|
},
|
|
},
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1447] = true, -- Azshara
|
|
[1418] = true, -- Badlands
|
|
[1445] = true, -- Dustwallow Marsh
|
|
[1444] = true, -- Feralas
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1425] = true, -- The Hinterlands
|
|
},
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1447] = true, -- Azshara
|
|
[1418] = true, -- Badlands
|
|
[1445] = true, -- Dustwallow Marsh
|
|
[1444] = true, -- Feralas
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1425] = true, -- The Hinterlands
|
|
},
|
|
},
|
|
[3819] = {
|
|
name = LHerbs("Wintersbite"),
|
|
itemID = 3819,
|
|
minLevel = 195,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
},
|
|
},
|
|
[4625] = {
|
|
name = LHerbs("Firebloom"),
|
|
itemID = 4625,
|
|
minLevel = 205,
|
|
zones = {
|
|
[1418] = true, -- Badlands
|
|
[1419] = true, -- Blasted Lands
|
|
[1427] = true, -- Searing Gorge
|
|
[1446] = true, -- Tanaris
|
|
},
|
|
},
|
|
[8831] = {
|
|
name = LHerbs("Purple Lotus"),
|
|
itemID = 8831,
|
|
minLevel = 210,
|
|
zones = {
|
|
[1440] = true, -- Ashenvale
|
|
[1447] = true, -- Azshara
|
|
[1418] = true, -- Badlands
|
|
[1444] = true, -- Feralas
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1446] = true, -- Tanaris
|
|
[1425] = true, -- The Hinterlands
|
|
},
|
|
},
|
|
[8836] = {
|
|
name = LHerbs("Arthas' Tears"),
|
|
itemID = 8836,
|
|
minLevel = 220,
|
|
zones = {
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1448] = true, -- Felwood
|
|
[1422] = true, -- Western Plaguelands
|
|
},
|
|
},
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
zones = {
|
|
[1447] = true, -- Azshara
|
|
[1419] = true, -- Blasted Lands
|
|
[1428] = true, -- Burning Steppes
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1448] = true, -- Felwood
|
|
[1444] = true, -- Feralas
|
|
[1451] = true, -- Silithus
|
|
[1425] = true, -- The Hinterlands
|
|
[1449] = true, -- Un'Goro Crater
|
|
[1422] = true, -- Western Plaguelands
|
|
},
|
|
},
|
|
[8839] = {
|
|
name = LHerbs("Blindweed"),
|
|
itemID = 8839,
|
|
minLevel = 235,
|
|
zones = {
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1449] = true, -- Un'Goro Crater
|
|
},
|
|
},
|
|
[8845] = {
|
|
name = LHerbs("Ghost Mushroom"),
|
|
itemID = 8845,
|
|
minLevel = 245,
|
|
zones = {
|
|
[1443] = true, -- Desolace
|
|
[1425] = true, -- The Hinterlands
|
|
},
|
|
},
|
|
[8846] = {
|
|
name = LHerbs("Gromsblood"),
|
|
itemID = 8846,
|
|
minLevel = 250,
|
|
zones = {
|
|
[1440] = true, -- Ashenvale
|
|
[1419] = true, -- Blasted Lands
|
|
[1443] = true, -- Desolace
|
|
[1448] = true, -- Felwood
|
|
},
|
|
},
|
|
[13464] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 13464,
|
|
minLevel = 260,
|
|
zones = {
|
|
[1447] = true, -- Azshara
|
|
[1428] = true, -- Burning Steppes
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1448] = true, -- Felwood
|
|
[1444] = true, -- Feralas
|
|
[1451] = true, -- Silithus
|
|
[1425] = true, -- The Hinterlands
|
|
[1449] = true, -- Un'Goro Crater
|
|
},
|
|
},
|
|
[13463] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 13463,
|
|
minLevel = 270,
|
|
zones = {
|
|
[1447] = true, -- Azshara
|
|
[1428] = true, -- Burning Steppes
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1448] = true, -- Felwood
|
|
[1451] = true, -- Silithus
|
|
[1449] = true, -- Un'Goro Crater
|
|
[1422] = true, -- Western Plaguelands
|
|
|
|
},
|
|
},
|
|
[13465] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 13465,
|
|
minLevel = 280,
|
|
zones = {
|
|
[1447] = true, -- Azshara
|
|
[1428] = true, -- Burning Steppes
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1448] = true, -- Felwood
|
|
[1451] = true, -- Silithus
|
|
[1449] = true, -- Un'Goro Crater
|
|
[1422] = true, -- Western Plaguelands
|
|
[1452] = true, -- Winterspring
|
|
},
|
|
},
|
|
[13466] = {
|
|
name = LHerbs("Plaguebloom"),
|
|
itemID = 13466,
|
|
minLevel = 285,
|
|
zones = {
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1448] = true, -- Felwood
|
|
[1422] = true, -- Western Plaguelands
|
|
},
|
|
},
|
|
[13467] = {
|
|
name = LHerbs("Icecap"),
|
|
itemID = 13467,
|
|
minLevel = 290,
|
|
zones = {
|
|
[1452] = true, -- Winterspring
|
|
},
|
|
},
|
|
[13468] = {
|
|
name = LHerbs("Black Lotus"),
|
|
itemID = 13468,
|
|
minLevel = 300,
|
|
zones = {
|
|
[1428] = true, -- Burning Steppes
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1451] = true, -- Silithus
|
|
[1452] = true, -- Winterspring
|
|
},
|
|
},
|
|
-- TBC Herbs
|
|
[142143] = {
|
|
name = LHerbs("Blindweed"),
|
|
itemID = 142143,
|
|
minLevel = 235,
|
|
zones = {
|
|
[1944] = true, -- Hellfire Peninsula
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[142144] = {
|
|
name = LHerbs("Ghost Mushroom"),
|
|
itemID = 142144,
|
|
minLevel = 245,
|
|
zones = {
|
|
[1944] = true, -- Hellfire Peninsula
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[176583] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 176583,
|
|
minLevel = 260,
|
|
zones = {
|
|
[1944] = true, -- Hellfire Peninsula
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[176584] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 176584,
|
|
minLevel = 270,
|
|
zones = {
|
|
[1944] = true, -- Hellfire Peninsula
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[176586] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 176586,
|
|
minLevel = 280,
|
|
zones = {
|
|
[1944] = true, -- Hellfire Peninsula
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
zones = {
|
|
[1949] = true, -- Blade's Edge Mountains
|
|
[1944] = true, -- Hellfire Peninsula
|
|
[1951] = true, -- Nagrand
|
|
[1953] = true, -- Netherstorm
|
|
[332] = true, -- Serpentshrine Cavern
|
|
[1948] = true, -- Shadowmoon Valley
|
|
[1952] = true, -- Terokkar Forest
|
|
[266] = true, -- The Botanica
|
|
[265] = true, -- The Slave Pens
|
|
[263] = true, -- The Steamvault
|
|
[262] = true, -- The Underbog
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[181271] = {
|
|
name = LHerbs("Dreaming Glory"),
|
|
itemID = 181271,
|
|
minLevel = 315,
|
|
zones = {
|
|
[1949] = true, -- Blade's Edge Mountains
|
|
[1944] = true, -- Hellfire Peninsula
|
|
[1951] = true, -- Nagrand
|
|
[1953] = true, -- Netherstorm
|
|
[1948] = true, -- Shadowmoon Valley
|
|
[1952] = true, -- Terokkar Forest
|
|
[266] = true, -- The Botanica
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[181277] = {
|
|
name = LHerbs("Terocone"),
|
|
itemID = 181277,
|
|
minLevel = 325,
|
|
zones = {
|
|
[1948] = true, -- Shadowmoon Valley
|
|
[1952] = true, -- Terokkar Forest
|
|
[266] = true, -- The Botanica
|
|
},
|
|
},
|
|
[181275] = {
|
|
name = LHerbs("Ragveil"),
|
|
itemID = 181275,
|
|
minLevel = 325,
|
|
zones = {
|
|
[265] = true, -- The Slave Pens
|
|
[263] = true, -- The Steamvault
|
|
[262] = true, -- The Underbog
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[181278] = {
|
|
name = LHerbs("Ancient Lichen"),
|
|
itemID = 181278,
|
|
minLevel = 340,
|
|
zones = {
|
|
[256] = true, -- Auchenai Crypts
|
|
[272] = true, -- Mana-Tombs
|
|
[332] = true, -- Serpentshrine Cavern
|
|
[258] = true, -- Sethekk Halls
|
|
[260] = true, -- Shadow Labyrinth
|
|
[265] = true, -- The Slave Pens
|
|
[263] = true, -- The Steamvault
|
|
[262] = true, -- The Underbog
|
|
},
|
|
},
|
|
[181279] = {
|
|
name = LHerbs("Netherbloom"),
|
|
itemID = 181279,
|
|
minLevel = 350,
|
|
zones = {
|
|
[1953] = true, -- Netherstorm
|
|
[266] = true, -- The Botanica
|
|
},
|
|
},
|
|
[181280] = {
|
|
name = LHerbs("Nightmare Vine"),
|
|
itemID = 181280,
|
|
minLevel = 365,
|
|
zones = {
|
|
[1949] = true, -- Blade's Edge Mountains
|
|
[1948] = true, -- Shadowmoon Valley
|
|
},
|
|
},
|
|
[181281] = {
|
|
name = LHerbs("Mana Thistle"),
|
|
itemID = 181281,
|
|
minLevel = 375,
|
|
zones = {
|
|
[1949] = true, -- Blade's Edge Mountains
|
|
[1951] = true, -- Nagrand
|
|
[1953] = true, -- Netherstorm
|
|
[1948] = true, -- Shadowmoon Valley
|
|
[1952] = true, -- Terokkar Forest
|
|
},
|
|
},
|
|
-- WotLK Herbs
|
|
[189973] = {
|
|
name = LHerbs("Goldclover"),
|
|
itemID = 189973,
|
|
minLevel = 350,
|
|
zones = {
|
|
[132] = true, -- Ahn'kahet: The Old Kingdom
|
|
[157] = true, -- Azjol-Nerub
|
|
[114] = true, -- Borean Tundra
|
|
[115] = true, -- Dragonblight
|
|
[116] = true, -- Grizzly Hills
|
|
[117] = true, -- Howling Fjord
|
|
[119] = true, -- Sholazar Basin
|
|
[147] = true, -- Ulduar
|
|
},
|
|
},
|
|
[191303] = {
|
|
name = LHerbs("Firethorn"),
|
|
itemID = 191303,
|
|
minLevel = 360,
|
|
zones = {
|
|
[114] = true, -- Borean Tundra
|
|
},
|
|
},
|
|
[190169] = {
|
|
name = LHerbs("Tiger Lily"),
|
|
itemID = 190169,
|
|
minLevel = 375,
|
|
zones = {
|
|
[132] = true, -- Ahn'kahet: The Old Kingdom
|
|
[157] = true, -- Azjol-Nerub
|
|
[116] = true, -- Grizzly Hills
|
|
[117] = true, -- Howling Fjord
|
|
[119] = true, -- Sholazar Basin
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[190170] = {
|
|
name = LHerbs("Talandra's Rose"),
|
|
itemID = 190170,
|
|
minLevel = 385,
|
|
zones = {
|
|
[132] = true, -- Ahn'kahet: The Old Kingdom
|
|
[160] = true, -- Drak'Tharon Keep
|
|
[116] = true, -- Grizzly Hills
|
|
[120] = true, -- The Storm Peaks
|
|
[147] = true, -- Ulduar
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[191019] = {
|
|
name = LHerbs("Adder's Tongue"),
|
|
itemID = 191019,
|
|
minLevel = 400,
|
|
zones = {
|
|
[114] = true, -- Borean Tundra
|
|
[160] = true, -- Drak'Tharon Keep
|
|
[153] = true, -- Gundrak
|
|
[119] = true, -- Sholazar Basin
|
|
[147] = true, -- Ulduar
|
|
},
|
|
},
|
|
[190175] = {
|
|
name = LHerbs("Frozen Herb"),
|
|
itemID = 190175,
|
|
minLevel = 415,
|
|
zones = {
|
|
[114] = true, -- Borean Tundra
|
|
[115] = true, -- Dragonblight
|
|
[116] = true, -- Grizzly Hills
|
|
[118] = true, -- Icecrown
|
|
[119] = true, -- Sholazar Basin
|
|
[120] = true, -- The Storm Peaks
|
|
[123] = true, -- Wintergrasp
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[190171] = {
|
|
name = LHerbs("Lichbloom"),
|
|
itemID = 190171,
|
|
minLevel = 425,
|
|
zones = {
|
|
[127] = true, -- Crystalsong Forest
|
|
[115] = true, -- Dragonblight
|
|
[118] = true, -- Icecrown
|
|
[119] = true, -- Sholazar Basin
|
|
[120] = true, -- The Storm Peaks
|
|
[147] = true, -- Ulduar
|
|
[123] = true, -- Wintergrasp
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
zones = {
|
|
[127] = true, -- Crystalsong Forest
|
|
[115] = true, -- Dragonblight
|
|
[118] = true, -- Icecrown
|
|
[119] = true, -- Sholazar Basin
|
|
[142] = true, -- The Oculus
|
|
[120] = true, -- The Storm Peaks
|
|
[136] = true, -- Utgarde Pinnacle
|
|
[123] = true, -- Wintergrasp
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[190176] = {
|
|
name = LHerbs("Frost Lotus"),
|
|
itemID = 190176,
|
|
minLevel = 450,
|
|
zones = {
|
|
[119] = true, -- Sholazar Basin
|
|
[147] = true, -- Ulduar
|
|
[123] = true, -- Wintergrasp
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
|
|
local herbsByZone = {
|
|
-- Alterac Mountains
|
|
[1416] = {
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3369] = {
|
|
name = LHerbs("Grave Moss"),
|
|
itemID = 3369,
|
|
minLevel = 120,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
[3818] = {
|
|
name = LHerbs("Fadeleaf"),
|
|
itemID = 3818,
|
|
minLevel = 160,
|
|
},
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
},
|
|
[3819] = {
|
|
name = LHerbs("Wintersbite"),
|
|
itemID = 3819,
|
|
minLevel = 195,
|
|
},
|
|
},
|
|
-- Arathi Highlands
|
|
[1417] = {
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3369] = {
|
|
name = LHerbs("Grave Moss"),
|
|
itemID = 3369,
|
|
minLevel = 120,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
[3818] = {
|
|
name = LHerbs("Fadeleaf"),
|
|
itemID = 3818,
|
|
minLevel = 160,
|
|
},
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
},
|
|
},
|
|
-- Ashenvale
|
|
[1440] = {
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
[8831] = {
|
|
name = LHerbs("Purple Lotus"),
|
|
itemID = 8831,
|
|
minLevel = 210,
|
|
},
|
|
[8846] = {
|
|
name = LHerbs("Gromsblood"),
|
|
itemID = 8846,
|
|
minLevel = 250,
|
|
},
|
|
},
|
|
-- Azshara
|
|
[1447] = {
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
},
|
|
[8831] = {
|
|
name = LHerbs("Purple Lotus"),
|
|
itemID = 8831,
|
|
minLevel = 210,
|
|
},
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[13464] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 13464,
|
|
minLevel = 260,
|
|
},
|
|
[13463] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 13463,
|
|
minLevel = 270,
|
|
},
|
|
[13465] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 13465,
|
|
minLevel = 280,
|
|
},
|
|
},
|
|
-- Badlands
|
|
[1418] = {
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3818] = {
|
|
name = LHerbs("Fadeleaf"),
|
|
itemID = 3818,
|
|
minLevel = 160,
|
|
},
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
},
|
|
[4625] = {
|
|
name = LHerbs("Firebloom"),
|
|
itemID = 4625,
|
|
minLevel = 205,
|
|
},
|
|
[8831] = {
|
|
name = LHerbs("Purple Lotus"),
|
|
itemID = 8831,
|
|
minLevel = 210,
|
|
},
|
|
},
|
|
-- Blasted Lands
|
|
[1419] = {
|
|
[4625] = {
|
|
name = LHerbs("Firebloom"),
|
|
itemID = 4625,
|
|
minLevel = 205,
|
|
},
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[8846] = {
|
|
name = LHerbs("Gromsblood"),
|
|
itemID = 8846,
|
|
minLevel = 250,
|
|
},
|
|
},
|
|
-- Burning Steppes
|
|
[1428] = {
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[13464] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 13464,
|
|
minLevel = 260,
|
|
},
|
|
[13463] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 13463,
|
|
minLevel = 270,
|
|
},
|
|
[13465] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 13465,
|
|
minLevel = 280,
|
|
},
|
|
[13468] = {
|
|
name = LHerbs("Black Lotus"),
|
|
itemID = 13468,
|
|
minLevel = 300,
|
|
},
|
|
},
|
|
-- Darkshore
|
|
[1439] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
},
|
|
-- Desolace
|
|
[1443] = {
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3369] = {
|
|
name = LHerbs("Grave Moss"),
|
|
itemID = 3369,
|
|
minLevel = 120,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
[8845] = {
|
|
name = LHerbs("Ghost Mushroom"),
|
|
itemID = 8845,
|
|
minLevel = 245,
|
|
},
|
|
[8846] = {
|
|
name = LHerbs("Gromsblood"),
|
|
itemID = 8846,
|
|
minLevel = 250,
|
|
},
|
|
},
|
|
-- Dun Morogh
|
|
[1426] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
},
|
|
-- Durotar
|
|
[1411] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
},
|
|
-- Duskwood
|
|
[1431] = {
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3369] = {
|
|
name = LHerbs("Grave Moss"),
|
|
itemID = 3369,
|
|
minLevel = 120,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
},
|
|
-- Dustwallow Marsh
|
|
[1445] = {
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
[3818] = {
|
|
name = LHerbs("Fadeleaf"),
|
|
itemID = 3818,
|
|
minLevel = 160,
|
|
},
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
},
|
|
},
|
|
-- Eastern Plaguelands
|
|
[1423] = {
|
|
[3369] = {
|
|
name = LHerbs("Grave Moss"),
|
|
itemID = 3369,
|
|
minLevel = 120,
|
|
},
|
|
[8836] = {
|
|
name = LHerbs("Arthas' Tears"),
|
|
itemID = 8836,
|
|
minLevel = 220,
|
|
},
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[13464] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 13464,
|
|
minLevel = 260,
|
|
},
|
|
[13463] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 13463,
|
|
minLevel = 270,
|
|
},
|
|
[13465] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 13465,
|
|
minLevel = 280,
|
|
},
|
|
[13466] = {
|
|
name = LHerbs("Plaguebloom"),
|
|
itemID = 13466,
|
|
minLevel = 285,
|
|
},
|
|
[13468] = {
|
|
name = LHerbs("Black Lotus"),
|
|
itemID = 13468,
|
|
minLevel = 300,
|
|
},
|
|
},
|
|
-- Elwynn Forest
|
|
[1429] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
},
|
|
-- Felwood
|
|
[1448] = {
|
|
[8836] = {
|
|
name = LHerbs("Arthas' Tears"),
|
|
itemID = 8836,
|
|
minLevel = 220,
|
|
},
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[8846] = {
|
|
name = LHerbs("Gromsblood"),
|
|
itemID = 8846,
|
|
minLevel = 250,
|
|
},
|
|
[13464] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 13464,
|
|
minLevel = 260,
|
|
},
|
|
[13463] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 13463,
|
|
minLevel = 270,
|
|
},
|
|
[13465] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 13465,
|
|
minLevel = 280,
|
|
},
|
|
[13466] = {
|
|
name = LHerbs("Plaguebloom"),
|
|
itemID = 13466,
|
|
minLevel = 285,
|
|
},
|
|
},
|
|
-- Feralas
|
|
[1444] = {
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
},
|
|
[8831] = {
|
|
name = LHerbs("Purple Lotus"),
|
|
itemID = 8831,
|
|
minLevel = 210,
|
|
},
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[13464] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 13464,
|
|
minLevel = 260,
|
|
},
|
|
},
|
|
-- Hillsbrad Foothills
|
|
[1424] = {
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
},
|
|
-- Loch Modan
|
|
[1432] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
},
|
|
-- Mulgore
|
|
[1412] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
},
|
|
-- Redridge Mountains
|
|
[1433] = {
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
},
|
|
-- Searing Gorge
|
|
[1427] = {
|
|
[4625] = {
|
|
name = LHerbs("Firebloom"),
|
|
itemID = 4625,
|
|
minLevel = 205,
|
|
},
|
|
},
|
|
-- Silithus
|
|
[1451] = {
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[13464] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 13464,
|
|
minLevel = 260,
|
|
},
|
|
[13463] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 13463,
|
|
minLevel = 270,
|
|
},
|
|
[13465] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 13465,
|
|
minLevel = 280,
|
|
},
|
|
[13468] = {
|
|
name = LHerbs("Black Lotus"),
|
|
itemID = 13468,
|
|
minLevel = 300,
|
|
},
|
|
},
|
|
-- Silverpine Forest
|
|
[1421] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
},
|
|
-- Stonetalon Mountains
|
|
[1442] = {
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
},
|
|
-- Stranglethorn Vale
|
|
[1434] = {
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
[3818] = {
|
|
name = LHerbs("Fadeleaf"),
|
|
itemID = 3818,
|
|
minLevel = 160,
|
|
},
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
},
|
|
[8831] = {
|
|
name = LHerbs("Purple Lotus"),
|
|
itemID = 8831,
|
|
minLevel = 210,
|
|
},
|
|
},
|
|
-- Swamp of Sorrows
|
|
[1435] = {
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
[3818] = {
|
|
name = LHerbs("Fadeleaf"),
|
|
itemID = 3818,
|
|
minLevel = 160,
|
|
},
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
},
|
|
[8839] = {
|
|
name = LHerbs("Blindweed"),
|
|
itemID = 8839,
|
|
minLevel = 235,
|
|
},
|
|
},
|
|
-- Tanaris
|
|
[1446] = {
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[4625] = {
|
|
name = LHerbs("Firebloom"),
|
|
itemID = 4625,
|
|
minLevel = 205,
|
|
},
|
|
[8831] = {
|
|
name = LHerbs("Purple Lotus"),
|
|
itemID = 8831,
|
|
minLevel = 210,
|
|
},
|
|
},
|
|
-- Teldrassil
|
|
[1438] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
},
|
|
-- The Barrens
|
|
[1413] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3369] = {
|
|
name = LHerbs("Grave Moss"),
|
|
itemID = 3369,
|
|
minLevel = 120,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
},
|
|
-- The Hinterlands
|
|
[1425] = {
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
[3818] = {
|
|
name = LHerbs("Fadeleaf"),
|
|
itemID = 3818,
|
|
minLevel = 160,
|
|
},
|
|
[3821] = {
|
|
name = LHerbs("Goldthorn"),
|
|
itemID = 3821,
|
|
minLevel = 170,
|
|
},
|
|
[3358] = {
|
|
name = LHerbs("Khadgar's Whisker"),
|
|
itemID = 3358,
|
|
minLevel = 185,
|
|
},
|
|
[8831] = {
|
|
name = LHerbs("Purple Lotus"),
|
|
itemID = 8831,
|
|
minLevel = 210,
|
|
},
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[8845] = {
|
|
name = LHerbs("Ghost Mushroom"),
|
|
itemID = 8845,
|
|
minLevel = 245,
|
|
},
|
|
[13464] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 13464,
|
|
minLevel = 260,
|
|
},
|
|
},
|
|
-- Thousand Needles
|
|
[1441] = {
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
},
|
|
-- Tirisfal Glades
|
|
[1420] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
},
|
|
-- Un'Goro Crater
|
|
[1449] = {
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[8839] = {
|
|
name = LHerbs("Blindweed"),
|
|
itemID = 8839,
|
|
minLevel = 235,
|
|
},
|
|
[13464] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 13464,
|
|
minLevel = 260,
|
|
},
|
|
[13463] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 13463,
|
|
minLevel = 270,
|
|
},
|
|
[13465] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 13465,
|
|
minLevel = 280,
|
|
},
|
|
},
|
|
-- Western Plaguelands
|
|
[1422] = {
|
|
[8836] = {
|
|
name = LHerbs("Arthas' Tears"),
|
|
itemID = 8836,
|
|
minLevel = 220,
|
|
},
|
|
[8838] = {
|
|
name = LHerbs("Sungrass"),
|
|
itemID = 8838,
|
|
minLevel = 230,
|
|
},
|
|
[13463] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 13463,
|
|
minLevel = 270,
|
|
},
|
|
[13465] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 13465,
|
|
minLevel = 280,
|
|
},
|
|
[13466] = {
|
|
name = LHerbs("Plaguebloom"),
|
|
itemID = 13466,
|
|
minLevel = 285,
|
|
},
|
|
},
|
|
-- Westfall
|
|
[1436] = {
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
},
|
|
-- Wetlands
|
|
[1437] = {
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[3355] = {
|
|
name = LHerbs("Wild Steelbloom"),
|
|
itemID = 3355,
|
|
minLevel = 115,
|
|
},
|
|
[3369] = {
|
|
name = LHerbs("Grave Moss"),
|
|
itemID = 3369,
|
|
minLevel = 120,
|
|
},
|
|
[3356] = {
|
|
name = LHerbs("Kingsblood"),
|
|
itemID = 3356,
|
|
minLevel = 125,
|
|
},
|
|
[3357] = {
|
|
name = LHerbs("Liferoot"),
|
|
itemID = 3357,
|
|
minLevel = 150,
|
|
},
|
|
},
|
|
-- Winterspring
|
|
[1452] = {
|
|
[13465] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 13465,
|
|
minLevel = 280,
|
|
},
|
|
[13467] = {
|
|
name = LHerbs("Icecap"),
|
|
itemID = 13467,
|
|
minLevel = 290,
|
|
},
|
|
[13468] = {
|
|
name = LHerbs("Black Lotus"),
|
|
itemID = 13468,
|
|
minLevel = 300,
|
|
},
|
|
},
|
|
-- TBC Zones
|
|
-- Auchenai Crypts
|
|
[256] = {
|
|
[181278] = {
|
|
name = LHerbs("Ancient Lichen"),
|
|
itemID = 181278,
|
|
minLevel = 340,
|
|
},
|
|
},
|
|
-- Azuremyst Isle
|
|
[1943] = {
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
},
|
|
-- Blade's Edge Mountains
|
|
[1949] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181271] = {
|
|
name = LHerbs("Dreaming Glory"),
|
|
itemID = 181271,
|
|
minLevel = 315,
|
|
},
|
|
[181280] = {
|
|
name = LHerbs("Nightmare Vine"),
|
|
itemID = 181280,
|
|
minLevel = 365,
|
|
},
|
|
[181281] = {
|
|
name = LHerbs("Mana Thistle"),
|
|
itemID = 181281,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Bloodmyst Isle
|
|
[1950] = {
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
},
|
|
-- Eversong Woods
|
|
[1941] = {
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
},
|
|
-- Ghostlands
|
|
[1942] = {
|
|
[2450] = {
|
|
name = LHerbs("Briarthorn"),
|
|
itemID = 2450,
|
|
minLevel = 70,
|
|
},
|
|
[785] = {
|
|
name = LHerbs("Mageroyal"),
|
|
itemID = 785,
|
|
minLevel = 50,
|
|
},
|
|
[765] = {
|
|
name = LHerbs("Silverleaf"),
|
|
itemID = 765,
|
|
minLevel = 1,
|
|
},
|
|
[2449] = {
|
|
name = LHerbs("Earthroot"),
|
|
itemID = 2449,
|
|
minLevel = 15,
|
|
},
|
|
[2453] = {
|
|
name = LHerbs("Bruiseweed"),
|
|
itemID = 2453,
|
|
minLevel = 100,
|
|
},
|
|
[2447] = {
|
|
name = LHerbs("Peacebloom"),
|
|
itemID = 2447,
|
|
minLevel = 1,
|
|
},
|
|
[3820] = {
|
|
name = LHerbs("Stranglekelp"),
|
|
itemID = 3820,
|
|
minLevel = 85,
|
|
},
|
|
},
|
|
-- Hellfire Peninsula
|
|
[1944] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181271] = {
|
|
name = LHerbs("Dreaming Glory"),
|
|
itemID = 181271,
|
|
minLevel = 315,
|
|
},
|
|
[176584] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 176584,
|
|
minLevel = 270,
|
|
},
|
|
[176583] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 176583,
|
|
minLevel = 260,
|
|
},
|
|
[176586] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 176586,
|
|
minLevel = 280,
|
|
},
|
|
[142143] = {
|
|
name = LHerbs("Blindweed"),
|
|
itemID = 142143,
|
|
minLevel = 235,
|
|
},
|
|
[142144] = {
|
|
name = LHerbs("Ghost Mushroom"),
|
|
itemID = 142144,
|
|
minLevel = 245,
|
|
},
|
|
},
|
|
-- Mana-Tombs
|
|
[272] = {
|
|
[181278] = {
|
|
name = LHerbs("Ancient Lichen"),
|
|
itemID = 181278,
|
|
minLevel = 340,
|
|
},
|
|
},
|
|
-- Nagrand
|
|
[1951] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181271] = {
|
|
name = LHerbs("Dreaming Glory"),
|
|
itemID = 181271,
|
|
minLevel = 315,
|
|
},
|
|
[181281] = {
|
|
name = LHerbs("Mana Thistle"),
|
|
itemID = 181281,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Netherstorm
|
|
[1953] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181271] = {
|
|
name = LHerbs("Dreaming Glory"),
|
|
itemID = 181271,
|
|
minLevel = 315,
|
|
},
|
|
[181279] = {
|
|
name = LHerbs("Netherbloom"),
|
|
itemID = 181279,
|
|
minLevel = 350,
|
|
},
|
|
[181281] = {
|
|
name = LHerbs("Mana Thistle"),
|
|
itemID = 181281,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Serpentshrine Cavern
|
|
[332] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181278] = {
|
|
name = LHerbs("Ancient Lichen"),
|
|
itemID = 181278,
|
|
minLevel = 340,
|
|
},
|
|
},
|
|
-- Sethekk Halls
|
|
[258] = {
|
|
[181278] = {
|
|
name = LHerbs("Ancient Lichen"),
|
|
itemID = 181278,
|
|
minLevel = 340,
|
|
},
|
|
},
|
|
-- Shadow Labyrinth
|
|
[260] = {
|
|
[181278] = {
|
|
name = LHerbs("Ancient Lichen"),
|
|
itemID = 181278,
|
|
minLevel = 340,
|
|
},
|
|
},
|
|
-- Shadowmoon Valley
|
|
[1948] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181271] = {
|
|
name = LHerbs("Dreaming Glory"),
|
|
itemID = 181271,
|
|
minLevel = 315,
|
|
},
|
|
[181277] = {
|
|
name = LHerbs("Terocone"),
|
|
itemID = 181277,
|
|
minLevel = 325,
|
|
},
|
|
[181280] = {
|
|
name = LHerbs("Nightmare Vine"),
|
|
itemID = 181280,
|
|
minLevel = 365,
|
|
},
|
|
[181281] = {
|
|
name = LHerbs("Mana Thistle"),
|
|
itemID = 181281,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Terokkar Forest
|
|
[1952] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181271] = {
|
|
name = LHerbs("Dreaming Glory"),
|
|
itemID = 181271,
|
|
minLevel = 315,
|
|
},
|
|
[181277] = {
|
|
name = LHerbs("Terocone"),
|
|
itemID = 181277,
|
|
minLevel = 325,
|
|
},
|
|
[181281] = {
|
|
name = LHerbs("Mana Thistle"),
|
|
itemID = 181281,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- The Botanica
|
|
[266] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181271] = {
|
|
name = LHerbs("Dreaming Glory"),
|
|
itemID = 181271,
|
|
minLevel = 315,
|
|
},
|
|
[181277] = {
|
|
name = LHerbs("Terocone"),
|
|
itemID = 181277,
|
|
minLevel = 325,
|
|
},
|
|
[181279] = {
|
|
name = LHerbs("Netherbloom"),
|
|
itemID = 181279,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- The Slave Pens
|
|
[265] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181275] = {
|
|
name = LHerbs("Ragveil"),
|
|
itemID = 181275,
|
|
minLevel = 325,
|
|
},
|
|
[181278] = {
|
|
name = LHerbs("Ancient Lichen"),
|
|
itemID = 181278,
|
|
minLevel = 340,
|
|
},
|
|
},
|
|
-- The Steamvault
|
|
[263] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181275] = {
|
|
name = LHerbs("Ragveil"),
|
|
itemID = 181275,
|
|
minLevel = 325,
|
|
},
|
|
[181278] = {
|
|
name = LHerbs("Ancient Lichen"),
|
|
itemID = 181278,
|
|
minLevel = 340,
|
|
},
|
|
},
|
|
-- The Underbog
|
|
[262] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181275] = {
|
|
name = LHerbs("Ragveil"),
|
|
itemID = 181275,
|
|
minLevel = 325,
|
|
},
|
|
[181278] = {
|
|
name = LHerbs("Ancient Lichen"),
|
|
itemID = 181278,
|
|
minLevel = 340,
|
|
},
|
|
},
|
|
-- Zangarmarsh
|
|
[1946] = {
|
|
[181270] = {
|
|
name = LHerbs("Felweed"),
|
|
itemID = 181270,
|
|
minLevel = 300,
|
|
},
|
|
[181271] = {
|
|
name = LHerbs("Dreaming Glory"),
|
|
itemID = 181271,
|
|
minLevel = 315,
|
|
},
|
|
[181275] = {
|
|
name = LHerbs("Ragveil"),
|
|
itemID = 181275,
|
|
minLevel = 325,
|
|
},
|
|
[176584] = {
|
|
name = LHerbs("Dreamfoil"),
|
|
itemID = 176584,
|
|
minLevel = 270,
|
|
},
|
|
[176583] = {
|
|
name = LHerbs("Golden Sansam"),
|
|
itemID = 176583,
|
|
minLevel = 260,
|
|
},
|
|
[176586] = {
|
|
name = LHerbs("Mountain Silversage"),
|
|
itemID = 176586,
|
|
minLevel = 280,
|
|
},
|
|
[142143] = {
|
|
name = LHerbs("Blindweed"),
|
|
itemID = 142143,
|
|
minLevel = 235,
|
|
},
|
|
[142144] = {
|
|
name = LHerbs("Ghost Mushroom"),
|
|
itemID = 142144,
|
|
minLevel = 245,
|
|
},
|
|
},
|
|
-- WotLK zones
|
|
-- Ahn'kahet: The Old Kingdom
|
|
[132] = {
|
|
[189973] = {
|
|
name = LHerbs("Goldclover"),
|
|
itemID = 189973,
|
|
minLevel = 350,
|
|
},
|
|
[190169] = {
|
|
name = LHerbs("Tiger Lily"),
|
|
itemID = 190169,
|
|
minLevel = 375,
|
|
},
|
|
[190170] = {
|
|
name = LHerbs("Talandra's Rose"),
|
|
itemID = 190170,
|
|
minLevel = 385,
|
|
},
|
|
},
|
|
-- Azjol-Nerub
|
|
[157] = {
|
|
[189973] = {
|
|
name = LHerbs("Goldclover"),
|
|
itemID = 189973,
|
|
minLevel = 350,
|
|
},
|
|
[190169] = {
|
|
name = LHerbs("Tiger Lily"),
|
|
itemID = 190169,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Borean Tundra
|
|
[114] = {
|
|
[189973] = {
|
|
name = LHerbs("Goldclover"),
|
|
itemID = 189973,
|
|
minLevel = 350,
|
|
},
|
|
[191019] = {
|
|
name = LHerbs("Adder's Tongue"),
|
|
itemID = 191019,
|
|
minLevel = 400,
|
|
},
|
|
[190175] = {
|
|
name = LHerbs("Frozen Herb"),
|
|
itemID = 190175,
|
|
minLevel = 415,
|
|
},
|
|
[191303] = {
|
|
name = LHerbs("Firethorn"),
|
|
itemID = 191303,
|
|
minLevel = 360,
|
|
},
|
|
},
|
|
-- Crystalsong Forest
|
|
[127] = {
|
|
[190171] = {
|
|
name = LHerbs("Lichbloom"),
|
|
itemID = 190171,
|
|
minLevel = 425,
|
|
},
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
},
|
|
},
|
|
-- Dragonblight
|
|
[115] = {
|
|
[189973] = {
|
|
name = LHerbs("Goldclover"),
|
|
itemID = 189973,
|
|
minLevel = 350,
|
|
},
|
|
[190171] = {
|
|
name = LHerbs("Lichbloom"),
|
|
itemID = 190171,
|
|
minLevel = 425,
|
|
},
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
},
|
|
[190175] = {
|
|
name = LHerbs("Frozen Herb"),
|
|
itemID = 190175,
|
|
minLevel = 415,
|
|
},
|
|
},
|
|
-- Drak'Tharon Keep
|
|
[160] = {
|
|
[191019] = {
|
|
name = LHerbs("Adder's Tongue"),
|
|
itemID = 191019,
|
|
minLevel = 400,
|
|
},
|
|
[190170] = {
|
|
name = LHerbs("Talandra's Rose"),
|
|
itemID = 190170,
|
|
minLevel = 385,
|
|
},
|
|
},
|
|
-- Grizzly Hills
|
|
[116] = {
|
|
[189973] = {
|
|
name = LHerbs("Goldclover"),
|
|
itemID = 189973,
|
|
minLevel = 350,
|
|
},
|
|
[190169] = {
|
|
name = LHerbs("Tiger Lily"),
|
|
itemID = 190169,
|
|
minLevel = 375,
|
|
},
|
|
[190170] = {
|
|
name = LHerbs("Talandra's Rose"),
|
|
itemID = 190170,
|
|
minLevel = 385,
|
|
},
|
|
[190175] = {
|
|
name = LHerbs("Frozen Herb"),
|
|
itemID = 190175,
|
|
minLevel = 415,
|
|
},
|
|
},
|
|
-- Gundrak
|
|
[153] = {
|
|
[191019] = {
|
|
name = LHerbs("Adder's Tongue"),
|
|
itemID = 191019,
|
|
minLevel = 400,
|
|
},
|
|
},
|
|
-- Howling Fjord
|
|
[117] = {
|
|
[189973] = {
|
|
name = LHerbs("Goldclover"),
|
|
itemID = 189973,
|
|
minLevel = 350,
|
|
},
|
|
[190169] = {
|
|
name = LHerbs("Tiger Lily"),
|
|
itemID = 190169,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Icecrown
|
|
[118] = {
|
|
[190171] = {
|
|
name = LHerbs("Lichbloom"),
|
|
itemID = 190171,
|
|
minLevel = 425,
|
|
},
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
},
|
|
[190175] = {
|
|
name = LHerbs("Frozen Herb"),
|
|
itemID = 190175,
|
|
minLevel = 415,
|
|
},
|
|
},
|
|
-- Sholazar Basin
|
|
[119] = {
|
|
[189973] = {
|
|
name = LHerbs("Goldclover"),
|
|
itemID = 189973,
|
|
minLevel = 350,
|
|
},
|
|
[190169] = {
|
|
name = LHerbs("Tiger Lily"),
|
|
itemID = 190169,
|
|
minLevel = 375,
|
|
},
|
|
[191019] = {
|
|
name = LHerbs("Adder's Tongue"),
|
|
itemID = 191019,
|
|
minLevel = 400,
|
|
},
|
|
[190171] = {
|
|
name = LHerbs("Lichbloom"),
|
|
itemID = 190171,
|
|
minLevel = 425,
|
|
},
|
|
[190176] = {
|
|
name = LHerbs("Frost Lotus"),
|
|
itemID = 190176,
|
|
minLevel = 450,
|
|
},
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
},
|
|
[190175] = {
|
|
name = LHerbs("Frozen Herb"),
|
|
itemID = 190175,
|
|
minLevel = 415,
|
|
},
|
|
},
|
|
-- The Oculus
|
|
[142] = {
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
},
|
|
},
|
|
-- The Storm Peaks
|
|
[120] = {
|
|
[190170] = {
|
|
name = LHerbs("Talandra's Rose"),
|
|
itemID = 190170,
|
|
minLevel = 385,
|
|
},
|
|
[190171] = {
|
|
name = LHerbs("Lichbloom"),
|
|
itemID = 190171,
|
|
minLevel = 425,
|
|
},
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
},
|
|
[190175] = {
|
|
name = LHerbs("Frozen Herb"),
|
|
itemID = 190175,
|
|
minLevel = 415,
|
|
},
|
|
},
|
|
-- Ulduar
|
|
[147] = {
|
|
[189973] = {
|
|
name = LHerbs("Goldclover"),
|
|
itemID = 189973,
|
|
minLevel = 350,
|
|
},
|
|
[191019] = {
|
|
name = LHerbs("Adder's Tongue"),
|
|
itemID = 191019,
|
|
minLevel = 400,
|
|
},
|
|
[190170] = {
|
|
name = LHerbs("Talandra's Rose"),
|
|
itemID = 190170,
|
|
minLevel = 385,
|
|
},
|
|
[190171] = {
|
|
name = LHerbs("Lichbloom"),
|
|
itemID = 190171,
|
|
minLevel = 425,
|
|
},
|
|
[190176] = {
|
|
name = LHerbs("Frost Lotus"),
|
|
itemID = 190176,
|
|
minLevel = 450,
|
|
},
|
|
},
|
|
-- Utgarde Pinnacle
|
|
[136] = {
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
},
|
|
},
|
|
-- Wintergrasp
|
|
[123] = {
|
|
[190171] = {
|
|
name = LHerbs("Lichbloom"),
|
|
itemID = 190171,
|
|
minLevel = 425,
|
|
},
|
|
[190176] = {
|
|
name = LHerbs("Frost Lotus"),
|
|
itemID = 190176,
|
|
minLevel = 450,
|
|
},
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
},
|
|
[190175] = {
|
|
name = LHerbs("Frozen Herb"),
|
|
itemID = 190175,
|
|
minLevel = 415,
|
|
},
|
|
},
|
|
-- Zul'Drak
|
|
[121] = {
|
|
[190169] = {
|
|
name = LHerbs("Tiger Lily"),
|
|
itemID = 190169,
|
|
minLevel = 375,
|
|
},
|
|
[190170] = {
|
|
name = LHerbs("Talandra's Rose"),
|
|
itemID = 190170,
|
|
minLevel = 385,
|
|
},
|
|
[190171] = {
|
|
name = LHerbs("Lichbloom"),
|
|
itemID = 190171,
|
|
minLevel = 425,
|
|
},
|
|
[190172] = {
|
|
name = LHerbs("Icethorn"),
|
|
itemID = 190172,
|
|
minLevel = 435,
|
|
},
|
|
[190175] = {
|
|
name = LHerbs("Frozen Herb"),
|
|
itemID = 190175,
|
|
minLevel = 415,
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
-- HERB FUNCTIONS --
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
-- Returns for the specified herb:
|
|
-- - name
|
|
-- - itemID
|
|
-- - minLevel
|
|
-- - zones; table: k = mapID
|
|
function Tourist:GetHerb(herbItemID)
|
|
return herbs[herbItemID]
|
|
end
|
|
|
|
-- Returns an r, g and b value indicating the gathering difficulty of the specified herb
|
|
function Tourist:GetHerbSkillColor(herbItemID, currentSkill)
|
|
local herb = Tourist:GetHerb(herbItemID)
|
|
if herb then
|
|
return Tourist:GetGatheringSkillColor(herb.minLevel, currentSkill)
|
|
else
|
|
-- White
|
|
return 1, 1, 1
|
|
end
|
|
end
|
|
|
|
local function herbSorter(a, b)
|
|
return a.minLevel < b.minLevel
|
|
end
|
|
|
|
-- Iterates through all standard herbs, returning for each herb:
|
|
-- - name
|
|
-- - itemID
|
|
-- - minLevel
|
|
-- - zones; table: k = mapID
|
|
function Tourist:IterateHerbs()
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
for k, v in pairs(herbs) do
|
|
t[#t+1] = v -- v contains all data including k
|
|
end
|
|
table.sort(t, herbSorter)
|
|
t.n = 0
|
|
return myiter, t, nil
|
|
end
|
|
|
|
-- Iterates through all standard herbs within the specified zone, returning for each herb:
|
|
-- - name
|
|
-- - itemID
|
|
-- - minLevel
|
|
function Tourist:IterateHerbsByZone(mapID)
|
|
local zoneHerbs = herbsByZone[mapID]
|
|
if type(zoneHerbs) == "table" then
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
for k, v in pairs(zoneHerbs) do
|
|
t[#t+1] = v -- v contains all data including k
|
|
end
|
|
table.sort(t, herbSorter)
|
|
t.n = 0
|
|
return myiter, t, nil
|
|
else
|
|
return retOne, zoneHerbs, nil
|
|
end
|
|
end
|
|
|
|
-- Iterates through the mapIDs of the zones in which the specified herb can be found
|
|
function Tourist:IterateZonesByHerb(herbItemID)
|
|
local herb, zones
|
|
herb = Tourist:GetHerb(herbItemID)
|
|
if herb then zones = herb.zones end
|
|
|
|
if not zones then
|
|
return retNil
|
|
elseif type(zones) == "table" then
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
for k, v in pairs(zones) do
|
|
t[#t+1] = k
|
|
end
|
|
table.sort(t, mysort)
|
|
t.n = 0
|
|
return myiter, t, nil
|
|
else
|
|
return retOne, zones, nil
|
|
end
|
|
end
|
|
|
|
-- Returns true if there are any standard herb nodes in the zone
|
|
function Tourist:DoesZoneHaveHerbs(zone)
|
|
local mapID = Tourist:GetZoneMapID(zone) or zone
|
|
return not not herbsByZone[mapID]
|
|
end
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
-- MINING TRANSLATIONS --
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
-- Pulled from GatherMate2 Classic (except the ores)
|
|
local miningTranslations = {
|
|
koKR = {
|
|
["Adamantite Deposit"] = "아다만타이트 광맥",
|
|
["Adamantite Ore"] = "아다만타이트 광석",
|
|
["Cobalt Deposit"] = "코발트 광맥",
|
|
["Cobalt Ore"] = "코발트 광석",
|
|
["Copper Ore"] = "구리 광석",
|
|
["Copper Vein"] = "구리 광맥",
|
|
["Dark Iron Deposit"] = "검은무쇠 광맥",
|
|
["Dark Iron Ore"] = "검은 무쇠 광석",
|
|
["Fel Iron Deposit"] = "지옥무쇠 광맥",
|
|
["Fel Iron Ore"] = "지옥무쇠 광석",
|
|
["Gold Ore"] = "금 광석",
|
|
["Gold Vein"] = "금 광맥",
|
|
["Iron Deposit"] = "철 광맥",
|
|
["Iron Ore"] = "철광석",
|
|
["Khorium Ore"] = "코륨 광석",
|
|
["Khorium Vein"] = "코륨 광맥",
|
|
["Mithril Deposit"] = "미스릴 광맥",
|
|
["Mithril Ore"] = "미스릴 광석",
|
|
["Ooze Covered Gold Vein"] = "진흙으로 덮인 금 광맥",
|
|
["Ooze Covered Mithril Deposit"] = "진흙으로 덮인 미스릴 광맥",
|
|
["Ooze Covered Rich Thorium Vein"] = "진흙으로 덮인 풍부한 토륨 광맥",
|
|
["Ooze Covered Silver Vein"] = "진흙으로 덮인 은 광맥",
|
|
["Ooze Covered Thorium Vein"] = "진흙으로 덮인 토륨 광맥",
|
|
["Pure Saronite Deposit"] = "순수한 사로나이트 광맥",
|
|
["Rich Adamantite Deposit"] = "풍부한 아다만타이트 광맥",
|
|
["Rich Cobalt Deposit"] = "풍부한 코발트 광맥",
|
|
["Rich Saronite Deposit"] = "풍부한 사로나이트 광맥",
|
|
["Rich Thorium Vein"] = "풍부한 토륨 광맥",
|
|
["Saronite Deposit"] = "사로나이트 광맥",
|
|
["Saronite Ore"] = "사로나이트 광석",
|
|
["Silver Ore"] = "은 광석",
|
|
["Silver Vein"] = "은 광맥",
|
|
["Small Thorium Vein"] = "작은 토륨 광맥",
|
|
["Thorium Ore"] = "토륨 광석",
|
|
["Tin Ore"] = "주석 광석",
|
|
["Tin Vein"] = "주석 광맥",
|
|
["Titanium Ore"] = "티타늄 광석",
|
|
["Titanium Vein"] = "티타늄 광맥",
|
|
["Truesilver Deposit"] = "진은 광맥",
|
|
["Truesilver Ore"] = "진은 광석",
|
|
},
|
|
deDE = {
|
|
["Adamantite Deposit"] = "Adamantitvorkommen",
|
|
["Adamantite Ore"] = "Adamantiterz",
|
|
["Cobalt Deposit"] = "Kobaltvorkommen",
|
|
["Cobalt Ore"] = "Kobaltertz",
|
|
["Copper Ore"] = "Kupfererz",
|
|
["Copper Vein"] = "Kupfervorkommen",
|
|
["Dark Iron Deposit"] = "Dunkeleisenablagerung",
|
|
["Dark Iron Ore"] = "Dunkeleisenerz",
|
|
["Fel Iron Deposit"] = "Teufelseisenvorkommen",
|
|
["Fel Iron Ore"] = "Teufelseisenerz",
|
|
["Gold Ore"] = "Golderz",
|
|
["Gold Vein"] = "Goldvorkommen",
|
|
["Iron Deposit"] = "Eisenvorkommen",
|
|
["Iron Ore"] = "Eisenerz",
|
|
["Khorium Ore"] = "Khoriumerz",
|
|
["Khorium Vein"] = "Khoriumader",
|
|
["Mithril Deposit"] = "Mithrilablagerung",
|
|
["Mithril Ore"] = "Mithrilerz",
|
|
["Ooze Covered Gold Vein"] = "Schlammbedecktes Goldvorkommen",
|
|
["Ooze Covered Mithril Deposit"] = "Schlammbedeckte Mithrilablagerung",
|
|
["Ooze Covered Rich Thorium Vein"] = "Schlammbedecktes reiches Thoriumvorkommen",
|
|
["Ooze Covered Silver Vein"] = "Schlammbedecktes Silbervorkommen",
|
|
["Ooze Covered Thorium Vein"] = "Schlammbedeckte Thoriumader",
|
|
["Pure Saronite Deposit"] = "Reine Saronitablagerung",
|
|
["Rich Adamantite Deposit"] = "Reiches Adamantitvorkommen",
|
|
["Rich Cobalt Deposit"] = "Reiches Kobaltvorkommen",
|
|
["Rich Saronite Deposit"] = "Reiches Saronitvorkommen",
|
|
["Rich Thorium Vein"] = "Reiches Thoriumvorkommen",
|
|
["Saronite Deposit"] = "Saronitvorkommen",
|
|
["Saronite Ore"] = "Saronitertz",
|
|
["Silver Ore"] = "Silbererz",
|
|
["Silver Vein"] = "Silbervorkommen",
|
|
["Small Thorium Vein"] = "Kleines Thoriumvorkommen",
|
|
["Thorium Ore"] = "Thoriumerz",
|
|
["Tin Ore"] = "Zinnerz",
|
|
["Tin Vein"] = "Zinnvorkommen",
|
|
["Titanium Ore"] = "Titanertz",
|
|
["Titanium Vein"] = "Titanader",
|
|
["Truesilver Deposit"] = "Echtsilbervorkommen",
|
|
["Truesilver Ore"] = "Echtsilbererz",
|
|
},
|
|
frFR = {
|
|
["Adamantite Deposit"] = "Gisement d'adamantite",
|
|
["Adamantite Ore"] = "Minerai d'adamantite",
|
|
["Cobalt Deposit"] = "Gisement de cobalt",
|
|
["Cobalt Ore"] = "Minerai de cobalt",
|
|
["Copper Ore"] = "Minerai de cuivre",
|
|
["Copper Vein"] = "Filon de cuivre",
|
|
["Dark Iron Deposit"] = "Gisement de sombrefer",
|
|
["Dark Iron Ore"] = "Minerai de sombrefer",
|
|
["Fel Iron Deposit"] = "Gisement de gangrefer",
|
|
["Fel Iron Ore"] = "Minerai de gangrefer",
|
|
["Gold Ore"] = "Minerai d'or",
|
|
["Gold Vein"] = "Filon d'or",
|
|
["Iron Deposit"] = "Gisement de fer",
|
|
["Iron Ore"] = "Minerai de fer",
|
|
["Khorium Ore"] = "Minerai de khorium",
|
|
["Khorium Vein"] = "Filon de khorium",
|
|
["Mithril Deposit"] = "Gisement de mithril",
|
|
["Mithril Ore"] = "Minerai de mithril",
|
|
["Ooze Covered Gold Vein"] = "Filon d'or couvert de limon",
|
|
["Ooze Covered Mithril Deposit"] = "Gisement de mithril couvert de vase",
|
|
["Ooze Covered Rich Thorium Vein"] = "Filon de thorium riche couvert de limon",
|
|
["Ooze Covered Silver Vein"] = "Filon d'argent couvert de limon",
|
|
["Ooze Covered Thorium Vein"] = "Filon de thorium couvert de limon",
|
|
["Pure Saronite Deposit"] = "Gisement de saronite pure",
|
|
["Rich Adamantite Deposit"] = "Gisement d'adamantite riche",
|
|
["Rich Cobalt Deposit"] = "Gisement de cobalt riche",
|
|
["Rich Saronite Deposit"] = "Gisement de saronite riche",
|
|
["Rich Thorium Vein"] = "Filon de thorium riche",
|
|
["Saronite Deposit"] = "Gisement de saronite",
|
|
["Saronite Ore"] = "Minerai de saronite",
|
|
["Silver Ore"] = "Minerai d'argent",
|
|
["Silver Vein"] = "Filon d'argent",
|
|
["Small Thorium Vein"] = "Petit filon de thorium",
|
|
["Thorium Ore"] = "Minerai de thorium",
|
|
["Tin Ore"] = "Minerai d'étain",
|
|
["Tin Vein"] = "Filon d'étain",
|
|
["Titanium Ore"] = "Minerai de titane",
|
|
["Titanium Vein"] = "Veine de titane",
|
|
["Truesilver Deposit"] = "Gisement de vrai-argent",
|
|
["Truesilver Ore"] = "Minerai de vrai-argent",
|
|
},
|
|
esES = {
|
|
["Adamantite Deposit"] = "Depósito de adamantita",
|
|
["Adamantite Ore"] = "Mena de adamantita",
|
|
["Cobalt Deposit"] = "Depósito de cobalto",
|
|
["Cobalt Ore"] = "Mineral de cobalto",
|
|
["Copper Ore"] = "Mineral de cobre",
|
|
["Copper Vein"] = "Filón de cobre",
|
|
["Dark Iron Deposit"] = "Depósito de hierro negro",
|
|
["Dark Iron Ore"] = "Mineral de hierro negro",
|
|
["Fel Iron Deposit"] = "Depósito de hierro vil",
|
|
["Fel Iron Ore"] = "Mena de hierro vil",
|
|
["Gold Ore"] = "Mineral de oro",
|
|
["Gold Vein"] = "Filón de oro",
|
|
["Iron Deposit"] = "Depósito de hierro",
|
|
["Iron Ore"] = "Mineral de hierro negro",
|
|
["Khorium Ore"] = "Mena de korio",
|
|
["Khorium Vein"] = "Filón de korio",
|
|
["Mithril Deposit"] = "Depósito de mitril",
|
|
["Mithril Ore"] = "Mineral de mitril",
|
|
["Ooze Covered Gold Vein"] = "Filón de oro cubierto de moco",
|
|
["Ooze Covered Mithril Deposit"] = "Filón de mitril cubierto de moco",
|
|
["Ooze Covered Rich Thorium Vein"] = "Filón de torio enriquecido cubierto de moco",
|
|
["Ooze Covered Silver Vein"] = "Filón de plata cubierto de moco",
|
|
["Ooze Covered Thorium Vein"] = "Filón de torio cubierto de moco",
|
|
["Pure Saronite Deposit"] = "Deposito de Saronita Puro",
|
|
["Rich Adamantite Deposit"] = "Depósito rico en adamantita",
|
|
["Rich Cobalt Deposit"] = "Depósito de cobalto rico",
|
|
["Rich Saronite Deposit"] = "Depósito de saronita rico",
|
|
["Rich Thorium Vein"] = "Filón de torio enriquecido",
|
|
["Saronite Deposit"] = "Depósito de saronita",
|
|
["Saronite Ore"] = "Mineral de saronita",
|
|
["Silver Ore"] = "Mineral de plata",
|
|
["Silver Vein"] = "Filón de plata",
|
|
["Small Thorium Vein"] = "Filón pequeño de torio",
|
|
["Thorium Ore"] = "Mineral de torio",
|
|
["Tin Ore"] = "Mineral de estaño",
|
|
["Tin Vein"] = "Filón de estaño",
|
|
["Titanium Ore"] = "Mineral de titanio",
|
|
["Titanium Vein"] = "Filón de titanio",
|
|
["Truesilver Deposit"] = "Depósito de veraplata",
|
|
["Truesilver Ore"] = "Mineral de veraplata",
|
|
},
|
|
esMX = {
|
|
["Adamantite Deposit"] = "Depósito de adamantita",
|
|
["Adamantite Ore"] = "Mena de adamantita",
|
|
["Cobalt Deposit"] = "Depósito de cobalto",
|
|
["Cobalt Ore"] = "Mineral de cobalto",
|
|
["Copper Ore"] = "Mineral de cobre",
|
|
["Copper Vein"] = "Filón de cobre",
|
|
["Dark Iron Deposit"] = "Depósito de hierro negro",
|
|
["Dark Iron Ore"] = "Mineral de hierro negro",
|
|
["Fel Iron Deposit"] = "Depósito de hierro vil",
|
|
["Fel Iron Ore"] = "Mena de hierro vil",
|
|
["Gold Ore"] = "Mineral de oro",
|
|
["Gold Vein"] = "Filón de oro",
|
|
["Iron Deposit"] = "Depósito de hierro",
|
|
["Iron Ore"] = "Mineral de hierro negro",
|
|
["Khorium Ore"] = "Mena de korio",
|
|
["Khorium Vein"] = "Filón de korio",
|
|
["Mithril Deposit"] = "Depósito de mitril",
|
|
["Mithril Ore"] = "Mineral de mitril",
|
|
["Ooze Covered Gold Vein"] = "Filón de oro cubierto de moco",
|
|
["Ooze Covered Mithril Deposit"] = "Filón de mitril cubierto de moco",
|
|
["Ooze Covered Rich Thorium Vein"] = "Filón de torio enriquecido cubierto de moco",
|
|
["Ooze Covered Silver Vein"] = "Filón de plata cubierto de moco",
|
|
["Ooze Covered Thorium Vein"] = "Filón de torio cubierto de moco",
|
|
["Pure Saronite Deposit"] = "Deposito de Saronita Puro",
|
|
["Rich Adamantite Deposit"] = "Depósito rico en adamantita",
|
|
["Rich Cobalt Deposit"] = "Depósito de cobalto rico",
|
|
["Rich Saronite Deposit"] = "Depósito de saronita rico",
|
|
["Rich Thorium Vein"] = "Filón de torio enriquecido",
|
|
["Saronite Deposit"] = "Depósito de saronita",
|
|
["Saronite Ore"] = "Mineral de saronita",
|
|
["Silver Ore"] = "Mineral de plata",
|
|
["Silver Vein"] = "Filón de plata",
|
|
["Small Thorium Vein"] = "Filón pequeño de torio",
|
|
["Thorium Ore"] = "Mineral de torio",
|
|
["Tin Ore"] = "Mineral de estaño",
|
|
["Tin Vein"] = "Filón de estaño",
|
|
["Titanium Ore"] = "Mineral de titanio",
|
|
["Titanium Vein"] = "Filón de titanio",
|
|
["Truesilver Deposit"] = "Depósito de veraplata",
|
|
["Truesilver Ore"] = "Mineral de veraplata",
|
|
},
|
|
itIT = {
|
|
["Adamantite Deposit"] = "Deposito di Adamantite",
|
|
["Adamantite Ore"] = "Minerale di Adamantite",
|
|
["Cobalt Deposit"] = "Deposito di Cobalto",
|
|
["Cobalt Ore"] = "Minerale di Cobalto",
|
|
["Copper Ore"] = "Minerale di Rame",
|
|
["Copper Vein"] = "Vena di Rame",
|
|
["Dark Iron Deposit"] = "Deposito di Ferroscuro",
|
|
["Dark Iron Ore"] = "Minerale di Ferroscuro",
|
|
["Fel Iron Deposit"] = "Deposito di Vilferro",
|
|
["Fel Iron Ore"] = "Minerale di Vilferro",
|
|
["Gold Ore"] = "Minerale d'Oro",
|
|
["Gold Vein"] = "Vena d'Oro",
|
|
["Iron Deposit"] = "Deposito di Ferro",
|
|
["Iron Ore"] = "Minerale di Ferro",
|
|
["Khorium Ore"] = "Minerale di Korio",
|
|
["Khorium Vein"] = "Vena di Korio",
|
|
["Mithril Deposit"] = "Deposito di Mithril" ,
|
|
["Mithril Ore"] = "Minerale di Mithril",
|
|
["Ooze Covered Gold Vein"] = "Vena d'Oro Coperta di Melma",
|
|
["Ooze Covered Mithril Deposit"] = "Vena di Mithril Coperta di Melma",
|
|
["Ooze Covered Rich Thorium Vein"] = "Vena Ricca di Torio Coperta di Melma",
|
|
["Ooze Covered Silver Vein"] = "Vena d'Argento Coperta di Melma",
|
|
["Ooze Covered Thorium Vein"] = "Vena di Torio Coperta di Melma",
|
|
["Pure Saronite Deposit"] = "Deposito di Minerale di Saronite pura",
|
|
["Rich Adamantite Deposit"] = "Deposito Ricco di Adamantite",
|
|
["Rich Cobalt Deposit"] = "Deposito Ricco di Cobalto",
|
|
["Rich Saronite Deposit"] = "Deposito Ricco di Saronite",
|
|
["Rich Thorium Vein"] = "Vena Ricca di Torio",
|
|
["Saronite Deposit"] = "Deposito di Saronite",
|
|
["Saronite Ore"] = "Minerale di Saronite",
|
|
["Silver Ore"] = "Minerale d'Argento",
|
|
["Silver Vein"] = "Vena d'Argento",
|
|
["Small Thorium Vein"] = "Vena Piccola di Torio",
|
|
["Thorium Ore"] = "Minerale di Torio",
|
|
["Tin Ore"] = "Minerale di Stagno",
|
|
["Tin Vein"] = "Vena di Stagno",
|
|
["Titanium Ore"] = "Minerale di Titanio",
|
|
["Titanium Vein"] = "Vena di Titanio",
|
|
["Truesilver Deposit"] = "Deposito di Verargento",
|
|
["Truesilver Ore"] = "Minerale di Verargento",
|
|
},
|
|
ptBR = {
|
|
["Adamantite Deposit"] = "Depósito de Adamantita",
|
|
["Adamantite Ore"] = "Minério de Adamantita",
|
|
["Cobalt Deposit"] = "Depósito de Cobalto",
|
|
["Cobalt Ore"] = "Minério de Cobalto",
|
|
["Copper Ore"] = "Minério de Cobre",
|
|
["Copper Vein"] = "Veio de Cobre",
|
|
["Dark Iron Deposit"] = "Depósito de Ferro Negro",
|
|
["Dark Iron Ore"] = "Minério de Ferro Negro",
|
|
["Fel Iron Deposit"] = "Depósito de Ferrovil",
|
|
["Fel Iron Ore"] = "Minério de Ferrovil",
|
|
["Gold Ore"] = "Minério de Ouro",
|
|
["Gold Vein"] = "Veio de Ouro",
|
|
["Iron Deposit"] = "Depósito de Ferro",
|
|
["Iron Ore"] = "Minério de Ferro",
|
|
["Khorium Ore"] = "Minério de Kório",
|
|
["Khorium Vein"] = "Veio de Kório",
|
|
["Mithril Deposit"] = "Depósito de Mithril" ,
|
|
["Mithril Ore"] = "Minério de Mithril",
|
|
["Ooze Covered Gold Vein"] = "Veio de Ouro Coberto de Gosma",
|
|
["Ooze Covered Mithril Deposit"] = "Depósito de Mithril Coberto de Gosma",
|
|
["Ooze Covered Rich Thorium Vein"] = "Veio de Tório Abundante Coberto de Gosma",
|
|
["Ooze Covered Silver Vein"] = "Veio de Prata Coberto de Gosma",
|
|
["Ooze Covered Thorium Vein"] = "Veio de Tório Coberto de Gosma",
|
|
["Pure Saronite Deposit"] = "Depósito de Saronita Pura",
|
|
["Rich Adamantite Deposit"] = "Depósito de Adamantita Abundante",
|
|
["Rich Cobalt Deposit"] = "Depósito de Cobalto Abundante",
|
|
["Rich Saronite Deposit"] = "Depósito de Saronita Abundante",
|
|
["Rich Thorium Vein"] = "Veio de Tório Abundante",
|
|
["Saronite Deposit"] = "Depósito de Saronita",
|
|
["Saronite Ore"] = "Minério de Saronita",
|
|
["Silver Ore"] = "Minério de Prata",
|
|
["Silver Vein"] = "Veio de Prata",
|
|
["Small Thorium Vein"] = "Veio de Tório Pequeno",
|
|
["Thorium Ore"] = "Minério de Tório",
|
|
["Tin Ore"] = "Minério de Estanho",
|
|
["Tin Vein"] = "Veio de Estanho",
|
|
["Titanium Ore"] = "Minério de Titânio",
|
|
["Titanium Vein"] = "Veio de Titânio",
|
|
["Truesilver Deposit"] = "Depósito de Veraprata",
|
|
["Truesilver Ore"] = "Minério de Veraprata",
|
|
},
|
|
zhTW = {
|
|
["Adamantite Deposit"] = "堅鋼礦床",
|
|
["Adamantite Ore"] = "堅鋼礦石",
|
|
["Cobalt Deposit"] = "鈷藍礦床",
|
|
["Cobalt Ore"] = "鈷藍礦石",
|
|
["Copper Ore"] = "銅礦",
|
|
["Copper Vein"] = "銅礦脈",
|
|
["Dark Iron Deposit"] = "黑鐵礦床",
|
|
["Dark Iron Ore"] = "黑鐵礦",
|
|
["Fel Iron Deposit"] = "魔鐵礦床",
|
|
["Fel Iron Ore"] = "魔鐵礦石",
|
|
["Gold Ore"] = "金礦",
|
|
["Gold Vein"] = "金礦脈",
|
|
["Iron Deposit"] = "鐵礦床",
|
|
["Iron Ore"] = "鐵礦",
|
|
["Khorium Ore"] = "克銀礦石",
|
|
["Khorium Vein"] = "克銀礦脈",
|
|
["Mithril Deposit"] = "秘銀礦床" ,
|
|
["Mithril Ore"] = "秘銀礦石",
|
|
["Ooze Covered Gold Vein"] = "軟泥覆蓋的金礦脈",
|
|
["Ooze Covered Mithril Deposit"] = "軟泥覆蓋的秘銀礦床",
|
|
["Ooze Covered Rich Thorium Vein"] = "軟泥覆蓋的富瑟銀礦脈",
|
|
["Ooze Covered Silver Vein"] = "軟泥覆蓋的銀礦脈",
|
|
["Ooze Covered Thorium Vein"] = "軟泥覆蓋的瑟銀礦脈",
|
|
["Pure Saronite Deposit"] = "純淨薩鋼礦床",
|
|
["Rich Adamantite Deposit"] = "豐沃的堅鋼礦床",
|
|
["Rich Cobalt Deposit"] = "豐沃的鈷藍礦床",
|
|
["Rich Saronite Deposit"] = "豐沃的薩鋼礦床",
|
|
["Rich Thorium Vein"] = "富瑟銀礦脈",
|
|
["Saronite Deposit"] = "薩鋼礦床",
|
|
["Saronite Ore"] = "薩鋼礦石",
|
|
["Silver Ore"] = "銀礦石",
|
|
["Silver Vein"] = "銀礦脈",
|
|
["Small Thorium Vein"] = "瑟銀礦脈",
|
|
["Thorium Ore"] = "釷礦石",
|
|
["Tin Ore"] = "錫礦",
|
|
["Tin Vein"] = "錫礦脈",
|
|
["Titanium Ore"] = "泰坦鋼礦石",
|
|
["Titanium Vein"] = "泰坦鋼礦脈",
|
|
["Truesilver Deposit"] = "真銀礦床",
|
|
["Truesilver Ore"] = "真銀礦石",
|
|
},
|
|
zhCN = {
|
|
["Adamantite Deposit"] = "精金矿脉",
|
|
["Adamantite Ore"] = "精金矿石",
|
|
["Cobalt Deposit"] = "钴矿脉",
|
|
["Cobalt Ore"] = "钴矿",
|
|
["Copper Ore"] = "铜矿",
|
|
["Copper Vein"] = "铜矿",
|
|
["Dark Iron Deposit"] = "黑铁矿脉",
|
|
["Dark Iron Ore"] = "黑铁矿",
|
|
["Fel Iron Deposit"] = "魔铁矿脉",
|
|
["Fel Iron Ore"] = "魔铁矿石",
|
|
["Gold Ore"] = "金矿",
|
|
["Gold Vein"] = "金矿石",
|
|
["Iron Deposit"] = "铁矿石",
|
|
["Iron Ore"] = "铁矿",
|
|
["Khorium Ore"] = "氪金矿石",
|
|
["Khorium Vein"] = "氪金矿脉",
|
|
["Mithril Deposit"] = "秘银矿脉",
|
|
["Mithril Ore"] = "秘银矿",
|
|
["Ooze Covered Gold Vein"] = "软泥覆盖的金矿脉",
|
|
["Ooze Covered Mithril Deposit"] = "软泥覆盖的秘银矿脉",
|
|
["Ooze Covered Rich Thorium Vein"] = "软泥覆盖的富瑟银矿脉",
|
|
["Ooze Covered Silver Vein"] = "软泥覆盖的银矿脉",
|
|
["Ooze Covered Thorium Vein"] = "软泥覆盖的瑟银矿脉",
|
|
["Pure Saronite Deposit"] = "纯净的萨隆邪铁矿脉",
|
|
["Rich Adamantite Deposit"] = "富精金矿脉",
|
|
["Rich Cobalt Deposit"] = "富钴矿脉",
|
|
["Rich Saronite Deposit"] = "富萨隆邪铁矿脉",
|
|
["Rich Thorium Vein"] = "富瑟银矿",
|
|
["Saronite Deposit"] = "萨隆邪铁矿脉",
|
|
["Saronite Ore"] = "萨龙石",
|
|
["Silver Ore"] = "银矿",
|
|
["Silver Vein"] = "银矿",
|
|
["Small Thorium Vein"] = "瑟银矿脉",
|
|
["Thorium Ore"] = "钍矿",
|
|
["Tin Ore"] = "锡矿",
|
|
["Tin Vein"] = "锡矿",
|
|
["Titanium Ore"] = "钛矿石",
|
|
["Titanium Vein"] = "锡矿",
|
|
["Truesilver Deposit"] = "真银矿石",
|
|
["Truesilver Ore"] = "真银矿",
|
|
},
|
|
}
|
|
|
|
local function LMining(tag)
|
|
if miningTranslations[GAME_LOCALE] then
|
|
return miningTranslations[GAME_LOCALE][tag] or tag
|
|
else
|
|
return tag
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
-- MINING DATA --
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
-- Some Classic and TBC node types are represented by multiple object IDs
|
|
-- This table maps these IDs to the most common ones
|
|
-- (source: WowHead)
|
|
local miningNodeIDMapping = {
|
|
[2055] = 1731, -- Copper
|
|
[3763] = 1731,
|
|
[103713] = 1731,
|
|
[103714] = 1731,
|
|
[2054] = 1732, -- Tin
|
|
[3764] = 1732,
|
|
[103709] = 1732,
|
|
[105569] = 1733, -- Silver
|
|
[150080] = 1734, -- Gold
|
|
[181109] = 1734,
|
|
[103710] = 1735, -- Iron
|
|
[103712] = 1735,
|
|
[150079] = 2040, -- Mithril
|
|
[176645] = 2040,
|
|
[150081] = 2047, -- Truesilver
|
|
[181108] = 2047,
|
|
[150082] = 324, -- Small Thorium
|
|
[176643] = 324,
|
|
[176644] = 175404, -- Rich Thorium
|
|
}
|
|
|
|
|
|
local miningNodes = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
zones = {
|
|
[1440] = true, -- Ashenvale
|
|
[1439] = true, -- Darkshore
|
|
[1443] = true, -- Desolace
|
|
[1426] = true, -- Dun Morogh
|
|
[1411] = true, -- Durotar
|
|
[1431] = true, -- Duskwood
|
|
[1429] = true, -- Elwynn Forest
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1432] = true, -- Loch Modan
|
|
[1412] = true, -- Mulgore
|
|
[1433] = true, -- Redridge Mountains
|
|
[1421] = true, -- Silverpine Forest
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1413] = true, -- The Barrens
|
|
[1441] = true, -- Thousand Needles
|
|
[1420] = true, -- Tirisfal Glades
|
|
[1436] = true, -- Westfall
|
|
[1437] = true, -- Wetlands
|
|
[1943] = true, -- Azuremyst Isle
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1941] = true, -- Eversong Woods
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1440] = true, -- Ashenvale
|
|
[1439] = true, -- Darkshore
|
|
[1443] = true, -- Desolace
|
|
[1431] = true, -- Duskwood
|
|
[1445] = true, -- Dustwallow Marsh
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1432] = true, -- Loch Modan
|
|
[1433] = true, -- Redridge Mountains
|
|
[1421] = true, -- Silverpine Forest
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1413] = true, -- The Barrens
|
|
[1441] = true, -- Thousand Needles
|
|
[1436] = true, -- Westfall
|
|
[1437] = true, -- Wetlands
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1418] = true, -- Badlands
|
|
[1439] = true, -- Darkshore
|
|
[1443] = true, -- Desolace
|
|
[1431] = true, -- Duskwood
|
|
[1444] = true, -- Feralas
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1432] = true, -- Loch Modan
|
|
[1433] = true, -- Redridge Mountains
|
|
[1421] = true, -- Silverpine Forest
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1413] = true, -- The Barrens
|
|
[1441] = true, -- Thousand Needles
|
|
[1436] = true, -- Westfall
|
|
[1437] = true, -- Wetlands
|
|
[1950] = true, -- Bloodmyst Isle
|
|
[1942] = true, -- Ghostlands
|
|
},
|
|
},
|
|
[73940] = {
|
|
nodeName = LMining("Ooze Covered Silver Vein"),
|
|
nodeObjectID = 73940,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
zones = {
|
|
[1441] = true, -- Thousand Needles
|
|
},
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1440] = true, -- Ashenvale
|
|
[1418] = true, -- Badlands
|
|
[1443] = true, -- Desolace
|
|
[1431] = true, -- Duskwood
|
|
[1445] = true, -- Dustwallow Marsh
|
|
[1444] = true, -- Feralas
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1427] = true, -- Searing Gorge
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1446] = true, -- Tanaris
|
|
[1425] = true, -- The Hinterlands
|
|
[1441] = true, -- Thousand Needles
|
|
[1437] = true, -- Wetlands
|
|
},
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1418] = true, -- Badlands
|
|
[1419] = true, -- Blasted Lands
|
|
[1443] = true, -- Desolace
|
|
[1444] = true, -- Feralas
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1446] = true, -- Tanaris
|
|
[1425] = true, -- The Hinterlands
|
|
[1441] = true, -- Thousand Needles
|
|
[1452] = true, -- Winterspring
|
|
},
|
|
},
|
|
[73941] = {
|
|
nodeName = LMining("Ooze Covered Gold Vein"),
|
|
nodeObjectID = 73941,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
zones = {
|
|
[1444] = true, -- Feralas
|
|
[1441] = true, -- Thousand Needles
|
|
},
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1417] = true, -- Arathi Highlands
|
|
[1447] = true, -- Azshara
|
|
[1418] = true, -- Badlands
|
|
[1419] = true, -- Blasted Lands
|
|
[1428] = true, -- Burning Steppes
|
|
[1443] = true, -- Desolace
|
|
[1445] = true, -- Dustwallow Marsh
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1448] = true, -- Felwood
|
|
[1444] = true, -- Feralas
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1427] = true, -- Searing Gorge
|
|
[1451] = true, -- Silithus
|
|
[1442] = true, -- Stonetalon Mountains
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1435] = true, -- Swamp of Sorrows
|
|
[1446] = true, -- Tanaris
|
|
[1425] = true, -- The Hinterlands
|
|
[1441] = true, -- Thousand Needles
|
|
[1449] = true, -- Un'Goro Crater
|
|
[1422] = true, -- Western Plaguelands
|
|
[1452] = true, -- Winterspring
|
|
},
|
|
},
|
|
[123310] = {
|
|
nodeName = LMining("Ooze Covered Mithril Deposit"),
|
|
nodeObjectID = 123310,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
zones = {
|
|
[1444] = true, -- Feralas
|
|
[1441] = true, -- Thousand Needles
|
|
},
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
zones = {
|
|
[1416] = true, -- Alterac Mountains
|
|
[1418] = true, -- Badlands
|
|
[1419] = true, -- Blasted Lands
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1448] = true, -- Felwood
|
|
[1424] = true, -- Hillsbrad Foothills
|
|
[1427] = true, -- Searing Gorge
|
|
[1434] = true, -- Stranglethorn Vale
|
|
[1446] = true, -- Tanaris
|
|
[1425] = true, -- The Hinterlands
|
|
[1449] = true, -- Un'Goro Crater
|
|
[1422] = true, -- Western Plaguelands
|
|
[1452] = true, -- Winterspring
|
|
},
|
|
},
|
|
[165658] = {
|
|
nodeName = LMining("Dark Iron Deposit"),
|
|
nodeObjectID = 165658,
|
|
oreName = LMining("Dark Iron Ore"),
|
|
oreItemID = 11370,
|
|
minLevel = 230,
|
|
zones = {
|
|
[1428] = true, -- Burning Steppes
|
|
[1427] = true, -- Searing Gorge
|
|
},
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
zones = {
|
|
[1419] = true, -- Blasted Lands
|
|
[1428] = true, -- Burning Steppes
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1448] = true, -- Felwood
|
|
[1444] = true, -- Feralas
|
|
[1427] = true, -- Searing Gorge
|
|
[1451] = true, -- Silithus
|
|
[1446] = true, -- Tanaris
|
|
[1425] = true, -- The Hinterlands
|
|
[1449] = true, -- Un'Goro Crater
|
|
[1422] = true, -- Western Plaguelands
|
|
[1452] = true, -- Winterspring
|
|
},
|
|
},
|
|
[123848] = {
|
|
nodeName = LMining("Ooze Covered Thorium Vein"),
|
|
nodeObjectID = 123848,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
zones = {
|
|
[1444] = true, -- Feralas
|
|
[1449] = true, -- Un'Goro Crater
|
|
},
|
|
},
|
|
[175404] = {
|
|
nodeName = LMining("Rich Thorium Vein"),
|
|
nodeObjectID = 175404,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 275,
|
|
zones = {
|
|
[1447] = true, -- Azshara
|
|
[1428] = true, -- Burning Steppes
|
|
[1423] = true, -- Eastern Plaguelands
|
|
[1449] = true, -- Un'Goro Crater
|
|
[1422] = true, -- Western Plaguelands
|
|
[1452] = true, -- Winterspring
|
|
},
|
|
},
|
|
[177388] = {
|
|
nodeName = LMining("Ooze Covered Rich Thorium Vein"),
|
|
nodeObjectID = 177388,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 275,
|
|
zones = {
|
|
[1451] = true, -- Silithus
|
|
},
|
|
},
|
|
-- TBC Mining Nodes
|
|
[181555] = {
|
|
nodeName = LMining("Fel Iron Deposit"),
|
|
nodeObjectID = 181555,
|
|
oreName = LMining("Fel Iron Ore"),
|
|
oreItemID = 23424,
|
|
minLevel = 300,
|
|
zones = {
|
|
[1949] = true, -- Blade's Edge Mountains
|
|
[1944] = true, -- Hellfire Peninsula
|
|
[1951] = true, -- Nagrand
|
|
[1953] = true, -- Netherstorm
|
|
[1948] = true, -- Shadowmoon Valley
|
|
[1952] = true, -- Terokkar Forest
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[181556] = {
|
|
nodeName = LMining("Adamantite Deposit"),
|
|
nodeObjectID = 181556,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 325,
|
|
zones = {
|
|
[1949] = true, -- Blade's Edge Mountains
|
|
[1951] = true, -- Nagrand
|
|
[1953] = true, -- Netherstorm
|
|
[1948] = true, -- Shadowmoon Valley
|
|
[1952] = true, -- Terokkar Forest
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[181569] = {
|
|
nodeName = LMining("Rich Adamantite Deposit"),
|
|
nodeObjectID = 181569,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 350,
|
|
zones = {
|
|
[1949] = true, -- Blade's Edge Mountains
|
|
[1951] = true, -- Nagrand
|
|
[1953] = true, -- Netherstorm
|
|
[1948] = true, -- Shadowmoon Valley
|
|
[1952] = true, -- Terokkar Forest
|
|
[1946] = true, -- Zangarmarsh
|
|
},
|
|
},
|
|
[181557] = {
|
|
nodeName = LMining("Khorium Vein"),
|
|
nodeObjectID = 181557,
|
|
oreName = LMining("Khorium Ore"),
|
|
oreItemID = 23426,
|
|
minLevel = 375,
|
|
zones = {
|
|
[1949] = true, -- Blade's Edge Mountains
|
|
[1951] = true, -- Nagrand
|
|
[1953] = true, -- Netherstorm
|
|
[1948] = true, -- Shadowmoon Valley
|
|
[1952] = true, -- Terokkar Forest
|
|
},
|
|
},
|
|
-- WotLK mining nodes
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
zones = {
|
|
[114] = true, -- Borean Tundra
|
|
[127] = true, -- Crystalsong Forest
|
|
[115] = true, -- Dragonblight
|
|
[116] = true, -- Grizzly Hills
|
|
[117] = true, -- Howling Fjord
|
|
[119] = true, -- Sholazar Basin
|
|
[120] = true, -- The Storm Peaks
|
|
[133] = true, -- Utgarde Keep
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[189979] = {
|
|
nodeName = LMining("Rich Cobalt Deposit"),
|
|
nodeObjectID = 189979,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 375,
|
|
zones = {
|
|
[114] = true, -- Borean Tundra
|
|
[127] = true, -- Crystalsong Forest
|
|
[115] = true, -- Dragonblight
|
|
[116] = true, -- Grizzly Hills
|
|
[117] = true, -- Howling Fjord
|
|
[119] = true, -- Sholazar Basin
|
|
[120] = true, -- The Storm Peaks
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
zones = {
|
|
[114] = true, -- Borean Tundra
|
|
[127] = true, -- Crystalsong Forest
|
|
[125] = true, -- Dalaran
|
|
[115] = true, -- Dragonblight
|
|
[116] = true, -- Grizzly Hills
|
|
[140] = true, -- Halls of Stone
|
|
[118] = true, -- Icecrown
|
|
[119] = true, -- Sholazar Basin
|
|
[120] = true, -- The Storm Peaks
|
|
[123] = true, -- Wintergrasp
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[189981] = {
|
|
nodeName = LMining("Rich Saronite Deposit"),
|
|
nodeObjectID = 189981,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 425,
|
|
zones = {
|
|
[114] = true, -- Borean Tundra
|
|
[127] = true, -- Crystalsong Forest
|
|
[115] = true, -- Dragonblight
|
|
[118] = true, -- Icecrown
|
|
[119] = true, -- Sholazar Basin
|
|
[120] = true, -- The Storm Peaks
|
|
[123] = true, -- Wintergrasp
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[191133] = {
|
|
nodeName = LMining("Titanium Vein"),
|
|
nodeObjectID = 191133,
|
|
oreName = LMining("Titanium Ore"),
|
|
oreItemID = 36910,
|
|
minLevel = 450,
|
|
zones = {
|
|
[114] = true, -- Borean Tundra
|
|
[127] = true, -- Crystalsong Forest
|
|
[115] = true, -- Dragonblight
|
|
[118] = true, -- Icecrown
|
|
[119] = true, -- Sholazar Basin
|
|
[120] = true, -- The Storm Peaks
|
|
[123] = true, -- Wintergrasp
|
|
[121] = true, -- Zul'Drak
|
|
},
|
|
},
|
|
[195036] = {
|
|
nodeName = LMining("Pure Saronite Deposit"),
|
|
nodeObjectID = 195036,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 450,
|
|
zones = {
|
|
[147] = true, -- Ulduar
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
|
|
local miningNodesByZone = {
|
|
-- Alterac Mountains
|
|
[1416] = {
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
},
|
|
-- Arathi Highlands
|
|
[1417] = {
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
},
|
|
-- Ashenvale
|
|
[1440] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
},
|
|
-- Azshara
|
|
[1447] = {
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[175404] = {
|
|
nodeName = LMining("Rich Thorium Vein"),
|
|
nodeObjectID = 175404,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 275,
|
|
},
|
|
},
|
|
-- Badlands
|
|
[1418] = {
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
},
|
|
-- Blasted Lands
|
|
[1419] = {
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
},
|
|
-- Burning Steppes
|
|
[1428] = {
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[165658] = {
|
|
nodeName = LMining("Dark Iron Deposit"),
|
|
nodeObjectID = 165658,
|
|
oreName = LMining("Dark Iron Ore"),
|
|
oreItemID = 11370,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
[175404] = {
|
|
nodeName = LMining("Rich Thorium Vein"),
|
|
nodeObjectID = 175404,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 275,
|
|
},
|
|
},
|
|
-- Darkshore
|
|
[1439] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
},
|
|
-- Desolace
|
|
[1443] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
},
|
|
-- Dun Morogh
|
|
[1426] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
},
|
|
-- Durotar
|
|
[1411] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
},
|
|
-- Duskwood
|
|
[1431] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
},
|
|
-- Dustwallow Marsh
|
|
[1445] = {
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
},
|
|
-- Eastern Plaguelands
|
|
[1423] = {
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
[175404] = {
|
|
nodeName = LMining("Rich Thorium Vein"),
|
|
nodeObjectID = 175404,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 275,
|
|
},
|
|
},
|
|
-- Elwynn Forest
|
|
[1429] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
},
|
|
-- Felwood
|
|
[1448] = {
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
},
|
|
-- Feralas
|
|
[1444] = {
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[73941] = {
|
|
nodeName = LMining("Ooze Covered Gold Vein"),
|
|
nodeObjectID = 73941,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[123310] = {
|
|
nodeName = LMining("Ooze Covered Mithril Deposit"),
|
|
nodeObjectID = 123310,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
[123848] = {
|
|
nodeName = LMining("Ooze Covered Thorium Vein"),
|
|
nodeObjectID = 123848,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
},
|
|
-- Hillsbrad Foothills
|
|
[1424] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
},
|
|
-- Loch Modan
|
|
[1432] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
},
|
|
-- Mulgore
|
|
[1412] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
},
|
|
-- Redridge Mountains
|
|
[1433] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
},
|
|
-- Searing Gorge
|
|
[1427] = {
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
[165658] = {
|
|
nodeName = LMining("Dark Iron Deposit"),
|
|
nodeObjectID = 165658,
|
|
oreName = LMining("Dark Iron Ore"),
|
|
oreItemID = 11370,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
},
|
|
-- Silithus
|
|
[1451] = {
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
[177388] = {
|
|
nodeName = LMining("Ooze Covered Rich Thorium Vein"),
|
|
nodeObjectID = 177388,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 275,
|
|
},
|
|
},
|
|
-- Silverpine Forest
|
|
[1421] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
},
|
|
-- Stonetalon Mountains
|
|
[1442] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
},
|
|
-- Stranglethorn Vale
|
|
[1434] = {
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
},
|
|
-- Swamp of Sorrows
|
|
[1435] = {
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
},
|
|
-- Tanaris
|
|
[1446] = {
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
},
|
|
-- The Barrens
|
|
[1413] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
},
|
|
-- The Hinterlands
|
|
[1425] = {
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
},
|
|
-- Thousand Needles
|
|
[1441] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[73940] = {
|
|
nodeName = LMining("Ooze Covered Silver Vein"),
|
|
nodeObjectID = 73940,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[73941] = {
|
|
nodeName = LMining("Ooze Covered Gold Vein"),
|
|
nodeObjectID = 73941,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[123310] = {
|
|
nodeName = LMining("Ooze Covered Mithril Deposit"),
|
|
nodeObjectID = 123310,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
},
|
|
-- Tirisfal Glades
|
|
[1420] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
},
|
|
-- Un'Goro Crater
|
|
[1449] = {
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
[123848] = {
|
|
nodeName = LMining("Ooze Covered Thorium Vein"),
|
|
nodeObjectID = 123848,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
[175404] = {
|
|
nodeName = LMining("Rich Thorium Vein"),
|
|
nodeObjectID = 175404,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 275,
|
|
},
|
|
},
|
|
-- Western Plaguelands
|
|
[1422] = {
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
[175404] = {
|
|
nodeName = LMining("Rich Thorium Vein"),
|
|
nodeObjectID = 175404,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 275,
|
|
},
|
|
},
|
|
-- Westfall
|
|
[1436] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
},
|
|
-- Wetlands
|
|
[1437] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
[1735] = {
|
|
nodeName = LMining("Iron Deposit"),
|
|
nodeObjectID = 1735,
|
|
oreName = LMining("Iron Ore"),
|
|
oreItemID = 2772,
|
|
minLevel = 125,
|
|
},
|
|
},
|
|
-- Winterspring
|
|
[1452] = {
|
|
[1734] = {
|
|
nodeName = LMining("Gold Vein"),
|
|
nodeObjectID = 1734,
|
|
oreName = LMining("Gold Ore"),
|
|
oreItemID = 2776,
|
|
minLevel = 155,
|
|
},
|
|
[2040] = {
|
|
nodeName = LMining("Mithril Deposit"),
|
|
nodeObjectID = 2040,
|
|
oreName = LMining("Mithril Ore"),
|
|
oreItemID = 3858,
|
|
minLevel = 175,
|
|
},
|
|
[2047] = {
|
|
nodeName = LMining("Truesilver Deposit"),
|
|
nodeObjectID = 2047,
|
|
oreName = LMining("Truesilver Ore"),
|
|
oreItemID = 7911,
|
|
minLevel = 230,
|
|
},
|
|
[324] = {
|
|
nodeName = LMining("Small Thorium Vein"),
|
|
nodeObjectID = 324,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 245,
|
|
},
|
|
[175404] = {
|
|
nodeName = LMining("Rich Thorium Vein"),
|
|
nodeObjectID = 175404,
|
|
oreName = LMining("Thorium Ore"),
|
|
oreItemID = 10620,
|
|
minLevel = 275,
|
|
},
|
|
},
|
|
-- TBC Zones
|
|
-- Azuremyst Isle
|
|
[1943] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
},
|
|
-- Blade's Edge Mountains
|
|
[1949] = {
|
|
[181555] = {
|
|
nodeName = LMining("Fel Iron Deposit"),
|
|
nodeObjectID = 181555,
|
|
oreName = LMining("Fel Iron Ore"),
|
|
oreItemID = 23424,
|
|
minLevel = 300,
|
|
},
|
|
[181556] = {
|
|
nodeName = LMining("Adamantite Deposit"),
|
|
nodeObjectID = 181556,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 325,
|
|
},
|
|
[181569] = {
|
|
nodeName = LMining("Rich Adamantite Deposit"),
|
|
nodeObjectID = 181569,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 350,
|
|
},
|
|
[181557] = {
|
|
nodeName = LMining("Khorium Vein"),
|
|
nodeObjectID = 181557,
|
|
oreName = LMining("Khorium Ore"),
|
|
oreItemID = 23426,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Bloodmyst Isle
|
|
[1950] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
},
|
|
-- Eversong Woods
|
|
[1941] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
},
|
|
-- Ghostlands
|
|
[1942] = {
|
|
[1731] = {
|
|
nodeName = LMining("Copper Vein"),
|
|
nodeObjectID = 1731,
|
|
oreName = LMining("Copper Ore"),
|
|
oreItemID = 2770,
|
|
minLevel = 1,
|
|
},
|
|
[1732] = {
|
|
nodeName = LMining("Tin Vein"),
|
|
nodeObjectID = 1732,
|
|
oreName = LMining("Tin Ore"),
|
|
oreItemID = 2771,
|
|
minLevel = 65,
|
|
},
|
|
[1733] = {
|
|
nodeName = LMining("Silver Vein"),
|
|
nodeObjectID = 1733,
|
|
oreName = LMining("Silver Ore"),
|
|
oreItemID = 2775,
|
|
minLevel = 75,
|
|
},
|
|
},
|
|
-- Hellfire Peninsula
|
|
[1944] = {
|
|
[181555] = {
|
|
nodeName = LMining("Fel Iron Deposit"),
|
|
nodeObjectID = 181555,
|
|
oreName = LMining("Fel Iron Ore"),
|
|
oreItemID = 23424,
|
|
minLevel = 300,
|
|
},
|
|
},
|
|
-- Nagrand
|
|
[1951] = {
|
|
[181555] = {
|
|
nodeName = LMining("Fel Iron Deposit"),
|
|
nodeObjectID = 181555,
|
|
oreName = LMining("Fel Iron Ore"),
|
|
oreItemID = 23424,
|
|
minLevel = 300,
|
|
},
|
|
[181556] = {
|
|
nodeName = LMining("Adamantite Deposit"),
|
|
nodeObjectID = 181556,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 325,
|
|
},
|
|
[181569] = {
|
|
nodeName = LMining("Rich Adamantite Deposit"),
|
|
nodeObjectID = 181569,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 350,
|
|
},
|
|
[181557] = {
|
|
nodeName = LMining("Khorium Vein"),
|
|
nodeObjectID = 181557,
|
|
oreName = LMining("Khorium Ore"),
|
|
oreItemID = 23426,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Netherstorm
|
|
[1953] = {
|
|
[181555] = {
|
|
nodeName = LMining("Fel Iron Deposit"),
|
|
nodeObjectID = 181555,
|
|
oreName = LMining("Fel Iron Ore"),
|
|
oreItemID = 23424,
|
|
minLevel = 300,
|
|
},
|
|
[181556] = {
|
|
nodeName = LMining("Adamantite Deposit"),
|
|
nodeObjectID = 181556,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 325,
|
|
},
|
|
[181569] = {
|
|
nodeName = LMining("Rich Adamantite Deposit"),
|
|
nodeObjectID = 181569,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 350,
|
|
},
|
|
[181557] = {
|
|
nodeName = LMining("Khorium Vein"),
|
|
nodeObjectID = 181557,
|
|
oreName = LMining("Khorium Ore"),
|
|
oreItemID = 23426,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Shadowmoon Valley
|
|
[1948] = {
|
|
[181555] = {
|
|
nodeName = LMining("Fel Iron Deposit"),
|
|
nodeObjectID = 181555,
|
|
oreName = LMining("Fel Iron Ore"),
|
|
oreItemID = 23424,
|
|
minLevel = 300,
|
|
},
|
|
[181556] = {
|
|
nodeName = LMining("Adamantite Deposit"),
|
|
nodeObjectID = 181556,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 325,
|
|
},
|
|
[181569] = {
|
|
nodeName = LMining("Rich Adamantite Deposit"),
|
|
nodeObjectID = 181569,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 350,
|
|
},
|
|
[181557] = {
|
|
nodeName = LMining("Khorium Vein"),
|
|
nodeObjectID = 181557,
|
|
oreName = LMining("Khorium Ore"),
|
|
oreItemID = 23426,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Terokkar Forest
|
|
[1952] = {
|
|
[181555] = {
|
|
nodeName = LMining("Fel Iron Deposit"),
|
|
nodeObjectID = 181555,
|
|
oreName = LMining("Fel Iron Ore"),
|
|
oreItemID = 23424,
|
|
minLevel = 300,
|
|
},
|
|
[181556] = {
|
|
nodeName = LMining("Adamantite Deposit"),
|
|
nodeObjectID = 181556,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 325,
|
|
},
|
|
[181569] = {
|
|
nodeName = LMining("Rich Adamantite Deposit"),
|
|
nodeObjectID = 181569,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 350,
|
|
},
|
|
[181557] = {
|
|
nodeName = LMining("Khorium Vein"),
|
|
nodeObjectID = 181557,
|
|
oreName = LMining("Khorium Ore"),
|
|
oreItemID = 23426,
|
|
minLevel = 375,
|
|
},
|
|
},
|
|
-- Zangarmarsh
|
|
[1946] = {
|
|
[181555] = {
|
|
nodeName = LMining("Fel Iron Deposit"),
|
|
nodeObjectID = 181555,
|
|
oreName = LMining("Fel Iron Ore"),
|
|
oreItemID = 23424,
|
|
minLevel = 300,
|
|
},
|
|
[181556] = {
|
|
nodeName = LMining("Adamantite Deposit"),
|
|
nodeObjectID = 181556,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 325,
|
|
},
|
|
[181569] = {
|
|
nodeName = LMining("Rich Adamantite Deposit"),
|
|
nodeObjectID = 181569,
|
|
oreName = LMining("Adamantite Ore"),
|
|
oreItemID = 23425,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- WotLK zones
|
|
-- Borean Tundra
|
|
[114] = {
|
|
[189981] = {
|
|
nodeName = LMining("Rich Saronite Deposit"),
|
|
nodeObjectID = 189981,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 425,
|
|
},
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
[191133] = {
|
|
nodeName = LMining("Titanium Vein"),
|
|
nodeObjectID = 191133,
|
|
oreName = LMining("Titanium Ore"),
|
|
oreItemID = 36910,
|
|
minLevel = 450,
|
|
},
|
|
[189979] = {
|
|
nodeName = LMining("Rich Cobalt Deposit"),
|
|
nodeObjectID = 189979,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 375,
|
|
},
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- Crystalsong Forest
|
|
[127] = {
|
|
[189981] = {
|
|
nodeName = LMining("Rich Saronite Deposit"),
|
|
nodeObjectID = 189981,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 425,
|
|
},
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
[191133] = {
|
|
nodeName = LMining("Titanium Vein"),
|
|
nodeObjectID = 191133,
|
|
oreName = LMining("Titanium Ore"),
|
|
oreItemID = 36910,
|
|
minLevel = 450,
|
|
},
|
|
[189979] = {
|
|
nodeName = LMining("Rich Cobalt Deposit"),
|
|
nodeObjectID = 189979,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 375,
|
|
},
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- Dalaran
|
|
[125] = {
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
},
|
|
-- Dragonblight
|
|
[115] = {
|
|
[189981] = {
|
|
nodeName = LMining("Rich Saronite Deposit"),
|
|
nodeObjectID = 189981,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 425,
|
|
},
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
[191133] = {
|
|
nodeName = LMining("Titanium Vein"),
|
|
nodeObjectID = 191133,
|
|
oreName = LMining("Titanium Ore"),
|
|
oreItemID = 36910,
|
|
minLevel = 450,
|
|
},
|
|
[189979] = {
|
|
nodeName = LMining("Rich Cobalt Deposit"),
|
|
nodeObjectID = 189979,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 375,
|
|
},
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- Grizzly Hills
|
|
[116] = {
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
[189979] = {
|
|
nodeName = LMining("Rich Cobalt Deposit"),
|
|
nodeObjectID = 189979,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 375,
|
|
},
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- Halls of Stone
|
|
[140] = {
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
},
|
|
-- Howling Fjord
|
|
[117] = {
|
|
[189979] = {
|
|
nodeName = LMining("Rich Cobalt Deposit"),
|
|
nodeObjectID = 189979,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 375,
|
|
},
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- Icecrown
|
|
[118] = {
|
|
[189981] = {
|
|
nodeName = LMining("Rich Saronite Deposit"),
|
|
nodeObjectID = 189981,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 425,
|
|
},
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
[191133] = {
|
|
nodeName = LMining("Titanium Vein"),
|
|
nodeObjectID = 191133,
|
|
oreName = LMining("Titanium Ore"),
|
|
oreItemID = 36910,
|
|
minLevel = 450,
|
|
},
|
|
},
|
|
-- Sholazar Basin
|
|
[119] = {
|
|
[189981] = {
|
|
nodeName = LMining("Rich Saronite Deposit"),
|
|
nodeObjectID = 189981,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 425,
|
|
},
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
[191133] = {
|
|
nodeName = LMining("Titanium Vein"),
|
|
nodeObjectID = 191133,
|
|
oreName = LMining("Titanium Ore"),
|
|
oreItemID = 36910,
|
|
minLevel = 450,
|
|
},
|
|
[189979] = {
|
|
nodeName = LMining("Rich Cobalt Deposit"),
|
|
nodeObjectID = 189979,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 375,
|
|
},
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- The Storm Peaks
|
|
[120] = {
|
|
[189981] = {
|
|
nodeName = LMining("Rich Saronite Deposit"),
|
|
nodeObjectID = 189981,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 425,
|
|
},
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
[191133] = {
|
|
nodeName = LMining("Titanium Vein"),
|
|
nodeObjectID = 191133,
|
|
oreName = LMining("Titanium Ore"),
|
|
oreItemID = 36910,
|
|
minLevel = 450,
|
|
},
|
|
[189979] = {
|
|
nodeName = LMining("Rich Cobalt Deposit"),
|
|
nodeObjectID = 189979,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 375,
|
|
},
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- Ulduar
|
|
[147] = {
|
|
[195036] = {
|
|
nodeName = LMining("Pure Saronite Deposit"),
|
|
nodeObjectID = 195036,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 450,
|
|
},
|
|
},
|
|
-- Utgarde Keep
|
|
[133] = {
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
-- Wintergrasp
|
|
[123] = {
|
|
[189981] = {
|
|
nodeName = LMining("Rich Saronite Deposit"),
|
|
nodeObjectID = 189981,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 425,
|
|
},
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
[191133] = {
|
|
nodeName = LMining("Titanium Vein"),
|
|
nodeObjectID = 191133,
|
|
oreName = LMining("Titanium Ore"),
|
|
oreItemID = 36910,
|
|
minLevel = 450,
|
|
},
|
|
},
|
|
-- Zul'Drak
|
|
[121] = {
|
|
[189981] = {
|
|
nodeName = LMining("Rich Saronite Deposit"),
|
|
nodeObjectID = 189981,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 425,
|
|
},
|
|
[189980] = {
|
|
nodeName = LMining("Saronite Deposit"),
|
|
nodeObjectID = 189980,
|
|
oreName = LMining("Saronite Ore"),
|
|
oreItemID = 36912,
|
|
minLevel = 400,
|
|
},
|
|
[191133] = {
|
|
nodeName = LMining("Titanium Vein"),
|
|
nodeObjectID = 191133,
|
|
oreName = LMining("Titanium Ore"),
|
|
oreItemID = 36910,
|
|
minLevel = 450,
|
|
},
|
|
[189979] = {
|
|
nodeName = LMining("Rich Cobalt Deposit"),
|
|
nodeObjectID = 189979,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 375,
|
|
},
|
|
[189978] = {
|
|
nodeName = LMining("Cobalt Deposit"),
|
|
nodeObjectID = 189978,
|
|
oreName = LMining("Cobalt Ore"),
|
|
oreItemID = 36909,
|
|
minLevel = 350,
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
-- MINING FUNCTIONS --
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
-- Returns for the specified mining node:
|
|
-- - nodeName
|
|
-- - nodeObjectID
|
|
-- - oreName
|
|
-- - oreItemID
|
|
-- - minLevel
|
|
-- - zones; table: k = mapID
|
|
function Tourist:GetMiningNode(nodeObjectID)
|
|
-- Some mining nodes have different IDs, i.e. because they drop different secondary items.
|
|
-- LibTourist only uses the most common nodeType; use the mapping table to find it
|
|
nodeObjectID = miningNodeIDMapping[nodeObjectID] or nodeObjectID
|
|
return miningNodes[nodeObjectID]
|
|
end
|
|
|
|
-- Returns an r, g and b value indicating the mining difficulty of the specified mining node
|
|
function Tourist:GetMiningSkillColor(nodeObjectID, currentSkill)
|
|
local node = Tourist:GetMiningNode(nodeObjectID)
|
|
if node then
|
|
return Tourist:GetGatheringSkillColor(node.minLevel, currentSkill)
|
|
else
|
|
-- White
|
|
return 1, 1, 1
|
|
end
|
|
end
|
|
|
|
local function miningNodeSorter(a, b)
|
|
return a.minLevel < b.minLevel
|
|
end
|
|
|
|
-- Iterates through all standard mining nodes, returning for each node:
|
|
-- - nodeName
|
|
-- - nodeObjectID
|
|
-- - oreName
|
|
-- - oreItemID
|
|
-- - minLevel
|
|
-- - zones; table: k = mapID
|
|
function Tourist:IterateMiningNodes()
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
for k, v in pairs(miningNodes) do
|
|
t[#t+1] = v -- v contains all data including k
|
|
end
|
|
table.sort(t, miningNodeSorter)
|
|
t.n = 0
|
|
return myiter, t, nil
|
|
end
|
|
|
|
-- Iterates through all standard mining nodes within the specified zone, returning for each node:
|
|
-- - nodeName
|
|
-- - nodeObjectID
|
|
-- - oreName
|
|
-- - oreItemID
|
|
-- - minLevel
|
|
function Tourist:IterateMiningNodesByZone(mapID)
|
|
local zoneMiningNodes = miningNodesByZone[mapID]
|
|
if type(zoneMiningNodes) == "table" then
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
for k, v in pairs(zoneMiningNodes) do
|
|
t[#t+1] = v -- v contains all data including k
|
|
end
|
|
table.sort(t, miningNodeSorter)
|
|
t.n = 0
|
|
return myiter, t, nil
|
|
else
|
|
return retOne, zoneMiningNodes, nil
|
|
end
|
|
end
|
|
|
|
-- Iterates through the mapIDs of the zones in which the specified mining node can be found
|
|
function Tourist:IterateZonesByMiningNode(miningNodeObjectID)
|
|
local miningNode, zones
|
|
miningNode = Tourist:GetMiningNode(miningNodeObjectID)
|
|
if miningNode then zones = miningNode.zones end
|
|
|
|
if not zones then
|
|
return retNil
|
|
elseif type(zones) == "table" then
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
for k, v in pairs(zones) do
|
|
t[#t+1] = k
|
|
end
|
|
table.sort(t, mysort)
|
|
t.n = 0
|
|
return myiter, t, nil
|
|
else
|
|
return retOne, zones, nil
|
|
end
|
|
end
|
|
|
|
-- Returns true if there are any standard mining nodes in the zone
|
|
function Tourist:DoesZoneHaveMiningNodes(zone)
|
|
local mapID = Tourist:GetZoneMapID(zone) or zone
|
|
return not not miningNodesByZone[mapID]
|
|
end
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------------------------------
|
|
-- CORE --
|
|
--------------------------------------------------------------------------------------------------------
|
|
|
|
trace("Tourist: Initializing continents...")
|
|
local continentNames = Tourist:GetMapContinentsAlt()
|
|
continentNames[947] = "Azeroth"
|
|
|
|
local counter = 0
|
|
|
|
for continentMapID, continentName in pairs(continentNames) do
|
|
trace("Processing Continent "..tostring(continentMapID)..": "..continentName.."...")
|
|
|
|
if zones[continentName] then
|
|
-- Set MapID
|
|
zones[continentName].zoneMapID = continentMapID
|
|
-- Get map art ID
|
|
zones[continentName].texture = C_Map.GetMapArtID(continentMapID)
|
|
-- Get map size in yards
|
|
local cWidth = HBD:GetZoneSize(continentMapID)
|
|
if not cWidth then
|
|
trace("|r|cffff4422! -- Tourist:|r No size data for "..tostring(continentName))
|
|
end
|
|
if cWidth == 0 then
|
|
trace("|r|cffff4422! -- Tourist:|r Size is zero for "..tostring(continentName))
|
|
end
|
|
zones[continentName].yards = cWidth or 0
|
|
--trace("Tourist: Continent size in yards for "..tostring(continentName).." ("..tostring(continentMapID).."): "..tostring(round(zones[continentName].yards, 2)))
|
|
else
|
|
-- Unknown Continent
|
|
trace("|r|cffff4422! -- Tourist:|r TODO: Add Continent '"..tostring(continentName).."' ("..tostring(continentMapID)..")")
|
|
end
|
|
|
|
counter = counter + 1
|
|
end
|
|
trace("Tourist: Processed "..tostring(counter).." continents")
|
|
|
|
trace("Tourist: Initializing zones...")
|
|
local doneZones = {}
|
|
local mapZones = {}
|
|
local uniqueZoneName
|
|
local minLvl, maxLvl, minPetLvl, maxPetLvl
|
|
local counter2 = 0
|
|
counter = 0
|
|
|
|
for continentMapID, continentName in pairs(continentNames) do
|
|
mapZones = Tourist:GetMapZonesAlt(continentMapID)
|
|
counter = 0
|
|
for zoneMapID, zoneName in pairs(mapZones) do
|
|
-- Add mapIDs to lookup table
|
|
zoneMapIDtoContinentMapID[zoneMapID] = continentMapID
|
|
|
|
-- Check for duplicate on continent name + zone name
|
|
if not doneZones[continentName.."."..zoneName] then
|
|
if zones[zoneName] then
|
|
-- Set zone mapID
|
|
zones[zoneName].zoneMapID = zoneMapID
|
|
-- Get zone texture ID
|
|
zones[zoneName].texture = C_Map.GetMapArtID(continentMapID)
|
|
-- Get zone player levels
|
|
minLvl, maxLvl = C_Map.GetMapLevels(zoneMapID)
|
|
if minLvl and minLvl > 0 then zones[zoneName].low = minLvl end
|
|
if maxLvl and maxLvl > 0 then zones[zoneName].high = maxLvl end
|
|
-- Get map size
|
|
local zWidth = HBD:GetZoneSize(zoneMapID)
|
|
if not zWidth then
|
|
trace("|r|cffff4422! -- Tourist:|r No size data for "..tostring(zoneName).." ("..tostring(continentName)..")" )
|
|
end
|
|
if zWidth == 0 then
|
|
trace("|r|cffff4422! -- Tourist:|r Size is zero for "..tostring(zoneName).." ("..tostring(continentName)..")" )
|
|
end
|
|
if zWidth ~= 0 or not zones[zoneName].yards then
|
|
-- Make sure the size is always set (even if it's 0) but don't overwrite any hardcoded values if the size is 0
|
|
zones[zoneName].yards = zWidth
|
|
end
|
|
else
|
|
trace("|r|cffff4422! -- Tourist:|r TODO: Add zone "..tostring(zoneName).." (to "..tostring(continentName)..")" )
|
|
end
|
|
|
|
doneZones[continentName.."."..zoneName] = true
|
|
else
|
|
trace("|r|cffff4422! -- Tourist:|r Duplicate zone: "..tostring(zoneName).." [ID "..tostring(zoneMapID).."] (at "..tostring(continentName)..")" )
|
|
end
|
|
counter = counter + 1
|
|
end -- zone loop
|
|
|
|
trace( "Tourist: Processed "..tostring(counter).." zones for "..continentName.." (ID = "..tostring(continentMapID)..")" )
|
|
counter2 = counter2 + counter
|
|
end -- continent loop
|
|
|
|
trace("Tourist: Processed "..tostring(counter2).." zones")
|
|
|
|
trace("Tourist: Filling lookup tables...")
|
|
|
|
-- Fill the lookup tables
|
|
for k,v in pairs(zones) do
|
|
lows[k] = v.low or 0
|
|
highs[k] = v.high or 0
|
|
continents[k] = v.continent or UNKNOWN
|
|
instances[k] = v.instances
|
|
paths[k] = v.paths or false
|
|
flightnodes[k] = v.flightnodes or false
|
|
types[k] = v.type or "Zone"
|
|
groupSizes[k] = v.groupSize
|
|
groupMinSizes[k] = v.groupMinSize
|
|
groupMaxSizes[k] = v.groupMaxSize
|
|
groupAltSizes[k] = v.altGroupSize
|
|
factions[k] = v.faction
|
|
yardWidths[k] = v.yards
|
|
yardHeights[k] = v.yards and v.yards * 2/3 or nil
|
|
fishing_low[k] = v.fishing_low
|
|
fishing_high[k] = v.fishing_high
|
|
textures[k] = v.texture
|
|
complexOfInstance[k] = v.complex
|
|
zoneComplexes[k] = v.complexes
|
|
if v.texture then
|
|
textures_rev[v.texture] = k
|
|
end
|
|
zoneMapIDs[k] = v.zoneMapID
|
|
if v.entrancePortal then
|
|
entrancePortals_zone[k] = v.entrancePortal[1]
|
|
entrancePortals_x[k] = v.entrancePortal[2]
|
|
entrancePortals_y[k] = v.entrancePortal[3]
|
|
end
|
|
if v.flightnodes then
|
|
for nodeID in pairs(v.flightnodes) do
|
|
if not FlightnodeLookupTable[nodeID] then
|
|
FlightnodeLookupTable[nodeID] = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
trace("Tourist: Built Flightnode lookup table: "..tostring(tablelength(FlightnodeLookupTable)).." nodes.")
|
|
|
|
zones = nil
|
|
|
|
trace("LibTourist Classic initialized, loaded by "..tostring(addonName))
|
|
|
|
PLAYER_LEVEL_UP(Tourist)
|
|
end
|
|
|
|
return Tourist
|
|
|
|
|