WoWInterface SVN TitanPanelRecommendedZone

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 78 to Rev 79
    Reverse comparison

Rev 78 → Rev 79

trunk/TitanRecZone/localization.lua
1,5 → 1,5
TRZ_TITLE = "Titan Panel [Recommended Zone]";
TRZ_VERSION = "5.4.0.0";
TRZ_VERSION = "6.0.0.0";
 
TRZ_MENU_TEXT = 'Recommended Zone';
TRZ_BUTTON_LABEL = 'Zone: ';
trunk/TitanRecZone/Libs/LibTourist-3.0/LibTourist-3.0.lua
1,6 → 1,6
--[[
Name: LibTourist-3.0
Revision: $Rev: 165 $
Revision: $Rev: 175 $
Author(s): ckknight (ckknight@gmail.com), Arrowmaster, Odica (maintainer)
Website: http://ckknight.wowinterface.com/
Documentation: http://www.wowace.com/addons/libtourist-3-0/
10,7 → 10,7
]]
 
local MAJOR_VERSION = "LibTourist-3.0"
local MINOR_VERSION = 90000 + tonumber(("$Revision: 165 $"):match("(%d+)"))
local MINOR_VERSION = 90000 + tonumber(("$Revision: 175 $"):match("(%d+)"))
 
if not LibStub then error(MAJOR_VERSION .. " requires LibStub") end
 
46,22 → 46,14
 
local isWestern = GetLocale() == "enUS" or GetLocale() == "deDE" or GetLocale() == "frFR" or GetLocale() == "esES"
 
local Kalimdor, Eastern_Kingdoms, Outland, Northrend, The_Maelstrom, Pandaria = GetMapContinents()
if not Outland then
Outland = "Outland"
end
if not Northrend then
Northrend = "Northrend"
end
if not The_Maelstrom then
The_Maelstrom = "The Maelstrom"
end
if not Pandaria then
Pandaria = "Pandaria"
end
 
--local Azeroth = BZ["Azeroth"]
local Azeroth = "Azeroth"
local Kalimdor = "Kalimdor"
local Eastern_Kingdoms = "Eastern Kingdoms"
local Outland = "Outland"
local Northrend = "Northrend"
local The_Maelstrom = "The Maelstrom"
local Pandaria = "Pandaria"
local Draenor = "Draenor"
 
local X_Y_ZEPPELIN = "%s - %s Zeppelin"
local X_Y_BOAT = "%s - %s Boat"
118,6 → 110,8
local entrancePortals_x = {}
local entrancePortals_y = {}
 
local zoneIDtoContinentID = {}
 
-- HELPER AND LOOKUP FUNCTIONS -------------------------------------------------------------
 
local function PLAYER_LEVEL_UP(self, level)
141,7 → 135,6
end
elseif zoneType == "Battleground" and low and high then
local playerLevel = playerLevel
-- if playerLevel >= low and (playerLevel == MAX_PLAYER_LEVEL or math.fmod(playerLevel, 10) >= 6) then
if low <= playerLevel and playerLevel <= high then
recInstances[zone] = true
end
154,6 → 147,106
end
end
 
-- Public alternative for GetMapContinents, removes the map IDs that were added to its output in WoW 6.0
function Tourist:GetMapContinentsAlt()
local temp = { GetMapContinents() }
 
if tonumber(temp[1]) then
-- The first value is an ID instead of a name -> WoW 6.0 or later
local continents = {}
local index = 0
for i = 2, #temp, 2 do
index = index + 1
continents[index] = temp[i]
-- trace( "C "..tostring(index).." = "..tostring(continents[index]) )
end
return continents
else
-- Backward compatibility for pre-WoW 6.0
return temp
end
end
 
-- Public Alternative for GetMapZones because GetMapZones does NOT return all zones (as of 6.0.2),
-- making its output useless as input for for SetMapZoom.
-- Thanks to Blackspirit (US) for this code.
-- NOTE: This method does not convert duplicate zone names for lookup in LibTourist,
-- use GetUniqueZoneNameForLookup for that.
local mapZonesByContinentID = {}
function Tourist:GetMapZonesAlt(continentID)
if mapZonesByContinentID[continentID] then
return mapZonesByContinentID[continentID]
else
-- Just in case GetMapZonesAltLocal has not been called yet:
local zones = {}
SetMapZoom(continentID)
local continentAreaID = GetCurrentMapAreaID()
for i=1, 100, 1 do
SetMapZoom(continentID, i)
local zoneAreaID = GetCurrentMapAreaID()
if zoneAreaID == continentAreaID then
-- If the index gets out of bounds, the continent map is returned -> exit the loop
break
end
-- Get the localized zone name and store it
zones[i] = GetMapNameByID(zoneAreaID)
end
-- Cache
mapZonesByContinentID[continentID] = zones
return zones
end
end
 
-- Local version of GetMapZonesAlt, used during initialisation of LibTourist
local function GetMapZonesAltLocal(continentID)
local zones = {}
SetMapZoom(continentID)
local continentAreaID = GetCurrentMapAreaID()
for i=1, 100, 1 do
SetMapZoom(continentID, i)
local zoneAreaID = GetCurrentMapAreaID()
if zoneAreaID == continentAreaID then
-- If the index is out of bounds, the continent map is returned -> exit the loop
break
end
-- Add area IDs to lookup table
zoneIDtoContinentID[zoneAreaID] = continentID
-- Get the localized zone name and store it
zones[i] = GetMapNameByID(zoneAreaID)
-- if continentID == 7 then
-- trace(i..": "..zoneAreaID.." = "..tostring(zones[i]))
-- end
end
-- Cache (for GetMapZonesAlt)
mapZonesByContinentID[continentID] = zones
return zones
end
 
-- Public alternative for GetMapNameByID, returns a unique localized zone name
-- to be used to lookup data in LibTourist
function Tourist:GetMapNameByIDAlt(zoneAreaID)
local zoneName = GetMapNameByID(zoneAreaID)
local continentID = zoneIDtoContinentID[zoneAreaID]
return Tourist:GetUniqueZoneNameForLookup(zoneName, continentID)
end
 
-- Returns a unique localized zone name to be used to lookup data in LibTourist,
-- based on a localized zone name
function Tourist:GetUniqueZoneNameForLookup(zoneName, continentID)
if continentID == 7 then
if zoneName == BZ["Nagrand"] then
zoneName = BZ["Nagrand"].." ("..BZ["Draenor"]..")"
end
if zoneName == BZ["Shadowmoon Valley"] then
zoneName = BZ["Shadowmoon Valley"].." ("..BZ["Draenor"]..")"
end
end
return zoneName
end
 
 
 
 
-- Minimum fishing skill to fish these zones junk-free
function Tourist:GetFishingLevel(zone)
return fishing[zone]
204,6 → 297,10
-- Find the most suitable bracket
if playerLvl >= MAX_PLAYER_LEVEL then
return MAX_PLAYER_LEVEL, MAX_PLAYER_LEVEL
elseif playerLvl >= 95 then
return 95, 99
elseif playerLvl >= 90 then
return 90, 94
elseif playerLvl >= 85 then
return 85, 89
elseif playerLvl >= 80 then
341,6 → 438,10
return yardWidths[zone], yardHeights[zone]
end
 
function Tourist:GetZoneYardOffset(zone)
return yardXOffsets[zone], yardYOffsets[zone]
end
 
local ekXOffset = 15525.32200715066
local ekYOffset = 672.3934326738229
 
348,23 → 449,15
local kalYOffset = 1815.149000954498
 
function Tourist:GetYardDistance(zone1, x1, y1, zone2, x2, y2)
local zone1_yardXOffset = yardXOffsets[zone1]
if not zone1_yardXOffset then
return nil
end
local zone2_yardXOffset = yardXOffsets[zone2]
if not zone2_yardXOffset then
return nil
end
local zone1_yardYOffset = yardYOffsets[zone1]
local zone2_yardYOffset = yardYOffsets[zone2]
 
local zone1_continent = continents[zone1]
local zone2_continent = continents[zone2]
if (zone1_continent == Outland) ~= (zone2_continent == Outland) then
return nil
end
 
if (zone1_continent == Draenor) ~= (zone2_continent == Draenor) then
return nil
end
 
local zone1_yardWidth = yardWidths[zone1]
local zone1_yardHeight = yardHeights[zone1]
local zone2_yardWidth = yardWidths[zone2]
376,6 → 469,17
local y2_yard = zone2_yardHeight*y2
 
if zone1 ~= zone2 then
local zone1_yardXOffset = yardXOffsets[zone1]
if not zone1_yardXOffset then
return nil
end
local zone2_yardXOffset = yardXOffsets[zone2]
if not zone2_yardXOffset then
return nil
end
local zone1_yardYOffset = yardYOffsets[zone1]
local zone2_yardYOffset = yardYOffsets[zone2]
 
x1_yard = x1_yard + zone1_yardXOffset
y1_yard = y1_yard + zone1_yardYOffset
 
478,19 → 582,22
return t
end})
 
local kal_yardWidth
local kal_yardHeight
local ek_yardWidth
local ek_yardHeight
 
 
--local kal_yardWidth
--local kal_yardHeight
--local ek_yardWidth
--local ek_yardHeight
 
function Tourist:GetBestZoneCoordinate(x, y, zone)
if not kal_yardWidth then
kal_yardWidth = yardWidths[Kalimdor]
kal_yardHeight = yardHeights[Kalimdor]
ek_yardWidth = yardWidths[Eastern_Kingdoms]
ek_yardHeight = yardHeights[Eastern_Kingdoms]
end
 
-- if not kal_yardWidth then
local kal_yardWidth = yardWidths[Kalimdor]
local kal_yardHeight = yardHeights[Kalimdor]
local ek_yardWidth = yardWidths[Eastern_Kingdoms]
local ek_yardHeight = yardHeights[Eastern_Kingdoms]
-- end
 
local zone_yardXOffset = yardXOffsets[zone]
if not zone_yardXOffset then
return x, y, zone
1563,6 → 1670,31
[930] = "Throne of Thunder",
[935] = "Deepwind Gorge",
[951] = "Timeless Isle",
[941] = "Frostfire Ridge",
[945] = "Tanaan Jungle",
[946] = "Talador",
[947] = "Shadowmoon Valley",
[948] = "Spires of Arak",
[949] = "Gorgrond",
[950] = "Nagrand",
[953] = "Siege of Orgrimmar",
[962] = "Draenor",
[964] = "Bloodmaul Slag Mines",
[969] = "Shadowmoon Burial Grounds",
[970] = "Tanaan Jungle - Assault on the Dark Portal",
[971] = "Lunarfall",
[976] = "Frostwall",
[978] = "Ashran",
[984] = "Auchindoun",
[987] = "Iron Docks",
[988] = "Blackrock Foundry",
[989] = "Skyreach",
[993] = "Grimrail Depot",
[994] = "Highmaul",
[995] = "Upper Blackrock Spire",
[1008] = "The Everbloom",
[1009] = "Stormshield",
[1011] = "Warspear",
}
 
local zoneTranslation = {
2047,7 → 2179,7
BZR[localizedZoneName] = englishName
end
else
--trace("! ----- No map for ID "..tostring(mapID).." ("..tostring(englishName)..")")
-- trace("! ----- No map for ID "..tostring(mapID).." ("..tostring(englishName)..")")
end
end
 
2082,75 → 2214,88
 
-- TRANSPORT DEFINITIONS ----------------------------------------------------------------
 
local BOOTYBAY_RATCHET_BOAT = string.format(X_Y_BOAT, BZ["The Cape of Stranglethorn"], BZ["Northern Barrens"])
local MENETHIL_THERAMORE_BOAT = string.format(X_Y_BOAT, BZ["Wetlands"], BZ["Dustwallow Marsh"])
local MENETHIL_HOWLINGFJORD_BOAT = string.format(X_Y_BOAT, BZ["Wetlands"], BZ["Howling Fjord"])
local DARNASSUS_EXODAR_PORTAL = string.format(X_Y_PORTAL, BZ["Darnassus"], BZ["The Exodar"])
local EXODAR_DARNASSUS_PORTAL = string.format(X_Y_PORTAL, BZ["The Exodar"], BZ["Darnassus"])
local TELDRASSIL_AZUREMYST_BOAT = string.format(X_Y_BOAT, BZ["Teldrassil"], BZ["Azuremyst Isle"])
local TELDRASSIL_STORMWIND_BOAT = string.format(X_Y_BOAT, BZ["Teldrassil"], BZ["Stormwind City"])
local DARNASSUS_BLASTEDLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["Darnassus"], BZ["Blasted Lands"])
local EXODAR_BLASTEDLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["The Exodar"], BZ["Blasted Lands"])
local STORMWIND_BOREANTUNDRA_BOAT = string.format(X_Y_BOAT, BZ["Stormwind City"], BZ["Borean Tundra"])
local STORMWIND_BLASTEDLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Blasted Lands"])
local IRONFORGE_BLASTEDLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["Ironforge"], BZ["Blasted Lands"])
local ORGRIMMAR_BOREANTUNDRA_ZEPPELIN = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Borean Tundra"])
local ORGRIMMAR_UNDERCITY_ZEPPELIN = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Undercity"])
local ORGRIMMAR_GROMGOL_ZEPPELIN = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Northern Stranglethorn"])
local ORGRIMMAR_THUNDERBLUFF_ZEPPELIN = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Thunder Bluff"])
local ORGRIMMAR_BLASTEDLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Blasted Lands"])
local UNDERCITY_HOWLINGFJORD_ZEPPELIN = string.format(X_Y_ZEPPELIN, BZ["Undercity"], BZ["Howling Fjord"])
local UNDERCITY_GROMGOL_ZEPPELIN = string.format(X_Y_ZEPPELIN, BZ["Undercity"], BZ["Northern Stranglethorn"])
local UNDERCITY_BLASTEDLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["Undercity"], BZ["Blasted Lands"])
local THUNDERBLUFF_BLASTEDLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["Thunder Bluff"], BZ["Blasted Lands"])
local SILVERMOON_UNDERCITY_TELEPORT = string.format(X_Y_TELEPORT, BZ["Silvermoon City"], BZ["Undercity"])
local SILVERMOON_BLASTEDLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["Silvermoon City"], BZ["Blasted Lands"])
local SHATTRATH_QUELDANAS_PORTAL = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Isle of Quel'Danas"])
local SHATTRATH_COT_PORTAL = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Caverns of Time"])
local MOAKI_UNUPE_BOAT = string.format(X_Y_BOAT, BZ["Dragonblight"], BZ["Borean Tundra"])
local MOAKI_KAMAGUA_BOAT = string.format(X_Y_BOAT, BZ["Dragonblight"], BZ["Howling Fjord"])
local DALARAN_COT_PORTAL = string.format(X_Y_PORTAL, BZ["Dalaran"], BZ["Caverns of Time"])
local DALARAN_CRYSTALSONG_TELEPORT = string.format(X_Y_TELEPORT, BZ["Dalaran"], BZ["Crystalsong Forest"])
local TWILIGHTHIGHLANDS_ORGRIMMAR_PORTAL = string.format(X_Y_PORTAL, BZ["Twilight Highlands"], BZ["Orgrimmar"])
local ORGRIMMAR_TWILIGHTHIGHLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Twilight Highlands"])
local ORGRIMMAR_MOUNTHYJAL_PORTAL = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Mount Hyjal"])
local ORGRIMMAR_DEEPHOLM_PORTAL = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Deepholm"])
local DEEPHOLM_ORGRIMMAR_PORTAL = string.format(X_Y_PORTAL, BZ["Deepholm"], BZ["Orgrimmar"])
local ORGRIMMAR_ULDUM_PORTAL = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Uldum"])
local ORGRIMMAR_VASHJIR_PORTAL = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Vashj'ir"])
local ORGRIMMAR_TOLBARAD_PORTAL = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Tol Barad Peninsula"])
local TOLBARAD_ORGRIMMAR_PORTAL = string.format(X_Y_PORTAL, BZ["Tol Barad Peninsula"], BZ["Orgrimmar"])
local TWILIGHTHIGHLANDS_STORMWIND_PORTAL = string.format(X_Y_PORTAL, BZ["Twilight Highlands"], BZ["Stormwind City"])
local STORMWIND_TWILIGHTHIGHLANDS_PORTAL = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Twilight Highlands"])
local STORMWIND_MOUNTHYJAL_PORTAL = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Mount Hyjal"])
local STORMWIND_DEEPHOLM_PORTAL = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Deepholm"])
local DEEPHOLM_STORMWIND_PORTAL = string.format(X_Y_PORTAL, BZ["Deepholm"], BZ["Stormwind City"])
local STORMWIND_ULDUM_PORTAL = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Uldum"])
local STORMWIND_VASHJIR_PORTAL = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Vashj'ir"])
local STORMWIND_TOLBARAD_PORTAL = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Tol Barad Peninsula"])
local TOLBARAD_STORMWIND_PORTAL = string.format(X_Y_PORTAL, BZ["Tol Barad Peninsula"], BZ["Stormwind City"])
local HELLFIRE_ORGRIMMAR_PORTAL = string.format(X_Y_PORTAL, BZ["Hellfire Peninsula"], BZ["Orgrimmar"])
local HELLFIRE_STORMWIND_PORTAL = string.format(X_Y_PORTAL, BZ["Hellfire Peninsula"], BZ["Stormwind City"])
local DALARAN_ORGRIMMAR_PORTAL = string.format(X_Y_PORTAL, BZ["Dalaran"], BZ["Orgrimmar"])
local DALARAN_STORMWIND_PORTAL = string.format(X_Y_PORTAL, BZ["Dalaran"], BZ["Stormwind City"])
local ORGRIMMAR_JADEFOREST_PORTAL = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["The Jade Forest"])
local JADEFOREST_ORGRIMMAR_PORTAL = string.format(X_Y_PORTAL, BZ["The Jade Forest"], BZ["Orgrimmar"])
local STORMWIND_JADEFOREST_PORTAL = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["The Jade Forest"])
local JADEFOREST_STORMWIND_PORTAL = string.format(X_Y_PORTAL, BZ["The Jade Forest"], BZ["Stormwind City"])
local transports = {}
 
transports["BOOTYBAY_RATCHET_BOAT"] = string.format(X_Y_BOAT, BZ["The Cape of Stranglethorn"], BZ["Northern Barrens"])
transports["MENETHIL_THERAMORE_BOAT"] = string.format(X_Y_BOAT, BZ["Wetlands"], BZ["Dustwallow Marsh"])
transports["MENETHIL_HOWLINGFJORD_BOAT"] = string.format(X_Y_BOAT, BZ["Wetlands"], BZ["Howling Fjord"])
transports["DARNASSUS_EXODAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Darnassus"], BZ["The Exodar"])
transports["EXODAR_DARNASSUS_PORTAL"] = string.format(X_Y_PORTAL, BZ["The Exodar"], BZ["Darnassus"])
transports["TELDRASSIL_AZUREMYST_BOAT"] = string.format(X_Y_BOAT, BZ["Teldrassil"], BZ["Azuremyst Isle"])
transports["TELDRASSIL_STORMWIND_BOAT"] = string.format(X_Y_BOAT, BZ["Teldrassil"], BZ["Stormwind City"])
transports["DARNASSUS_BLASTEDLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Darnassus"], BZ["Blasted Lands"])
transports["EXODAR_BLASTEDLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["The Exodar"], BZ["Blasted Lands"])
transports["STORMWIND_BOREANTUNDRA_BOAT"] = string.format(X_Y_BOAT, BZ["Stormwind City"], BZ["Borean Tundra"])
transports["STORMWIND_BLASTEDLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Blasted Lands"])
transports["STORMWIND_HELLFIRE_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Hellfire Peninsula"])
transports["IRONFORGE_BLASTEDLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Ironforge"], BZ["Blasted Lands"])
transports["ORGRIMMAR_BOREANTUNDRA_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Borean Tundra"])
transports["ORGRIMMAR_UNDERCITY_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Undercity"])
transports["ORGRIMMAR_GROMGOL_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Northern Stranglethorn"])
transports["ORGRIMMAR_THUNDERBLUFF_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Orgrimmar"], BZ["Thunder Bluff"])
transports["ORGRIMMAR_BLASTEDLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Blasted Lands"])
transports["ORGRIMMAR_HELLFIRE_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Hellfire Peninsula"])
transports["UNDERCITY_HOWLINGFJORD_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Undercity"], BZ["Howling Fjord"])
transports["UNDERCITY_GROMGOL_ZEPPELIN"] = string.format(X_Y_ZEPPELIN, BZ["Undercity"], BZ["Northern Stranglethorn"])
transports["UNDERCITY_BLASTEDLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Undercity"], BZ["Blasted Lands"])
transports["THUNDERBLUFF_BLASTEDLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Thunder Bluff"], BZ["Blasted Lands"])
transports["SILVERMOON_UNDERCITY_TELEPORT"] = string.format(X_Y_TELEPORT, BZ["Silvermoon City"], BZ["Undercity"])
transports["SILVERMOON_BLASTEDLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Silvermoon City"], BZ["Blasted Lands"])
transports["SHATTRATH_QUELDANAS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Isle of Quel'Danas"])
transports["SHATTRATH_COT_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shattrath City"], BZ["Caverns of Time"])
transports["MOAKI_UNUPE_BOAT"] = string.format(X_Y_BOAT, BZ["Dragonblight"], BZ["Borean Tundra"])
transports["MOAKI_KAMAGUA_BOAT"] = string.format(X_Y_BOAT, BZ["Dragonblight"], BZ["Howling Fjord"])
transports["DALARAN_COT_PORTAL"] = string.format(X_Y_PORTAL, BZ["Dalaran"], BZ["Caverns of Time"])
transports["DALARAN_CRYSTALSONG_TELEPORT"] = string.format(X_Y_TELEPORT, BZ["Dalaran"], BZ["Crystalsong Forest"])
transports["TWILIGHTHIGHLANDS_ORGRIMMAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Twilight Highlands"], BZ["Orgrimmar"])
transports["ORGRIMMAR_TWILIGHTHIGHLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Twilight Highlands"])
transports["ORGRIMMAR_MOUNTHYJAL_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Mount Hyjal"])
transports["ORGRIMMAR_DEEPHOLM_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Deepholm"])
transports["DEEPHOLM_ORGRIMMAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Deepholm"], BZ["Orgrimmar"])
transports["ORGRIMMAR_ULDUM_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Uldum"])
transports["ORGRIMMAR_VASHJIR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Vashj'ir"])
transports["ORGRIMMAR_TOLBARAD_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["Tol Barad Peninsula"])
transports["TOLBARAD_ORGRIMMAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Tol Barad Peninsula"], BZ["Orgrimmar"])
transports["TWILIGHTHIGHLANDS_STORMWIND_PORTAL"] = string.format(X_Y_PORTAL, BZ["Twilight Highlands"], BZ["Stormwind City"])
transports["STORMWIND_TWILIGHTHIGHLANDS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Twilight Highlands"])
transports["STORMWIND_MOUNTHYJAL_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Mount Hyjal"])
transports["STORMWIND_DEEPHOLM_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Deepholm"])
transports["DEEPHOLM_STORMWIND_PORTAL"] = string.format(X_Y_PORTAL, BZ["Deepholm"], BZ["Stormwind City"])
transports["STORMWIND_ULDUM_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Uldum"])
transports["STORMWIND_VASHJIR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Vashj'ir"])
transports["STORMWIND_TOLBARAD_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["Tol Barad Peninsula"])
transports["TOLBARAD_STORMWIND_PORTAL"] = string.format(X_Y_PORTAL, BZ["Tol Barad Peninsula"], BZ["Stormwind City"])
transports["HELLFIRE_ORGRIMMAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Hellfire Peninsula"], BZ["Orgrimmar"])
transports["HELLFIRE_STORMWIND_PORTAL"] = string.format(X_Y_PORTAL, BZ["Hellfire Peninsula"], BZ["Stormwind City"])
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"])
transports["ORGRIMMAR_JADEFOREST_PORTAL"] = string.format(X_Y_PORTAL, BZ["Orgrimmar"], BZ["The Jade Forest"])
transports["JADEFOREST_ORGRIMMAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["The Jade Forest"], BZ["Orgrimmar"])
transports["STORMWIND_JADEFOREST_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormwind City"], BZ["The Jade Forest"])
transports["JADEFOREST_STORMWIND_PORTAL"] = string.format(X_Y_PORTAL, BZ["The Jade Forest"], BZ["Stormwind City"])
 
local TOWNLONGSTEPPES_ISLEOFTHUNDER_PORTAL = string.format(X_Y_PORTAL, BZ["Townlong Steppes"], BZ["Isle of Thunder"])
local ISLEOFTHUNDER_TOWNLONGSTEPPES_PORTAL = string.format(X_Y_PORTAL, BZ["Isle of Thunder"], BZ["Townlong Steppes"])
transports["TOWNLONGSTEPPES_ISLEOFTHUNDER_PORTAL"] = string.format(X_Y_PORTAL, BZ["Townlong Steppes"], BZ["Isle of Thunder"])
transports["ISLEOFTHUNDER_TOWNLONGSTEPPES_PORTAL"] = string.format(X_Y_PORTAL, BZ["Isle of Thunder"], BZ["Townlong Steppes"])
 
transports["DARKMOON_MULGORE_PORTAL"] = string.format(X_Y_PORTAL, BZ["Darkmoon Island"], BZ["Mulgore"])
transports["DARKMOON_ELWYNNFOREST_PORTAL"] = string.format(X_Y_PORTAL, BZ["Darkmoon Island"], BZ["Elwynn Forest"])
transports["MULGORE_DARKMOON_PORTAL"] = string.format(X_Y_PORTAL, BZ["Mulgore"], BZ["Darkmoon Island"])
transports["ELWYNNFOREST_DARKMOON_PORTAL"] = string.format(X_Y_PORTAL, BZ["Elwynn Forest"], BZ["Darkmoon Island"])
 
transports["WARSPEAR_ORGRIMMAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Warspear"], BZ["Orgrimmar"])
transports["WARSPEAR_UNDERCITY_PORTAL"] = string.format(X_Y_PORTAL, BZ["Warspear"], BZ["Undercity"])
transports["WARSPEAR_THUNDERBLUFF_PORTAL"] = string.format(X_Y_PORTAL, BZ["Warspear"], BZ["Thunder Bluff"])
transports["STORMSHIELD_STORMWIND_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormshield"], BZ["Stormwind City"])
transports["STORMSHIELD_IRONFORGE_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormshield"], BZ["Ironforge"])
transports["STORMSHIELD_DARNASSUS_PORTAL"] = string.format(X_Y_PORTAL, BZ["Stormshield"], BZ["Darnassus"])
transports["SHADOWMOONVALLEY_STORMWIND_PORTAL"] = string.format(X_Y_PORTAL, BZ["Shadowmoon Valley"], BZ["Stormwind City"])
transports["FROSTFIRERIDGE_ORGRIMMAR_PORTAL"] = string.format(X_Y_PORTAL, BZ["Frostfire Ridge"], BZ["Orgrimmar"])
 
local DARKMOON_MULGORE_PORTAL = string.format(X_Y_PORTAL, BZ["Darkmoon Island"], BZ["Mulgore"])
local DARKMOON_ELWYNNFOREST_PORTAL = string.format(X_Y_PORTAL, BZ["Darkmoon Island"], BZ["Elwynn Forest"])
local MULGORE_DARKMOON_PORTAL = string.format(X_Y_PORTAL, BZ["Mulgore"], BZ["Darkmoon Island"])
local ELWYNNFOREST_DARKMOON_PORTAL = string.format(X_Y_PORTAL, BZ["Elwynn Forest"], BZ["Darkmoon Island"])
 
 
 
 
 
local zones = {}
 
 
-- CONTINENTS ---------------------------------------------------------------
 
zones[BZ["Eastern Kingdoms"]] = {
2187,7 → 2332,7
 
zones[BZ["The Maelstrom"]] = {
type = "Continent",
-- yards = 0.0, -- TODO
-- yards = 0.0, -- TODO?
x_offset = 0,
y_offset = 0,
continent = The_Maelstrom,
2195,7 → 2340,7
 
zones[BZ["Pandaria"]] = {
type = "Continent",
-- yards = 0.0, -- TODO
-- yards = 15515.300292969
x_offset = 0,
y_offset = 0,
continent = Pandaria,
2208,10 → 2353,18
y_offset = 0,
}
 
zones[BZ["Draenor"]] = {
type = "Continent",
-- yards = 22735.782226563,
x_offset = 0,
y_offset = 0,
continent = Draenor,
}
 
 
-- TRANSPORTS ---------------------------------------------------------------
 
zones[STORMWIND_BOREANTUNDRA_BOAT] = {
zones[transports["STORMWIND_BOREANTUNDRA_BOAT"]] = {
paths = {
[BZ["Stormwind City"]] = true,
[BZ["Borean Tundra"]] = true,
2220,7 → 2373,7
type = "Transport",
}
 
zones[ORGRIMMAR_BOREANTUNDRA_ZEPPELIN] = {
zones[transports["ORGRIMMAR_BOREANTUNDRA_ZEPPELIN"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
[BZ["Borean Tundra"]] = true,
2229,7 → 2382,7
type = "Transport",
}
 
zones[UNDERCITY_HOWLINGFJORD_ZEPPELIN] = {
zones[transports["UNDERCITY_HOWLINGFJORD_ZEPPELIN"]] = {
paths = {
[BZ["Tirisfal Glades"]] = true,
[BZ["Howling Fjord"]] = true,
2238,7 → 2391,7
type = "Transport",
}
 
zones[ORGRIMMAR_BLASTEDLANDS_PORTAL] = {
zones[transports["ORGRIMMAR_BLASTEDLANDS_PORTAL"]] = {
paths = {
[BZ["Blasted Lands"]] = true,
},
2246,15 → 2399,23
type = "Transport",
}
 
zones[HELLFIRE_ORGRIMMAR_PORTAL] = {
zones[transports["ORGRIMMAR_HELLFIRE_PORTAL"]] = {
paths = {
[BZ["Hellfire Peninsula"]] = true,
},
faction = "Horde",
type = "Transport",
}
 
zones[transports["HELLFIRE_ORGRIMMAR_PORTAL"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
},
faction = "Horde",
type = "Transport",
}
 
zones[UNDERCITY_BLASTEDLANDS_PORTAL] = {
zones[transports["UNDERCITY_BLASTEDLANDS_PORTAL"]] = {
paths = {
[BZ["Blasted Lands"]] = true,
},
2262,7 → 2423,7
type = "Transport",
}
 
zones[THUNDERBLUFF_BLASTEDLANDS_PORTAL] = {
zones[transports["THUNDERBLUFF_BLASTEDLANDS_PORTAL"]] = {
paths = {
[BZ["Blasted Lands"]] = true,
},
2270,7 → 2431,7
type = "Transport",
}
 
zones[SILVERMOON_BLASTEDLANDS_PORTAL] = {
zones[transports["SILVERMOON_BLASTEDLANDS_PORTAL"]] = {
paths = {
[BZ["Blasted Lands"]] = true,
},
2278,7 → 2439,7
type = "Transport",
}
 
zones[STORMWIND_BLASTEDLANDS_PORTAL] = {
zones[transports["STORMWIND_BLASTEDLANDS_PORTAL"]] = {
paths = {
[BZ["Blasted Lands"]] = true,
},
2286,27 → 2447,36
type = "Transport",
}
 
zones[HELLFIRE_STORMWIND_PORTAL] = {
zones[transports["STORMWIND_HELLFIRE_PORTAL"]] = {
paths = {
[BZ["Hellfire Peninsula"]] = true,
},
faction = "Alliance",
type = "Transport",
}
 
 
zones[transports["HELLFIRE_STORMWIND_PORTAL"]] = {
paths = {
[BZ["Stormwind City"]] = true,
},
faction = "Alliance",
type = "Transport",
}
 
zones[DALARAN_STORMWIND_PORTAL] = {
zones[transports["DALARAN_STORMWIND_PORTAL"]] = {
paths = BZ["Stormwind City"],
faction = "Alliance",
type = "Transport",
}
 
zones[DALARAN_ORGRIMMAR_PORTAL] = {
zones[transports["DALARAN_ORGRIMMAR_PORTAL"]] = {
paths = BZ["Orgrimmar"],
faction = "Horde",
type = "Transport",
}
 
zones[DARNASSUS_BLASTEDLANDS_PORTAL] = {
zones[transports["DARNASSUS_BLASTEDLANDS_PORTAL"]] = {
paths = {
[BZ["Blasted Lands"]] = true,
},
2314,7 → 2484,7
type = "Transport",
}
 
zones[EXODAR_BLASTEDLANDS_PORTAL] = {
zones[transports["EXODAR_BLASTEDLANDS_PORTAL"]] = {
paths = {
[BZ["Blasted Lands"]] = true,
},
2322,7 → 2492,7
type = "Transport",
}
 
zones[DARNASSUS_EXODAR_PORTAL] = {
zones[transports["DARNASSUS_EXODAR_PORTAL"]] = {
paths = {
[BZ["The Exodar"]] = true,
},
2330,7 → 2500,7
type = "Transport",
}
 
zones[EXODAR_DARNASSUS_PORTAL] = {
zones[transports["EXODAR_DARNASSUS_PORTAL"]] = {
paths = {
[BZ["Darnassus"]] = true,
},
2339,26 → 2509,26
}
 
 
zones[MULGORE_DARKMOON_PORTAL] = {
zones[transports["MULGORE_DARKMOON_PORTAL"]] = {
paths = BZ["Darkmoon Island"],
faction = "Horde",
type = "Transport",
}
 
zones[DARKMOON_MULGORE_PORTAL] = {
zones[transports["DARKMOON_MULGORE_PORTAL"]] = {
paths = BZ["Mulgore"],
faction = "Horde",
type = "Transport",
}
 
 
zones[ELWYNNFOREST_DARKMOON_PORTAL] = {
zones[transports["ELWYNNFOREST_DARKMOON_PORTAL"]] = {
paths = BZ["Darkmoon Island"],
faction = "Alliance",
type = "Transport",
}
 
zones[DARKMOON_ELWYNNFOREST_PORTAL] = {
zones[transports["DARKMOON_ELWYNNFOREST_PORTAL"]] = {
paths = BZ["Elwynn Forest"],
faction = "Alliance",
type = "Transport",
2366,7 → 2536,7
 
 
 
zones[IRONFORGE_BLASTEDLANDS_PORTAL] = {
zones[transports["IRONFORGE_BLASTEDLANDS_PORTAL"]] = {
paths = {
[BZ["Blasted Lands"]] = true,
},
2374,7 → 2544,7
type = "Transport",
}
 
zones[TELDRASSIL_STORMWIND_BOAT] = {
zones[transports["TELDRASSIL_STORMWIND_BOAT"]] = {
paths = {
[BZ["Teldrassil"]] = true,
[BZ["Stormwind City"]] = true,
2383,7 → 2553,7
type = "Transport",
}
 
zones[TELDRASSIL_AZUREMYST_BOAT] = {
zones[transports["TELDRASSIL_AZUREMYST_BOAT"]] = {
paths = {
[BZ["Teldrassil"]] = true,
[BZ["Azuremyst Isle"]] = true,
2392,7 → 2562,7
type = "Transport",
}
 
zones[BOOTYBAY_RATCHET_BOAT] = {
zones[transports["BOOTYBAY_RATCHET_BOAT"]] = {
paths = {
[BZ["The Cape of Stranglethorn"]] = true,
[BZ["Northern Barrens"]] = true,
2400,7 → 2570,7
type = "Transport",
}
 
zones[MENETHIL_HOWLINGFJORD_BOAT] = {
zones[transports["MENETHIL_HOWLINGFJORD_BOAT"]] = {
paths = {
[BZ["Wetlands"]] = true,
[BZ["Howling Fjord"]] = true,
2409,7 → 2579,7
type = "Transport",
}
 
zones[MENETHIL_THERAMORE_BOAT] = {
zones[transports["MENETHIL_THERAMORE_BOAT"]] = {
paths = {
[BZ["Wetlands"]] = true,
[BZ["Dustwallow Marsh"]] = true,
2418,7 → 2588,7
type = "Transport",
}
 
zones[ORGRIMMAR_GROMGOL_ZEPPELIN] = {
zones[transports["ORGRIMMAR_GROMGOL_ZEPPELIN"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
[BZ["Northern Stranglethorn"]] = true,
2427,7 → 2597,7
type = "Transport",
}
 
zones[ORGRIMMAR_UNDERCITY_ZEPPELIN] = {
zones[transports["ORGRIMMAR_UNDERCITY_ZEPPELIN"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
[BZ["Tirisfal Glades"]] = true,
2436,7 → 2606,7
type = "Transport",
}
 
zones[ORGRIMMAR_THUNDERBLUFF_ZEPPELIN] = {
zones[transports["ORGRIMMAR_THUNDERBLUFF_ZEPPELIN"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
[BZ["Thunder Bluff"]] = true,
2445,17 → 2615,17
type = "Transport",
}
 
zones[SHATTRATH_QUELDANAS_PORTAL] = {
zones[transports["SHATTRATH_QUELDANAS_PORTAL"]] = {
paths = BZ["Isle of Quel'Danas"],
type = "Transport",
}
 
zones[SHATTRATH_COT_PORTAL] = {
zones[transports["SHATTRATH_COT_PORTAL"]] = {
paths = BZ["Caverns of Time"],
type = "Transport",
}
 
zones[MOAKI_UNUPE_BOAT] = {
zones[transports["MOAKI_UNUPE_BOAT"]] = {
paths = {
[BZ["Dragonblight"]] = true,
[BZ["Borean Tundra"]] = true,
2463,7 → 2633,7
type = "Transport",
}
 
zones[MOAKI_KAMAGUA_BOAT] = {
zones[transports["MOAKI_KAMAGUA_BOAT"]] = {
paths = {
[BZ["Dragonblight"]] = true,
[BZ["Howling Fjord"]] = true,
2489,7 → 2659,7
type = "Transport",
}
 
zones[UNDERCITY_GROMGOL_ZEPPELIN] = {
zones[transports["UNDERCITY_GROMGOL_ZEPPELIN"]] = {
paths = {
[BZ["Northern Stranglethorn"]] = true,
[BZ["Tirisfal Glades"]] = true,
2498,7 → 2668,7
type = "Transport",
}
 
zones[SILVERMOON_UNDERCITY_TELEPORT] = {
zones[transports["SILVERMOON_UNDERCITY_TELEPORT"]] = {
paths = {
[BZ["Silvermoon City"]] = true,
[BZ["Undercity"]] = true,
2507,7 → 2677,7
type = "Transport",
}
 
zones[DALARAN_CRYSTALSONG_TELEPORT] = {
zones[transports["DALARAN_CRYSTALSONG_TELEPORT"]] = {
paths = {
[BZ["Dalaran"]] = true,
[BZ["Crystalsong Forest"]] = true,
2515,13 → 2685,13
type = "Transport",
}
 
zones[DALARAN_COT_PORTAL] = {
zones[transports["DALARAN_COT_PORTAL"]] = {
paths = BZ["Caverns of Time"],
type = "Transport",
}
 
 
zones[STORMWIND_TWILIGHTHIGHLANDS_PORTAL] = {
zones[transports["STORMWIND_TWILIGHTHIGHLANDS_PORTAL"]] = {
paths = {
[BZ["Twilight Highlands"]] = true,
},
2529,7 → 2699,7
type = "Transport",
}
 
zones[TWILIGHTHIGHLANDS_STORMWIND_PORTAL] = {
zones[transports["TWILIGHTHIGHLANDS_STORMWIND_PORTAL"]] = {
paths = {
[BZ["Stormwind City"]] = true,
},
2537,7 → 2707,7
type = "Transport",
}
 
zones[STORMWIND_MOUNTHYJAL_PORTAL] = {
zones[transports["STORMWIND_MOUNTHYJAL_PORTAL"]] = {
paths = {
[BZ["Mount Hyjal"]] = true,
},
2545,7 → 2715,7
type = "Transport",
}
 
zones[STORMWIND_DEEPHOLM_PORTAL] = {
zones[transports["STORMWIND_DEEPHOLM_PORTAL"]] = {
paths = {
[BZ["Deepholm"]] = true,
},
2553,7 → 2723,7
type = "Transport",
}
 
zones[DEEPHOLM_STORMWIND_PORTAL] = {
zones[transports["DEEPHOLM_STORMWIND_PORTAL"]] = {
paths = {
[BZ["Stormwind City"]] = true,
},
2561,7 → 2731,7
type = "Transport",
}
 
zones[TOLBARAD_STORMWIND_PORTAL] = {
zones[transports["TOLBARAD_STORMWIND_PORTAL"]] = {
paths = {
[BZ["Stormwind City"]] = true,
},
2569,7 → 2739,7
type = "Transport",
}
 
zones[STORMWIND_ULDUM_PORTAL] = {
zones[transports["STORMWIND_ULDUM_PORTAL"]] = {
paths = {
[BZ["Uldum"]] = true,
},
2577,7 → 2747,7
type = "Transport",
}
 
zones[STORMWIND_VASHJIR_PORTAL] = {
zones[transports["STORMWIND_VASHJIR_PORTAL"]] = {
paths = {
[BZ["Vashj'ir"]] = true,
},
2585,7 → 2755,7
type = "Transport",
}
 
zones[STORMWIND_TOLBARAD_PORTAL] = {
zones[transports["STORMWIND_TOLBARAD_PORTAL"]] = {
paths = {
[BZ["Tol Barad Peninsula"]] = true,
},
2593,7 → 2763,7
type = "Transport",
}
 
zones[ORGRIMMAR_TWILIGHTHIGHLANDS_PORTAL] = {
zones[transports["ORGRIMMAR_TWILIGHTHIGHLANDS_PORTAL"]] = {
paths = {
[BZ["Twilight Highlands"]] = true,
},
2601,7 → 2771,7
type = "Transport",
}
 
zones[TWILIGHTHIGHLANDS_ORGRIMMAR_PORTAL] = {
zones[transports["TWILIGHTHIGHLANDS_ORGRIMMAR_PORTAL"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
},
2609,7 → 2779,7
type = "Transport",
}
 
zones[ORGRIMMAR_MOUNTHYJAL_PORTAL] = {
zones[transports["ORGRIMMAR_MOUNTHYJAL_PORTAL"]] = {
paths = {
[BZ["Mount Hyjal"]] = true,
},
2617,7 → 2787,7
type = "Transport",
}
 
zones[ORGRIMMAR_DEEPHOLM_PORTAL] = {
zones[transports["ORGRIMMAR_DEEPHOLM_PORTAL"]] = {
paths = {
[BZ["Deepholm"]] = true,
},
2625,7 → 2795,7
type = "Transport",
}
 
zones[DEEPHOLM_ORGRIMMAR_PORTAL] = {
zones[transports["DEEPHOLM_ORGRIMMAR_PORTAL"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
},
2633,7 → 2803,7
type = "Transport",
}
 
zones[TOLBARAD_ORGRIMMAR_PORTAL] = {
zones[transports["TOLBARAD_ORGRIMMAR_PORTAL"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
},
2641,7 → 2811,7
type = "Transport",
}
 
zones[ORGRIMMAR_ULDUM_PORTAL] = {
zones[transports["ORGRIMMAR_ULDUM_PORTAL"]] = {
paths = {
[BZ["Uldum"]] = true,
},
2649,7 → 2819,7
type = "Transport",
}
 
zones[ORGRIMMAR_VASHJIR_PORTAL] = {
zones[transports["ORGRIMMAR_VASHJIR_PORTAL"]] = {
paths = {
[BZ["Vashj'ir"]] = true,
},
2657,7 → 2827,7
type = "Transport",
}
 
zones[ORGRIMMAR_TOLBARAD_PORTAL] = {
zones[transports["ORGRIMMAR_TOLBARAD_PORTAL"]] = {
paths = {
[BZ["Tol Barad Peninsula"]] = true,
},
2666,7 → 2836,7
}
 
 
zones[ORGRIMMAR_JADEFOREST_PORTAL] = {
zones[transports["ORGRIMMAR_JADEFOREST_PORTAL"]] = {
paths = {
[BZ["The Jade Forest"]] = true,
},
2674,7 → 2844,7
type = "Transport",
}
 
zones[JADEFOREST_ORGRIMMAR_PORTAL] = {
zones[transports["JADEFOREST_ORGRIMMAR_PORTAL"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
},
2682,7 → 2852,7
type = "Transport",
}
 
zones[STORMWIND_JADEFOREST_PORTAL] = {
zones[transports["STORMWIND_JADEFOREST_PORTAL"]] = {
paths = {
[BZ["The Jade Forest"]] = true,
},
2690,7 → 2860,7
type = "Transport",
}
 
zones[JADEFOREST_STORMWIND_PORTAL] = {
zones[transports["JADEFOREST_STORMWIND_PORTAL"]] = {
paths = {
[BZ["Stormwind City"]] = true,
},
2698,24 → 2868,87
type = "Transport",
}
 
zones[TOWNLONGSTEPPES_ISLEOFTHUNDER_PORTAL] = {
zones[transports["TOWNLONGSTEPPES_ISLEOFTHUNDER_PORTAL"]] = {
paths = {
[BZ["Isle of Thunder"]] = true,
},
type = "Transport",
}
 
zones[ISLEOFTHUNDER_TOWNLONGSTEPPES_PORTAL] = {
zones[transports["ISLEOFTHUNDER_TOWNLONGSTEPPES_PORTAL"]] = {
paths = {
[BZ["Townlong Steppes"]] = true,
},
type = "Transport",
}
 
zones[transports["WARSPEAR_ORGRIMMAR_PORTAL"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
},
faction = "Horde",
type = "Transport",
}
 
zones[transports["WARSPEAR_UNDERCITY_PORTAL"]] = {
paths = {
[BZ["Undercity"]] = true,
},
faction = "Horde",
type = "Transport",
}
 
zones[transports["WARSPEAR_THUNDERBLUFF_PORTAL"]] = {
paths = {
[BZ["Thunder Bluff"]] = true,
},
faction = "Horde",
type = "Transport",
}
 
 
zones[transports["STORMSHIELD_STORMWIND_PORTAL"]] = {
paths = {
[BZ["Stormwind City"]] = true,
},
faction = "Alliance",
type = "Transport",
}
 
zones[transports["STORMSHIELD_IRONFORGE_PORTAL"]] = {
paths = {
[BZ["Ironforge"]] = true,
},
faction = "Alliance",
type = "Transport",
}
 
zones[transports["STORMSHIELD_DARNASSUS_PORTAL"]] = {
paths = {
[BZ["Darnassus"]] = true,
},
faction = "Alliance",
type = "Transport",
}
 
zones[transports["SHADOWMOONVALLEY_STORMWIND_PORTAL"]] = {
paths = {
[BZ["Stormwind City"]] = true,
},
faction = "Alliance",
type = "Transport",
}
 
zones[transports["FROSTFIRERIDGE_ORGRIMMAR_PORTAL"]] = {
paths = {
[BZ["Orgrimmar"]] = true,
},
faction = "Horde",
type = "Transport",
}
 
 
 
-- ZONES, INSTANCES AND COMPLEXES ---------------------------------------------------------
 
zones[BZ["Alterac Valley"]] = {
2754,7 → 2987,7
paths = {
[BZ["Dun Morogh"]] = true,
[BZ["Deeprun Tram"]] = true,
[IRONFORGE_BLASTEDLANDS_PORTAL] = true,
[transports["IRONFORGE_BLASTEDLANDS_PORTAL"]] = true,
},
faction = "Alliance",
type = "City",
2767,8 → 3000,8
continent = Eastern_Kingdoms,
paths = {
[BZ["Eversong Woods"]] = true,
[SILVERMOON_UNDERCITY_TELEPORT] = true,
[SILVERMOON_BLASTEDLANDS_PORTAL] = true,
[transports["SILVERMOON_UNDERCITY_TELEPORT"]] = true,
[transports["SILVERMOON_BLASTEDLANDS_PORTAL"]] = true,
},
faction = "Horde",
type = "City",
2783,16 → 3016,17
[BZ["Deeprun Tram"]] = true,
[BZ["The Stockade"]] = true,
[BZ["Elwynn Forest"]] = true,
[TELDRASSIL_STORMWIND_BOAT] = true,
[STORMWIND_BOREANTUNDRA_BOAT] = true,
[STORMWIND_BLASTEDLANDS_PORTAL] = true,
[STORMWIND_TWILIGHTHIGHLANDS_PORTAL] = true,
[STORMWIND_MOUNTHYJAL_PORTAL] = true,
[STORMWIND_DEEPHOLM_PORTAL] = true,
[STORMWIND_ULDUM_PORTAL] = true,
[STORMWIND_VASHJIR_PORTAL] = true,
[STORMWIND_TOLBARAD_PORTAL] = true,
[STORMWIND_JADEFOREST_PORTAL] = true,
[transports["TELDRASSIL_STORMWIND_BOAT"]] = true,
[transports["STORMWIND_BOREANTUNDRA_BOAT"]] = true,
[transports["STORMWIND_BLASTEDLANDS_PORTAL"]] = true,
[transports["STORMWIND_HELLFIRE_PORTAL"]] = true,
[transports["STORMWIND_TWILIGHTHIGHLANDS_PORTAL"]] = true,
[transports["STORMWIND_MOUNTHYJAL_PORTAL"]] = true,
[transports["STORMWIND_DEEPHOLM_PORTAL"]] = true,
[transports["STORMWIND_ULDUM_PORTAL"]] = true,
[transports["STORMWIND_VASHJIR_PORTAL"]] = true,
[transports["STORMWIND_TOLBARAD_PORTAL"]] = true,
[transports["STORMWIND_JADEFOREST_PORTAL"]] = true,
},
faction = "Alliance",
type = "City",
2806,8 → 3040,8
instances = BZ["Ruins of Lordaeron"],
paths = {
[BZ["Tirisfal Glades"]] = true,
[SILVERMOON_UNDERCITY_TELEPORT] = true,
[UNDERCITY_BLASTEDLANDS_PORTAL] = true,
[transports["SILVERMOON_UNDERCITY_TELEPORT"]] = true,
[transports["UNDERCITY_BLASTEDLANDS_PORTAL"]] = true,
},
faction = "Horde",
type = "City",
2868,7 → 3102,7
[BZ["Stormwind City"]] = true,
[BZ["Duskwood"]] = true,
[BZ["Burning Steppes"]] = true,
[ELWYNNFOREST_DARKMOON_PORTAL] = true,
[transports["ELWYNNFOREST_DARKMOON_PORTAL"]] = true,
},
faction = "Alliance",
fishing_min = 25,
2926,9 → 3160,9
[BZ["Undercity"]] = true,
[BZ["Scarlet Monastery"]] = true,
[BZ["Scarlet Halls"]] = true,
[UNDERCITY_GROMGOL_ZEPPELIN] = true,
[ORGRIMMAR_UNDERCITY_ZEPPELIN] = true,
[UNDERCITY_HOWLINGFJORD_ZEPPELIN] = true,
[transports["UNDERCITY_GROMGOL_ZEPPELIN"]] = true,
[transports["ORGRIMMAR_UNDERCITY_ZEPPELIN"]] = true,
[transports["UNDERCITY_HOWLINGFJORD_ZEPPELIN"]] = true,
[BZ["Silverpine Forest"]] = true,
[BZ["Deathknell"]] = true,
},
3076,8 → 3310,8
continent = Eastern_Kingdoms,
paths = {
[BZ["Arathi Highlands"]] = true,
[MENETHIL_THERAMORE_BOAT] = true,
[MENETHIL_HOWLINGFJORD_BOAT] = true,
[transports["MENETHIL_THERAMORE_BOAT"]] = true,
[transports["MENETHIL_HOWLINGFJORD_BOAT"]] = true,
[BZ["Dun Morogh"]] = true,
[BZ["Loch Modan"]] = true,
},
3110,9 → 3344,9
paths = {
[BZ["Duskwood"]] = true,
[BZ["Zul'Gurub"]] = true,
[ORGRIMMAR_GROMGOL_ZEPPELIN] = true,
[UNDERCITY_GROMGOL_ZEPPELIN] = true,
[BOOTYBAY_RATCHET_BOAT] = true,
[transports["ORGRIMMAR_GROMGOL_ZEPPELIN"]] = true,
[transports["UNDERCITY_GROMGOL_ZEPPELIN"]] = true,
[transports["BOOTYBAY_RATCHET_BOAT"]] = true,
},
fishing_min = 150,
battlepet_low = 7,
3128,8 → 3362,8
[BZ["The Cape of Stranglethorn"]] = true,
[BZ["Duskwood"]] = true,
[BZ["Zul'Gurub"]] = true,
[ORGRIMMAR_GROMGOL_ZEPPELIN] = true,
[UNDERCITY_GROMGOL_ZEPPELIN] = true,
[transports["ORGRIMMAR_GROMGOL_ZEPPELIN"]] = true,
[transports["UNDERCITY_GROMGOL_ZEPPELIN"]] = true,
},
fishing_min = 150,
battlepet_low = 7,
3141,7 → 3375,7
high = 35,
continent = Eastern_Kingdoms,
paths = {
[BOOTYBAY_RATCHET_BOAT] = true,
[transports["BOOTYBAY_RATCHET_BOAT"]] = true,
["Northern Stranglethorn"] = true,
},
fishing_min = 225,
3205,6 → 3439,7
[BZ["Blackwing Descent"]] = true,
[BZ["Molten Core"]] = true,
[BZ["Blackrock Spire"]] = true,
[BZ["Upper Blackrock Spire"]] = true,
},
paths = {
[BZ["Blackrock Mountain"]] = true,
3230,6 → 3465,7
[BZ["Blackwing Descent"]] = true,
[BZ["Molten Core"]] = true,
[BZ["Blackrock Spire"]] = true,
[BZ["Upper Blackrock Spire"]] = true,
},
paths = {
[BZ["Burning Steppes"]] = true,
3240,6 → 3476,7
[BZ["Blackrock Depths"]] = true,
[BZ["Blackrock Caverns"]] = true,
[BZ["Blackrock Spire"]] = true,
[BZ["Upper Blackrock Spire"]] = true,
},
type = "Complex",
fishing_min = 1, -- lava
3284,6 → 3521,7
[BZ["Blackwing Descent"]] = true,
[BZ["Molten Core"]] = true,
[BZ["Blackrock Spire"]] = true,
[BZ["Upper Blackrock Spire"]] = true,
},
paths = {
[BZ["Blackrock Mountain"]] = true,
3423,7 → 3661,7
-- }
 
-- New instance (MoP)
zones[BZ["Scarlet Halls"]] = { -- TODO: check levels
zones[BZ["Scarlet Halls"]] = {
low = 28,
high = 31,
continent = Eastern_Kingdoms,
3457,7 → 3695,7
-- }
 
-- New instance (MoP)
zones[BZ["Scarlet Monastery"]] = { -- TODO: check levels
zones[BZ["Scarlet Monastery"]] = {
low = 30,
high = 33,
continent = Eastern_Kingdoms,
3512,12 → 3750,25
[BZ["Blackwing Descent"]] = true,
},
groupSize = 5,
altGroupSize = 10,
type = "Instance",
complex = BZ["Blackrock Mountain"],
entrancePortal = { BZ["Burning Steppes"], 29.7, 37.5 },
}
 
zones[BZ["Upper Blackrock Spire"]] = {
low = 100,
high = 100,
continent = Eastern_Kingdoms,
paths = {
[BZ["Blackrock Mountain"]] = true,
},
groupSize = 5,
type = "Instance",
complex = BZ["Blackrock Mountain"],
entrancePortal = { BZ["Burning Steppes"], 29.7, 37.5 },
}
 
 
zones[BZ["Scholomance"]] = {
low = 38,
high = 48,
3599,8 → 3850,8
continent = Kalimdor,
paths = {
[BZ["Teldrassil"]] = true,
[DARNASSUS_BLASTEDLANDS_PORTAL] = true,
[DARNASSUS_EXODAR_PORTAL] = true,
[transports["DARNASSUS_BLASTEDLANDS_PORTAL"]] = true,
[transports["DARNASSUS_EXODAR_PORTAL"]] = true,
},
faction = "Alliance",
type = "City",
3632,18 → 3883,19
[BZ["Durotar"]] = true,
[BZ["Ragefire Chasm"]] = true,
[BZ["Azshara"]] = true,
[ORGRIMMAR_UNDERCITY_ZEPPELIN] = true,
[ORGRIMMAR_GROMGOL_ZEPPELIN] = true,
[ORGRIMMAR_BOREANTUNDRA_ZEPPELIN] = true,
[ORGRIMMAR_THUNDERBLUFF_ZEPPELIN] = true,
[ORGRIMMAR_BLASTEDLANDS_PORTAL] = true,
[ORGRIMMAR_TWILIGHTHIGHLANDS_PORTAL] = true,
[ORGRIMMAR_MOUNTHYJAL_PORTAL] = true,
[ORGRIMMAR_DEEPHOLM_PORTAL] = true,
[ORGRIMMAR_ULDUM_PORTAL] = true,
[ORGRIMMAR_VASHJIR_PORTAL] = true,
[ORGRIMMAR_TOLBARAD_PORTAL] = true,
[ORGRIMMAR_JADEFOREST_PORTAL] = true,
[transports["ORGRIMMAR_UNDERCITY_ZEPPELIN"]] = true,
[transports["ORGRIMMAR_GROMGOL_ZEPPELIN"]] = true,
[transports["ORGRIMMAR_BOREANTUNDRA_ZEPPELIN"]] = true,
[transports["ORGRIMMAR_THUNDERBLUFF_ZEPPELIN"]] = true,
[transports["ORGRIMMAR_BLASTEDLANDS_PORTAL"]] = true,
[transports["ORGRIMMAR_HELLFIRE_PORTAL"]] = true,
[transports["ORGRIMMAR_TWILIGHTHIGHLANDS_PORTAL"]] = true,
[transports["ORGRIMMAR_MOUNTHYJAL_PORTAL"]] = true,
[transports["ORGRIMMAR_DEEPHOLM_PORTAL"]] = true,
[transports["ORGRIMMAR_ULDUM_PORTAL"]] = true,
[transports["ORGRIMMAR_VASHJIR_PORTAL"]] = true,
[transports["ORGRIMMAR_TOLBARAD_PORTAL"]] = true,
[transports["ORGRIMMAR_JADEFOREST_PORTAL"]] = true,
},
faction = "Horde",
type = "City",
3656,8 → 3908,8
continent = Kalimdor,
paths = {
[BZ["Azuremyst Isle"]] = true,
[EXODAR_BLASTEDLANDS_PORTAL] = true,
[EXODAR_DARNASSUS_PORTAL] = true,
[transports["EXODAR_BLASTEDLANDS_PORTAL"]] = true,
[transports["EXODAR_DARNASSUS_PORTAL"]] = true,
},
faction = "Alliance",
type = "City",
3669,8 → 3921,8
continent = Kalimdor,
paths = {
[BZ["Mulgore"]] = true,
[ORGRIMMAR_THUNDERBLUFF_ZEPPELIN] = true,
[THUNDERBLUFF_BLASTEDLANDS_PORTAL] = true,
[transports["ORGRIMMAR_THUNDERBLUFF_ZEPPELIN"]] = true,
[transports["THUNDERBLUFF_BLASTEDLANDS_PORTAL"]] = true,
},
faction = "Horde",
type = "City",
3687,7 → 3939,7
[BZ["The Exodar"]] = true,
[BZ["Ammen Vale"]] = true,
[BZ["Bloodmyst Isle"]] = true,
[TELDRASSIL_AZUREMYST_BOAT] = true,
[transports["TELDRASSIL_AZUREMYST_BOAT"]] = true,
},
faction = "Alliance",
fishing_min = 25,
3752,7 → 4004,7
paths = {
[BZ["Thunder Bluff"]] = true,
[BZ["Southern Barrens"]] = true,
[MULGORE_DARKMOON_PORTAL] = true,
[transports["MULGORE_DARKMOON_PORTAL"]] = true,
},
faction = "Horde",
fishing_min = 25,
3778,8 → 4030,8
paths = {
[BZ["Darnassus"]] = true,
[BZ["Shadowglen"]] = true,
[TELDRASSIL_AZUREMYST_BOAT] = true,
[TELDRASSIL_STORMWIND_BOAT] = true,
[transports["TELDRASSIL_AZUREMYST_BOAT"]] = true,
[transports["TELDRASSIL_STORMWIND_BOAT"]] = true,
},
faction = "Alliance",
fishing_min = 25,
3835,7 → 4087,7
[BZ["Ashenvale"]] = true,
[BZ["Durotar"]] = true,
[BZ["Wailing Caverns"]] = true,
[BOOTYBAY_RATCHET_BOAT] = true,
[transports["BOOTYBAY_RATCHET_BOAT"]] = true,
[BZ["Warsong Gulch"]] = isHorde and true or nil,
[BZ["Stonetalon Mountains"]] = true,
},
3945,7 → 4197,7
[BZ["Onyxia's Lair"]] = true,
[BZ["Southern Barrens"]] = true,
[BZ["Thousand Needles"]] = true,
[MENETHIL_THERAMORE_BOAT] = true,
[transports["MENETHIL_THERAMORE_BOAT"]] = true,
},
fishing_min = 225,
battlepet_low = 12,
4261,6 → 4513,7
type = "Complex",
}
 
-- a.k.a. The Escape from Durnhold Keep
zones[BZ["Old Hillsbrad Foothills"]] = {
low = 64,
high = 73,
4269,7 → 4522,7
groupSize = 5,
type = "Instance",
complex = BZ["Caverns of Time"],
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 },
entrancePortal = { BZ["Caverns of Time"], 26.7, 32.6 },
}
 
zones[BZ["The Black Morass"]] = {
4280,7 → 4533,7
groupSize = 5,
type = "Instance",
complex = BZ["Caverns of Time"],
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 },
entrancePortal = { BZ["Caverns of Time"], 34.4, 84.9 },
}
 
zones[BZ["The Culling of Stratholme"]] = {
4291,9 → 4544,10
groupSize = 5,
type = "Instance",
complex = BZ["Caverns of Time"],
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 },
entrancePortal = { BZ["Caverns of Time"], 60.3, 82.8 },
}
 
-- a.k.a. The Battle for Mount Hyjal
zones[BZ["Hyjal Summit"]] = {
low = 70,
high = 72,
4302,7 → 4556,7
groupSize = 25,
type = "Instance",
complex = BZ["Caverns of Time"],
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 },
entrancePortal = { BZ["Caverns of Time"], 38.8, 16.6 },
}
 
zones[BZ["Shattrath City"]] = {
4310,8 → 4564,8
paths = {
[BZ["Terokkar Forest"]] = true,
[BZ["Nagrand"]] = true,
[SHATTRATH_QUELDANAS_PORTAL] = true,
--[SHATTRATH_COT_PORTAL] = true,
[transports["SHATTRATH_QUELDANAS_PORTAL"]] = true,
--[transports["SHATTRATH_COT_PORTAL"]] = true,
},
faction = "Sanctuary",
type = "City",
4354,8 → 4608,8
[BZ["The Dark Portal"]] = true,
[BZ["Terokkar Forest"]] = true,
[BZ["Hellfire Citadel"]] = true,
[HELLFIRE_ORGRIMMAR_PORTAL] = true,
[HELLFIRE_STORMWIND_PORTAL] = true,
[transports["HELLFIRE_ORGRIMMAR_PORTAL"]] = true,
[transports["HELLFIRE_STORMWIND_PORTAL"]] = true,
},
complexes = {
[BZ["Hellfire Citadel"]] = true,
4824,10 → 5078,10
continent = Northrend,
paths = {
[BZ["The Violet Hold"]] = true,
[DALARAN_CRYSTALSONG_TELEPORT] = true,
[DALARAN_COT_PORTAL] = true,
[DALARAN_STORMWIND_PORTAL] = true,
[DALARAN_ORGRIMMAR_PORTAL] = 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,
4859,9 → 5113,9
[BZ["Coldarra"]] = true,
[BZ["Dragonblight"]] = true,
[BZ["Sholazar Basin"]] = true,
[STORMWIND_BOREANTUNDRA_BOAT] = true,
[ORGRIMMAR_BOREANTUNDRA_ZEPPELIN] = true,
[MOAKI_UNUPE_BOAT] = true,
[transports["STORMWIND_BOREANTUNDRA_BOAT"]] = true,
[transports["ORGRIMMAR_BOREANTUNDRA_ZEPPELIN"]] = true,
[transports["MOAKI_UNUPE_BOAT"]] = true,
},
instances = {
[BZ["The Nexus"]] = true,
4900,9 → 5154,9
continent = Northrend,
paths = {
[BZ["Grizzly Hills"]] = true,
[MENETHIL_HOWLINGFJORD_BOAT] = true,
[UNDERCITY_HOWLINGFJORD_ZEPPELIN] = true,
[MOAKI_KAMAGUA_BOAT] = true,
[transports["MENETHIL_HOWLINGFJORD_BOAT"]] = true,
[transports["UNDERCITY_HOWLINGFJORD_ZEPPELIN"]] = true,
[transports["MOAKI_KAMAGUA_BOAT"]] = true,
[BZ["Utgarde Keep"]] = true,
[BZ["Utgarde Pinnacle"]] = true,
},
4924,8 → 5178,8
[BZ["Grizzly Hills"]] = true,
[BZ["Zul'Drak"]] = true,
[BZ["Crystalsong Forest"]] = true,
[MOAKI_UNUPE_BOAT] = true,
[MOAKI_KAMAGUA_BOAT] = true,
[transports["MOAKI_UNUPE_BOAT"]] = true,
[transports["MOAKI_KAMAGUA_BOAT"]] = true,
[BZ["Azjol-Nerub"]] = true,
[BZ["Ahn'kahet: The Old Kingdom"]] = true,
[BZ["Naxxramas"]] = true,
4994,7 → 5248,7
high = 80,
continent = Northrend,
paths = {
[DALARAN_CRYSTALSONG_TELEPORT] = true,
[transports["DALARAN_CRYSTALSONG_TELEPORT"]] = true,
[BZ["Dragonblight"]] = true,
[BZ["Zul'Drak"]] = true,
[BZ["The Storm Peaks"]] = true,
5465,8 → 5719,8
[BZ["Wetlands"]] = true,
[BZ["Grim Batol"]] = true,
[BZ["Twin Peaks"]] = true,
[TWILIGHTHIGHLANDS_STORMWIND_PORTAL] = true,
[TWILIGHTHIGHLANDS_ORGRIMMAR_PORTAL] = true,
[transports["TWILIGHTHIGHLANDS_STORMWIND_PORTAL"]] = true,
[transports["TWILIGHTHIGHLANDS_ORGRIMMAR_PORTAL"]] = true,
},
fishing_min = 650,
battlepet_low = 23,
5492,8 → 5746,8
continent = Eastern_Kingdoms,
paths = {
[BZ["Tol Barad"]] = true,
[TOLBARAD_ORGRIMMAR_PORTAL] = true,
[TOLBARAD_STORMWIND_PORTAL] = true,
[transports["TOLBARAD_ORGRIMMAR_PORTAL"]] = true,
[transports["TOLBARAD_STORMWIND_PORTAL"]] = true,
},
fishing_min = 675,
battlepet_low = 23,
5574,8 → 5828,8
},
paths = {
[BZ["The Stonecore"]] = true,
[DEEPHOLM_ORGRIMMAR_PORTAL] = true,
[DEEPHOLM_STORMWIND_PORTAL] = true,
[transports["DEEPHOLM_ORGRIMMAR_PORTAL"]] = true,
[transports["DEEPHOLM_STORMWIND_PORTAL"]] = true,
},
fishing_min = 550,
battlepet_low = 22,
5618,11 → 5872,11
continent = The_Maelstrom,
fishing_min = 75,
paths = {
[DARKMOON_MULGORE_PORTAL] = true,
[DARKMOON_ELWYNNFOREST_PORTAL] = true,
[transports["DARKMOON_MULGORE_PORTAL"]] = true,
[transports["DARKMOON_ELWYNNFOREST_PORTAL"]] = true,
},
-- battlepet_low = 1, TODO
-- battlepet_high = 2,
battlepet_low = 1,
battlepet_high = 10,
}
 
 
5702,7 → 5956,6
[BZ["Burning Steppes"]] = true,
[BZ["Blackrock Mountain"]] = true,
[BZ["Blackrock Spire"]] = true,
[BZ["Blackrock Spire"]] = true,
},
groupSize = 10,
altGroupSize = 25,
5764,7 → 6017,7
groupSize = 5,
type = "Instance",
complex = BZ["Caverns of Time"],
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 }, -- TODO: check
entrancePortal = { BZ["Caverns of Time"], 57.1, 25.7 },
}
 
zones[BZ["Hour of Twilight"]] = {
5775,7 → 6028,7
groupSize = 5,
type = "Instance",
complex = BZ["Caverns of Time"],
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 }, -- TODO: check
entrancePortal = { BZ["Caverns of Time"], 67.9, 29.0 },
}
 
zones[BZ["Well of Eternity"]] = {
5786,7 → 6039,7
groupSize = 5,
type = "Instance",
complex = BZ["Caverns of Time"],
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 }, -- TODO: check
entrancePortal = { BZ["Caverns of Time"], 22.2, 63.6 },
}
 
zones[BZ["Dragon Soul"]] = {
5798,7 → 6051,7
altGroupSize = 25,
type = "Instance",
complex = BZ["Caverns of Time"],
entrancePortal = { BZ["Tanaris"], 66.2, 49.3 }, -- TODO: check
entrancePortal = { BZ["Caverns of Time"], 60.0, 21.1 },
}
 
 
5845,8 → 6098,8
[BZ["Temple of the Jade Serpent"]] = true,
[BZ["Valley of the Four Winds"]] = true,
[BZ["Timeless Isle"]] = true,
[JADEFOREST_ORGRIMMAR_PORTAL] = true,
[JADEFOREST_STORMWIND_PORTAL] = true,
[transports["JADEFOREST_ORGRIMMAR_PORTAL"]] = true,
[transports["JADEFOREST_STORMWIND_PORTAL"]] = true,
},
fishing_min = 650,
battlepet_low = 23,
5915,7 → 6168,7
paths = {
[BZ["Siege of Niuzao Temple"]] = true,
[BZ["Dread Wastes"]] = true,
[TOWNLONGSTEPPES_ISLEOFTHUNDER_PORTAL] = true,
[transports["TOWNLONGSTEPPES_ISLEOFTHUNDER_PORTAL"]] = true,
},
fishing_min = 700,
battlepet_low = 24,
5946,10 → 6199,12
continent = Pandaria,
instances = {
[BZ["Mogu'shan Palace"]] = true,
[BZ["Siege of Orgrimmar"]] = true,
},
paths = {
[BZ["Mogu'shan Palace"]] = true,
[BZ["Kun-Lai Summit"]] = true,
[BZ["Siege of Orgrimmar"]] = true,
},
fishing_min = 825,
battlepet_low = 23,
5982,7 → 6237,7
[BZ["Throne of Thunder"]] = true,
},
paths = {
[ISLEOFTHUNDER_TOWNLONGSTEPPES_PORTAL] = true,
[transports["ISLEOFTHUNDER_TOWNLONGSTEPPES_PORTAL"]] = true,
},
fishing_min = 750,
battlepet_low = 23,
5998,6 → 6253,16
battlepet_high = 25,
}
 
-- Patch 5.4 Zone
zones[BZ["Timeless Isle"]] = {
low = 90,
high = 90,
continent = Pandaria,
paths = BZ["The Jade Forest"],
fishing_min = 825,
battlepet_low = 25,
battlepet_high = 25,
}
 
 
-- Mists of Pandaria (MoP) cities
6024,6 → 6289,8
battlepet_high = 23,
}
 
 
 
-- Mists of Pandaria (MoP) instances
 
zones[BZ["Temple of the Jade Serpent"]] = {
6064,7 → 6331,7
groupSize = 10,
altGroupSize = 25,
type = "Instance",
-- entrancePortal = { BZ["Kun-Lai Summit"], 66.2, 49.3 }, TODO
entrancePortal = { BZ["Kun-Lai Summit"], 59.1, 39.8 },
}
 
zones[BZ["Siege of Niuzao Temple"]] = {
6074,7 → 6341,7
paths = BZ["Townlong Steppes"],
groupSize = 5,
type = "Instance",
-- entrancePortal = { BZ["Townlong Steppes"], 47.70, 51.96 }, TODO
entrancePortal = { BZ["Townlong Steppes"], 34.5, 81.1 },
}
 
zones[BZ["Mogu'shan Palace"]] = {
6084,7 → 6351,7
paths = BZ["Vale of Eternal Blossoms"],
groupSize = 5,
type = "Instance",
-- entrancePortal = { BZ["Vale of Eternal Blossoms"], 47.70, 51.96 }, TODO
entrancePortal = { BZ["Vale of Eternal Blossoms"], 80.7, 33.0 },
}
 
zones[BZ["Gate of the Setting Sun"]] = {
6105,7 → 6372,7
groupSize = 10,
altGroupSize = 25,
type = "Instance",
-- entrancePortal = { BZ["Dread Wastes"], 66.2, 49.3 }, TODO
entrancePortal = { BZ["Dread Wastes"], 39.0, 35.0 },
}
 
zones[BZ["Terrace of Endless Spring"]] = {
6116,7 → 6383,7
groupSize = 10,
altGroupSize = 25,
type = "Instance",
-- entrancePortal = { BZ["The Veiled Stair"], 66.2, 49.3 }, TODO
entrancePortal = { BZ["The Veiled Stair"], 47.9, 60.8 },
}
 
-- Patch 5.2 instance
6128,7 → 6395,7
groupSize = 10,
altGroupSize = 25,
type = "Instance",
-- entrancePortal = { BZ["The Veiled Stair"], 66.2, 49.3 }, TODO
entrancePortal = { BZ["The Veiled Stair"], 63.5, 32.2 },
}
 
-- Patch 5.3 Battleground
6150,26 → 6417,339
type = "Arena",
}
 
-- Patch 5.4 Zone
zones[BZ["Timeless Isle"]] = {
-- Patch 5.4 instance
zones[BZ["Siege of Orgrimmar"]] = {
low = 90,
high = 90,
continent = Pandaria,
paths = BZ["The Jade Forest"],
fishing_min = 825,
paths = BZ["Vale of Eternal Blossoms"],
groupSize = 10,
altGroupSize = 25,
type = "Instance",
entrancePortal = { BZ["Vale of Eternal Blossoms"], 74.0, 42.2 },
}
 
 
-- Warlords of Draenor (WoD) zones --------------------------
 
zones[BZ["Frostfire Ridge"]] = {
low = 90,
high = 92,
continent = Draenor,
instances = {
[BZ["Bloodmaul Slag Mines"]] = true,
},
paths = {
[BZ["Gorgrond"]] = true,
[BZ["Frostwall"]] = true,
[transports["FROSTFIRERIDGE_ORGRIMMAR_PORTAL"]] = true,
},
fishing_min = 950,
battlepet_low = 23,
battlepet_high = 25,
}
 
zones[BZ["Shadowmoon Valley"].." ("..BZ["Draenor"]..")"] = {
low = 90,
high = 92,
continent = Draenor,
instances = {
[BZ["Shadowmoon Burial Grounds"]] = true,
},
paths = {
[BZ["Talador"]] = true,
[BZ["Spires of Arak"]] = true,
[BZ["Tanaan Jungle"]] = true,
[BZ["Lunarfall"]] = true,
[transports["SHADOWMOONVALLEY_STORMWIND_PORTAL"]] = true,
},
fishing_min = 950,
battlepet_low = 23,
battlepet_high = 25,
}
 
zones[BZ["Gorgrond"]] = {
low = 92,
high = 94,
continent = Draenor,
instances = {
[BZ["Iron Docks"]] = true,
[BZ["Grimrail Depot"]] = true,
[BZ["The Everbloom"]] = true,
[BZ["Blackrock Foundry"]] = true,
},
paths = {
[BZ["Frostfire Ridge"]] = true,
[BZ["Talador"]] = true,
[BZ["Tanaan Jungle"]] = true,
},
fishing_min = 950,
battlepet_low = 25,
battlepet_high = 25,
}
 
zones[BZ["Talador"]] = {
low = 94,
high = 96,
continent = Draenor,
instances = {
[BZ["Auchindoun"]] = true,
},
paths = {
[BZ["Shadowmoon Valley"].." ("..BZ["Draenor"]..")"] = true,
[BZ["Gorgrond"]] = true,
[BZ["Tanaan Jungle"]] = true,
[BZ["Spires of Arak"]] = true,
[BZ["Nagrand"].." ("..BZ["Draenor"]..")"] = true,
},
fishing_min = 950,
battlepet_low = 25,
battlepet_high = 25,
}
 
zones[BZ["Spires of Arak"]] = {
low = 96,
high = 98,
continent = Draenor,
instances = {
[BZ["Skyreach"]] = true,
[BZ["Blackrock Foundry"]] = true,
},
paths = {
[BZ["Shadowmoon Valley"].." ("..BZ["Draenor"]..")"] = true,
[BZ["Talador"]] = true,
},
fishing_min = 950,
battlepet_low = 25,
battlepet_high = 25,
}
 
zones[BZ["Nagrand"].." ("..BZ["Draenor"]..")"] = {
low = 98,
high = 100,
continent = Draenor,
instances = {
[BZ["Highmaul"]] = true,
[BZ["Blackrock Foundry"]] = true,
},
paths = {
[BZ["Talador"]] = true,
},
fishing_min = 950,
battlepet_low = 25,
battlepet_high = 25,
}
 
zones[BZ["Tanaan Jungle"]] = {
low = 100,
high = 100,
continent = Draenor,
-- instances = {
-- [BZ["Iron Citadel"]] = true,
-- },
paths = {
[BZ["Talador"]] = true,
[BZ["Shadowmoon Valley"].." ("..BZ["Draenor"]..")"] = true,
[BZ["Gorgrond"]] = true,
},
fishing_min = 950,
battlepet_low = 25,
battlepet_high = 25,
}
 
zones[BZ["Ashran"]] = {
low = 100,
high = 100,
continent = Draenor,
type = "PvP Zone",
-- instances = {
-- [BZ["Iron Citadel"]] = true,
-- },
paths = {
[BZ["Warspear"]] = true,
[BZ["Stormshield"]] = true,
[transports["WARSPEAR_ORGRIMMAR_PORTAL"]] = true,
[transports["WARSPEAR_UNDERCITY_PORTAL"]] = true,
[transports["WARSPEAR_THUNDERBLUFF_PORTAL"]] = true,
[transports["STORMSHIELD_STORMWIND_PORTAL"]] = true,
[transports["STORMSHIELD_IRONFORGE_PORTAL"]] = true,
[transports["STORMSHIELD_DARNASSUS_PORTAL"]] = true,
},
fishing_min = 950,
battlepet_low = 25,
battlepet_high = 25,
}
 
 
-- Warlords of Draenor (WoD) cities
 
zones[BZ["Warspear"]] = {
continent = Draenor,
paths = {
[BZ["Ashran"]] = true,
[transports["WARSPEAR_ORGRIMMAR_PORTAL"]] = true,
[transports["WARSPEAR_UNDERCITY_PORTAL"]] = true,
[transports["WARSPEAR_THUNDERBLUFF_PORTAL"]] = true,
},
faction = "Horde",
type = "City",
fishing_min = 950,
battlepet_low = 25,
battlepet_high = 25,
}
 
zones[BZ["Stormshield"]] = {
continent = Draenor,
paths = {
[BZ["Ashran"]] = true,
[transports["STORMSHIELD_STORMWIND_PORTAL"]] = true,
[transports["STORMSHIELD_IRONFORGE_PORTAL"]] = true,
[transports["STORMSHIELD_DARNASSUS_PORTAL"]] = true,
},
faction = "Alliance",
type = "City",
fishing_min = 950,
battlepet_low = 25,
battlepet_high = 25,
}
 
 
-- Warlords of Draenor (WoD) garrisons
 
zones[BZ["Lunarfall"]] = {
low = 90,
high = 100,
continent = Draenor,
paths = {
[BZ["Shadowmoon Valley"].." ("..BZ["Draenor"]..")"] = true,
},
faction = "Alliance",
fishing_min = 950,
}
 
zones[BZ["Frostwall"]] = {
low = 90,
high = 100,
continent = Draenor,
paths = {
[BZ["Frostfire Ridge"]] = true,
},
faction = "Horde",
fishing_min = 950,
}
 
-- Warlords of Draenor (WoD) dungeons and raids
 
zones[BZ["Bloodmaul Slag Mines"]] = {
low = 90,
high = 92,
continent = Draenor,
paths = BZ["Forstfire Ridge"],
groupSize = 5,
type = "Instance",
-- entrancePortal = { BZ["Forstfire Ridge"], 0.00, 0.00 }, TODO
}
 
zones[BZ["Shadowmoon Burial Grounds"]] = {
low = 100,
high = 100,
continent = Draenor,
paths = BZ["Shadowmoon Valley"].." ("..BZ["Draenor"]..")",
groupSize = 5,
type = "Instance",
-- entrancePortal = { BZ["Shadowmoon Valley"].." ("..BZ["Draenor"]..")", 0.00, 0.00 }, TODO
}
 
zones[BZ["Iron Docks"]] = {
low = 92,
high = 94,
continent = Draenor,
paths = BZ["Gorgrond"],
groupSize = 5,
type = "Instance",
-- entrancePortal = { BZ["Gorgrond"], 0.00, 0.00 }, TODO
}
 
zones[BZ["Grimrail Depot"]] = {
low = 100,
high = 100,
continent = Draenor,
paths = BZ["Gorgrond"],
groupSize = 5,
type = "Instance",
-- entrancePortal = { BZ["Gorgrond"], 0.00, 0.00 }, TODO
}
 
zones[BZ["The Everbloom"]] = {
low = 100,
high = 100,
continent = Draenor,
paths = BZ["Gorgrond"],
groupSize = 5,
type = "Instance",
-- entrancePortal = { BZ["Gorgrond"], 0.00, 0.00 }, TODO
}
 
zones[BZ["Blackrock Foundry"]] = {
low = 100,
high = 100,
continent = Draenor,
paths = BZ["Gorgrond"],
groupSize = 10,
altGroupSize = 25,
type = "Instance",
-- entrancePortal = { BZ["Gorgrond"], 0.00, 0.00 }, TODO
}
 
zones[BZ["Auchindoun"]] = {
low = 95,
high = 97,
continent = Draenor,
paths = BZ["Talador"],
groupSize = 5,
type = "Instance",
-- entrancePortal = { BZ["Talador"], 0.00, 0.00 }, TODO
}
 
zones[BZ["Skyreach"]] = {
low = 97,
high = 99,
continent = Draenor,
paths = BZ["Spires of Arak"],
groupSize = 5,
type = "Instance",
-- entrancePortal = { BZ["Spires of Arak"], 0.00, 0.00 }, TODO
}
 
zones[BZ["Highmaul"]] = {
low = 100,
high = 100,
continent = Draenor,
paths = BZ["Nagrand"].." ("..BZ["Draenor"]..")",
groupSize = 10,
altGroupSize = 25,
type = "Instance",
-- entrancePortal = { BZ["Nagrand"].." ("..BZ["Draenor"]..")", 0.00, 0.00 }, TODO
}
 
-- zones[BZ["Iron Citadel"]] = {
-- low = 100,
-- high = 100,
-- continent = Draenor,
-- paths = BZ["Tanaan Jungle"],
-- groupSize = 10,
-- altGroupSize = 25,
-- type = "Instance",
-- entrancePortal = { BZ["Tanaan Jungle"], 0.00, 0.00 }, TODO
-- }
 
 
 
--------------------------------------------------------------------------------------------------------
-- CORE --
--------------------------------------------------------------------------------------------------------
local continentNames = { GetMapContinents() }
local doneZones = {}
local zoneIndices = {}
 
 
 
-- Lookup for zones that are on a sub-continent map and therefore have no own highlight on the continent map
-- Value is the name of the sub-continent map that will be searched instead of the continent map
local searchMaps = {}
6188,14 → 6768,20
searchMaps[BZ["Deathknell"]] = BZ["Tirisfal Glades"]
searchMaps[BZ["Northshire"]] = BZ["Elwynn Forest"]
searchMaps[BZ["Sunstrider Isle"]] = BZ["Eversong Woods"]
searchMaps[BZ["Warspear"]] = BZ["Ashran"]
searchMaps[BZ["Stormshield"]] = BZ["Ashran"]
searchMaps[BZ["Darnassus"]] = BZ["Teldrassil"]
searchMaps[BZ["Orgrimmar"]] = BZ["Durotar"]
searchMaps[BZ["Ruins of Gilneas City"]] = BZ["Ruins of Gilneas"]
searchMaps[BZ["Stormwind City"]] = BZ["Elwynn Forest"]
searchMaps[BZ["Lunarfall"]] = BZ["Shadowmoon Valley"].." ("..BZ["Draenor"]..")"
searchMaps[BZ["Frostwall"]] = BZ["Frostfire Ridge"]
 
-- Unfortunaltely this trick does not work for cities.
-- searchMaps[BZ["Stormwind City"]] = BZ["Elwynn Forest"]
-- searchMaps[BZ["Darnassus"]] = BZ["Teldrassil"]
-- searchMaps[BZ["Orgrimmar"]] = BZ["Durotar"]
-- searchMaps[BZ["Ruins of Gilneas City"]] = BZ["Ruins of Gilneas"]
-- searchMaps[BZ["Shrine of Two Moons"]] = BZ["Vale of Eternal Blossoms"]
-- searchMaps[BZ["Shrine of Seven Stars"]] = BZ["Vale of Eternal Blossoms"]
-- Unfortunately this trick does not work for the following cities.
searchMaps[BZ["Dalaran"]] = BZ["Crystalsong Forest"]
searchMaps[BZ["Shrine of Two Moons"]] = BZ["Vale of Eternal Blossoms"]
searchMaps[BZ["Shrine of Seven Stars"]] = BZ["Vale of Eternal Blossoms"]
 
 
-- The submaps have different sizes than the continent maps -> use submap size as 'continent size'
-- These values are hardcoded because it is not guaranteed the searchmap has been 'discovered' yet
6210,14 → 6796,15
submapContinentYards[BZ["Tirisfal Glades"]] = 4518.7
submapContinentYards[BZ["Elwynn Forest"]] = 3470.8
submapContinentYards[BZ["Eversong Woods"]] = 4925.0
submapContinentYards[BZ["Ruins of Gilneas"]] = 3145.8
submapContinentYards[BZ["Vale of Eternal Blossoms"]] = 2533.3
submapContinentYards[BZ["Ashran"]] = 3122.9
 
-- submapContinentYards[BZ["Ruins of Gilneas"]] = 3145.8
-- submapContinentYards[BZ["Vale of Eternal Blossoms"]] = 2533.3
 
 
 
 
trace("Tourist: Initializing continents...")
 
local continentNames = Tourist:GetMapContinentsAlt()
 
for continentID, continentName in ipairs(continentNames) do
SetMapZoom(continentID)
 
6228,11 → 6815,26
local _, X1, Y1, X2, Y2 = GetCurrentMapZone()
zones[continentName].yards = X1 - X2
 
trace("Continent yards for "..tostring(continentName)..": "..tostring(zones[continentName].yards))
trace("Tourist: Continent yards for "..tostring(continentName)..": "..tostring(zones[continentName].yards))
end
end
 
 
-- Check for unknown continents (not in LibTourist yet)
for continentID, continentName in ipairs(continentNames) do
if not zones[continentName] then
-- Unknown Continent
trace("! Tourist: TODO: Add Continent '"..tostring(continentName).."'")
local z = {}
z.type = zones[BZ["Outland"]].type
z.yards = zones[BZ["Outland"]].yards
z.x_offset = zones[BZ["Outland"]].x_offset
z.y_offset = zones[BZ["Outland"]].y_offset
z.continent = continentName
 
zones[continentName] = z
end
end
 
-- Hack:
-- For the zones below, UpdateMapHighlight() does not return name and map data for the city icon on the continent map
-- Use hardcoded values as default; will be overwritten once the UpdateMapHighlight bug has been fixed - if ever
6240,6 → 6842,7
-- Note: the city highlights/icons on the zone maps can't be used because these return the name but no map data.
-- TODO: determine offset values
 
 
local kalimdorYards = zones[BZ["Kalimdor"]].yards
local eastkingYards = zones[BZ["Eastern Kingdoms"]].yards
local northrendYards = zones[BZ["Northrend"]].yards
6294,103 → 6897,127
-- end hack
 
trace("Tourist: Initializing zones...")
local doneZones = {}
 
for continentID, continentName in ipairs(continentNames) do
SetMapZoom(continentID)
local zoneNames = GetMapZonesAltLocal(continentID)
local continentYards = zones[continentName] and zones[continentName].yards or 0
 
local zoneNames = { GetMapZones(continentID) }
local continentYards = zones[continentName] and zones[continentName].yards or 0
 
-- First, build a collection of zone indices (numbers of the zones within a continent)
-- Build a collection of zone indices (numbers of the zones within a continent)
-- to be able to lookup a zone index for SetMapZoom()
local zoneIndices = {}
for _ = 1, #zoneNames do
zoneIndices[zoneNames[_]] = _
end
 
 
SetMapZoom(continentID)
 
for _ = 1, #zoneNames do
local x, y
local name, fileName, texPctX, texPctY, texX, texY, scrollX, scrollY
 
-- Some zones are not directly accessible from the continent map and have to be searched for on a zone map
local searchMap, zoneIndex
searchMap = searchMaps[zoneNames[_]]
if searchMap then
-- Get the zone index from the lookup
zoneIndex = zoneIndices[searchMap]
if zoneIndex then
-- Draenor zones Frostfire Ridge and Shadowmoon Valley appear twice in the collection of Draenor zones
-- so now we need to be able to skip duplicates, even within a Continent
if not doneZones[continentName.."."..zoneNames[_]] then
 
-- Some zones are not directly accessible from the continent map and have to be searched for on a zone map
local searchMap, zoneIndex
searchMap = searchMaps[zoneNames[_]]
if searchMap then
-- Get the zone index from the lookup
zoneIndex = zoneIndices[searchMap]
trace( "SearchMap for "..tostring(zoneNames[_]).." = "..tostring(zoneIndex).." ("..tostring(searchMap)..")" )
-- Set map to zone map
SetMapZoom(continentID, zoneIndex)
-- Get searchMap size and use as 'continent' size
continentYards = submapContinentYards[searchMap]
end
end
 
-- Probe the map for the map highlight of the zone
local scansDone = 0
repeat
scansDone = scansDone + 1
if scansDone >= 10000 then
-- Timeout
name = nil
break
end
x, y = math.random(), math.random()
name, fileName, texPctX, texPctY, texX, texY, scrollX, scrollY = UpdateMapHighlight(x, y)
until name and not doneZones[name] and name == zoneNames[_] -- do not stop searching until we have a match on zonename
 
-- Process result
local tryGetCurrentMapZone = false
if name then
-- UpdateMapHighlight() has found the zone highlight
if zones[name] then
if fileName then
-- UpdateMapHighlight() returned the zone name and data for the texture
doneZones[name] = true
-- Probe the map for the map highlight of the zone
local scansDone = 0
repeat
scansDone = scansDone + 1
if scansDone >= 10000 then
-- Timeout
trace( "Scan Timeout for "..tostring(zoneNames[_]) )
name = nil
break
end
x, y = math.random(), math.random()
name, fileName, texPctX, texPctY, texX, texY, scrollX, scrollY = UpdateMapHighlight(x, y)
until name == zoneNames[_] -- do not stop searching until we have a match on zonename
-- until name and not doneZones[continentName.."."..name] and name == zoneNames[_] -- do not stop searching until we have a match on zonename
 
 
-- Process result
local tryGetCurrentMapZone = false
if name then
-- UpdateMapHighlight() has found the zone highlight
 
-- Hack to deal with duplicate zone names introduced in 6.0.2
-- From this point on the name must match the hardcoded name in the zones collection
name = Tourist:GetUniqueZoneNameForLookup(name, continentID)
 
if zones[name] then
if fileName then
-- UpdateMapHighlight() returned the zone name and data for the texture
-- Not sure what this is:
if fileName == "EversongWoods" or fileName == "Ghostlands" or fileName == "Sunwell" or fileName == "SilvermoonCity" then
scrollX = scrollX - 0.00168
scrollY = scrollY + 0.01
end
 
-- Not sure what this is:
if fileName == "EversongWoods" or fileName == "Ghostlands" or fileName == "Sunwell" or fileName == "SilvermoonCity" then
scrollX = scrollX - 0.00168
scrollY = scrollY + 0.01
zones[name].yards = texX * continentYards
zones[name].x_offset = scrollX * continentYards
zones[name].y_offset = scrollY * continentYards * 2/3
zones[name].texture = fileName
else
-- UpdateMapHighlight() returned the zone name but did NOT return data for the texture
trace("! Tourist: No texture data from UpdateMapHighlight for "..tostring(name))
tryGetCurrentMapZone = true
end
 
zones[name].yards = texX * continentYards
zones[name].x_offset = scrollX * continentYards
zones[name].y_offset = scrollY * continentYards * 2/3
zones[name].texture = fileName
else
-- UpdateMapHighlight() returned the zone name but did NOT return data for the texture
trace("! Tourist: No texture data from UpdateMapHighlight for "..tostring(name))
tryGetCurrentMapZone = true
trace("! Tourist: TODO: Add zone "..tostring(name))
end
else
trace("! Tourist: TODO: "..tostring(name))
-- UpdateMapHighlight did not return anything
trace("! Tourist: Highlight not found for "..tostring(continentName).."["..tostring(_).."] = "..tostring(zoneNames[_]))
name = zoneNames[_]
tryGetCurrentMapZone = true
end
 
if tryGetCurrentMapZone then
-- Alternative method to gather some of the data. This will overwrite the hardcoded values above,
-- but does not return offset values.
if name ~= BZ["The Maelstrom"] then -- Or zone data will overwrite continent data
zoneIndex = zoneIndices[name]
SetMapZoom(continentID, zoneIndex)
fileName = GetMapInfo()
local _, left, top, right, bot = GetCurrentMapZone()
local sizeInYards = 0
if left and right then
sizeInYards = left - right
end
 
trace( "Alt for "..tostring(name)..": size ="..tostring(sizeInYards)..", fileName="..tostring(fileName) )
if( sizeInYards ~= 0 or not zones[name].yards ) then
zones[name].yards = sizeInYards
end
zones[name].texture = fileName
end
end
 
if zoneIndex then
-- Revert map to current continent map for next zoneName lookup
SetMapZoom(continentID)
continentYards = zones[continentName].yards
end
 
doneZones[continentName.."."..name] = true
else
-- UpdateMapHighlight did not return anything
-- See hack, above
trace("! Tourist: Highlight not found for "..tostring(continentName).."["..tostring(_).."] = "..tostring(zoneNames[_]))
name = zoneNames[_]
tryGetCurrentMapZone = true
trace("! Tourist: Duplicate zone: "..tostring(continentName).."["..tostring(_).."]: "..tostring(zoneNames[_]) )
end
 
if tryGetCurrentMapZone then
-- Alternative method to gather some of the data. This will overwrite the hardcoded values above,
-- but does not return offset values.
zoneIndex = zoneIndices[name]
SetMapZoom(continentID, zoneIndex)
fileName = GetMapInfo()
local _, X1, Y1, X2, Y2 = GetCurrentMapZone()
local sizeInYards = X1 - X2 or 0
 
zones[name].yards = sizeInYards
zones[name].texture = fileName
end
 
if zoneIndex then
-- Revert map to current continent map for next zoneName lookup
SetMapZoom(continentID)
continentYards = zones[continentName].yards
end
end
end
 
6428,7 → 7055,7
end
zones = nil
 
trace("Tourist: BZ initialized.")
trace("Tourist: Initialized.")
 
PLAYER_LEVEL_UP(Tourist)
end
trunk/TitanRecZone/Libs/LibTourist-3.0/LibTourist-3.0.toc
1,10 → 1,10
## Interface: 50400
## Interface: 60000
## LoadOnDemand: 1
## Title: Lib: Tourist-3.0
## Notes: A library to provide information about zones and instances.
## Author: ckknight, Arrowmaster, Odica
## X-Category: Library
## X-Curse-Packaged-Version: r165
## X-Curse-Packaged-Version: r175
## X-Curse-Project-Name: LibTourist-3.0
## X-Curse-Project-ID: libtourist-3-0
## X-Curse-Repository-ID: wow/libtourist-3-0/mainline
trunk/TitanRecZone/Libs/LibTourist-3.0/LibStub/LibStub.lua
1,5 → 1,5
-- $Id: LibStub.lua 76 2007-09-03 01:50:17Z mikk $
-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
-- $Id: LibStub.lua 103 2014-10-16 03:02:50Z mikk $
-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/addons/libstub/ for more info
-- LibStub is hereby placed in the Public Domain
-- Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
trunk/TitanRecZone/Libs/LibTourist-3.0/LibStub/LibStub.toc
1,11 → 1,11
## Interface: 50400
## Interface: 60000
## Title: Lib: LibStub
## Notes: Universal Library Stub
## Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel
## X-Website: http://www.wowace.com/addons/libstub/
## X-Category: Library
## X-License: Public Domain
## X-Curse-Packaged-Version: 1.0.3-50001
## X-License: Public Domain
## X-Curse-Packaged-Version: 1.0.2.60000
## X-Curse-Project-Name: LibStub
## X-Curse-Project-ID: libstub
## X-Curse-Repository-ID: wow/libstub/mainline
trunk/TitanRecZone/Libs/LibStub/LibStub.toc
1,11 → 1,11
## Interface: 50300
## Interface: 60000
## Title: Lib: LibStub
## Notes: Universal Library Stub
## Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel
## X-Website: http://www.wowace.com/addons/libstub/
## X-Category: Library
## X-License: Public Domain
## X-Curse-Packaged-Version: 1.0.3-50001
## X-License: Public Domain
## X-Curse-Packaged-Version: 1.0.2.60000
## X-Curse-Project-Name: LibStub
## X-Curse-Project-ID: libstub
## X-Curse-Repository-ID: wow/libstub/mainline
trunk/TitanRecZone/Libs/LibStub/LibStub.lua
1,5 → 1,5
-- $Id: LibStub.lua 76 2007-09-03 01:50:17Z mikk $
-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
-- $Id: LibStub.lua 103 2014-10-16 03:02:50Z mikk $
-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/addons/libstub/ for more info
-- LibStub is hereby placed in the Public Domain
-- Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
trunk/TitanRecZone/TitanRecZone.toc
1,8 → 1,8
## Interface: 50400
## Title: Titan Panel [|cffeda55fRecomended Zone|r] |cff00aa005.4.0.0|r
## Interface: 60000
## Title: Titan Panel [|cffeda55fRecomended Zone|r] |cff00aa006.0.0.0|r
## Notes: Displays level for current zone and recommends zones and instances for your level.
## Version: 5.4.0.0
## X-Date: 2013-09-11
## Version: 6.0.0.0
## X-Date: 2014-12-02
## Author: Kernighan
## SavedVariables:
## SavedVariablesPerCharacter: