/trunk/TitanRecZone/Libs
-- $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! |
## 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 |
-- $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! |
## 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 |
--[[ |
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/ |
]] |
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 |
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" |
local entrancePortals_x = {} |
local entrancePortals_y = {} |
local zoneIDtoContinentID = {} |
-- HELPER AND LOOKUP FUNCTIONS ------------------------------------------------------------- |
local function PLAYER_LEVEL_UP(self, level) |
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 |
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] |
-- 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 |
return yardWidths[zone], yardHeights[zone] |
end |
function Tourist:GetZoneYardOffset(zone) |
return yardXOffsets[zone], yardYOffsets[zone] |
end |
local ekXOffset = 15525.32200715066 |
local ekYOffset = 672.3934326738229 |
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] |
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 |
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 |
[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 = { |
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 |
-- 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"]] = { |
zones[BZ["The Maelstrom"]] = { |
type = "Continent", |
-- yards = 0.0, -- TODO |
-- yards = 0.0, -- TODO? |
x_offset = 0, |
y_offset = 0, |
continent = The_Maelstrom, |
zones[BZ["Pandaria"]] = { |
type = "Continent", |
-- yards = 0.0, -- TODO |
-- yards = 15515.300292969 |
x_offset = 0, |
y_offset = 0, |
continent = Pandaria, |
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, |
type = "Transport", |
} |
zones[ORGRIMMAR_BOREANTUNDRA_ZEPPELIN] = { |
zones[transports["ORGRIMMAR_BOREANTUNDRA_ZEPPELIN"]] = { |
paths = { |
[BZ["Orgrimmar"]] = true, |
[BZ["Borean Tundra"]] = true, |
type = "Transport", |
} |
zones[UNDERCITY_HOWLINGFJORD_ZEPPELIN] = { |
zones[transports["UNDERCITY_HOWLINGFJORD_ZEPPELIN"]] = { |
paths = { |
[BZ["Tirisfal Glades"]] = true, |
[BZ["Howling Fjord"]] = true, |
type = "Transport", |
} |
zones[ORGRIMMAR_BLASTEDLANDS_PORTAL] = { |
zones[transports["ORGRIMMAR_BLASTEDLANDS_PORTAL"]] = { |
paths = { |
[BZ["Blasted Lands"]] = true, |
}, |
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, |
}, |
type = "Transport", |
} |
zones[THUNDERBLUFF_BLASTEDLANDS_PORTAL] = { |
zones[transports["THUNDERBLUFF_BLASTEDLANDS_PORTAL"]] = { |
paths = { |
[BZ["Blasted Lands"]] = true, |
}, |
type = "Transport", |
} |
zones[SILVERMOON_BLASTEDLANDS_PORTAL] = { |
zones[transports["SILVERMOON_BLASTEDLANDS_PORTAL"]] = { |
paths = { |
[BZ["Blasted Lands"]] = true, |
}, |
type = "Transport", |
} |
zones[STORMWIND_BLASTEDLANDS_PORTAL] = { |
zones[transports["STORMWIND_BLASTEDLANDS_PORTAL"]] = { |
paths = { |
[BZ["Blasted Lands"]] = true, |
}, |
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, |
}, |
type = "Transport", |
} |
zones[EXODAR_BLASTEDLANDS_PORTAL] = { |
zones[transports["EXODAR_BLASTEDLANDS_PORTAL"]] = { |
paths = { |
[BZ["Blasted Lands"]] = true, |
}, |
type = "Transport", |
} |
zones[DARNASSUS_EXODAR_PORTAL] = { |
zones[transports["DARNASSUS_EXODAR_PORTAL"]] = { |
paths = { |
[BZ["The Exodar"]] = true, |
}, |
type = "Transport", |
} |
zones[EXODAR_DARNASSUS_PORTAL] = { |
zones[transports["EXODAR_DARNASSUS_PORTAL"]] = { |
paths = { |
[BZ["Darnassus"]] = true, |
}, |
} |
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", |
zones[IRONFORGE_BLASTEDLANDS_PORTAL] = { |
zones[transports["IRONFORGE_BLASTEDLANDS_PORTAL"]] = { |
paths = { |
[BZ["Blasted Lands"]] = true, |
}, |
type = "Transport", |
} |
zones[TELDRASSIL_STORMWIND_BOAT] = { |
zones[transports["TELDRASSIL_STORMWIND_BOAT"]] = { |
paths = { |
[BZ["Teldrassil"]] = true, |
[BZ["Stormwind City"]] = true, |
type = "Transport", |
} |
zones[TELDRASSIL_AZUREMYST_BOAT] = { |
zones[transports["TELDRASSIL_AZUREMYST_BOAT"]] = { |
paths = { |
[BZ["Teldrassil"]] = true, |
[BZ["Azuremyst Isle"]] = true, |
type = "Transport", |
} |
zones[BOOTYBAY_RATCHET_BOAT] = { |
zones[transports["BOOTYBAY_RATCHET_BOAT"]] = { |
paths = { |
[BZ["The Cape of Stranglethorn"]] = true, |
[BZ["Northern Barrens"]] = true, |
type = "Transport", |
} |
zones[MENETHIL_HOWLINGFJORD_BOAT] = { |
zones[transports["MENETHIL_HOWLINGFJORD_BOAT"]] = { |
paths = { |
[BZ["Wetlands"]] = true, |
[BZ["Howling Fjord"]] = true, |
type = "Transport", |
} |
zones[MENETHIL_THERAMORE_BOAT] = { |
zones[transports["MENETHIL_THERAMORE_BOAT"]] = { |
paths = { |
[BZ["Wetlands"]] = true, |
[BZ["Dustwallow Marsh"]] = true, |
type = "Transport", |
} |
zones[ORGRIMMAR_GROMGOL_ZEPPELIN] = { |
zones[transports["ORGRIMMAR_GROMGOL_ZEPPELIN"]] = { |
paths = { |
[BZ["Orgrimmar"]] = true, |
[BZ["Northern Stranglethorn"]] = true, |
type = "Transport", |
} |
zones[ORGRIMMAR_UNDERCITY_ZEPPELIN] = { |
zones[transports["ORGRIMMAR_UNDERCITY_ZEPPELIN"]] = { |
paths = { |
[BZ["Orgrimmar"]] = true, |
[BZ["Tirisfal Glades"]] = true, |
type = "Transport", |
} |
zones[ORGRIMMAR_THUNDERBLUFF_ZEPPELIN] = { |
zones[transports["ORGRIMMAR_THUNDERBLUFF_ZEPPELIN"]] = { |
paths = { |
[BZ["Orgrimmar"]] = true, |
[BZ["Thunder Bluff"]] = true, |
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, |
type = "Transport", |
} |
zones[MOAKI_KAMAGUA_BOAT] = { |
zones[transports["MOAKI_KAMAGUA_BOAT"]] = { |
paths = { |
[BZ["Dragonblight"]] = true, |
[BZ["Howling Fjord"]] = true, |
type = "Transport", |
} |
zones[UNDERCITY_GROMGOL_ZEPPELIN] = { |
zones[transports["UNDERCITY_GROMGOL_ZEPPELIN"]] = { |
paths = { |
[BZ["Northern Stranglethorn"]] = true, |
[BZ["Tirisfal Glades"]] = true, |
type = "Transport", |
} |
zones[SILVERMOON_UNDERCITY_TELEPORT] = { |
zones[transports["SILVERMOON_UNDERCITY_TELEPORT"]] = { |
paths = { |
[BZ["Silvermoon City"]] = true, |
[BZ["Undercity"]] = true, |
type = "Transport", |
} |
zones[DALARAN_CRYSTALSONG_TELEPORT] = { |
zones[transports["DALARAN_CRYSTALSONG_TELEPORT"]] = { |
paths = { |
[BZ["Dalaran"]] = true, |
[BZ["Crystalsong Forest"]] = true, |
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, |
}, |
type = "Transport", |
} |
zones[TWILIGHTHIGHLANDS_STORMWIND_PORTAL] = { |
zones[transports["TWILIGHTHIGHLANDS_STORMWIND_PORTAL"]] = { |
paths = { |
[BZ["Stormwind City"]] = true, |
}, |
type = "Transport", |
} |
zones[STORMWIND_MOUNTHYJAL_PORTAL] = { |
zones[transports["STORMWIND_MOUNTHYJAL_PORTAL"]] = { |
paths = { |
[BZ["Mount Hyjal"]] = true, |
}, |
type = "Transport", |
} |
zones[STORMWIND_DEEPHOLM_PORTAL] = { |
zones[transports["STORMWIND_DEEPHOLM_PORTAL"]] = { |
paths = { |
[BZ["Deepholm"]] = true, |
}, |
type = "Transport", |
} |
zones[DEEPHOLM_STORMWIND_PORTAL] = { |
zones[transports["DEEPHOLM_STORMWIND_PORTAL"]] = { |
paths = { |
[BZ["Stormwind City"]] = true, |
}, |
type = "Transport", |
} |
zones[TOLBARAD_STORMWIND_PORTAL] = { |
zones[transports["TOLBARAD_STORMWIND_PORTAL"]] = { |
paths = { |
[BZ["Stormwind City"]] = true, |
}, |
type = "Transport", |
} |
zones[STORMWIND_ULDUM_PORTAL] = { |
zones[transports["STORMWIND_ULDUM_PORTAL"]] = { |
paths = { |
[BZ["Uldum"]] = true, |
}, |
type = "Transport", |
} |
zones[STORMWIND_VASHJIR_PORTAL] = { |
zones[transports["STORMWIND_VASHJIR_PORTAL"]] = { |
paths = { |
[BZ["Vashj'ir"]] = true, |
}, |
type = "Transport", |
} |
zones[STORMWIND_TOLBARAD_PORTAL] = { |
zones[transports["STORMWIND_TOLBARAD_PORTAL"]] = { |
paths = { |
[BZ["Tol Barad Peninsula"]] = true, |
}, |
type = "Transport", |
} |
zones[ORGRIMMAR_TWILIGHTHIGHLANDS_PORTAL] = { |
zones[transports["ORGRIMMAR_TWILIGHTHIGHLANDS_PORTAL"]] = { |
paths = { |
[BZ["Twilight Highlands"]] = true, |
}, |
type = "Transport", |
} |
zones[TWILIGHTHIGHLANDS_ORGRIMMAR_PORTAL] = { |
zones[transports["TWILIGHTHIGHLANDS_ORGRIMMAR_PORTAL"]] = { |
paths = { |
[BZ["Orgrimmar"]] = true, |
}, |
type = "Transport", |
} |
zones[ORGRIMMAR_MOUNTHYJAL_PORTAL] = { |
zones[transports["ORGRIMMAR_MOUNTHYJAL_PORTAL"]] = { |
paths = { |
[BZ["Mount Hyjal"]] = true, |
}, |
type = "Transport", |
} |
zones[ORGRIMMAR_DEEPHOLM_PORTAL] = { |
zones[transports["ORGRIMMAR_DEEPHOLM_PORTAL"]] = { |
paths = { |
[BZ["Deepholm"]] = true, |
}, |
type = "Transport", |
} |
zones[DEEPHOLM_ORGRIMMAR_PORTAL] = { |
zones[transports["DEEPHOLM_ORGRIMMAR_PORTAL"]] = { |
paths = { |
[BZ["Orgrimmar"]] = true, |
}, |
type = "Transport", |
} |
zones[TOLBARAD_ORGRIMMAR_PORTAL] = { |
zones[transports["TOLBARAD_ORGRIMMAR_PORTAL"]] = { |
paths = { |
[BZ["Orgrimmar"]] = true, |
}, |
type = "Transport", |
} |
zones[ORGRIMMAR_ULDUM_PORTAL] = { |
zones[transports["ORGRIMMAR_ULDUM_PORTAL"]] = { |
paths = { |
[BZ["Uldum"]] = true, |
}, |
type = "Transport", |
} |
zones[ORGRIMMAR_VASHJIR_PORTAL] = { |
zones[transports["ORGRIMMAR_VASHJIR_PORTAL"]] = { |
paths = { |
[BZ["Vashj'ir"]] = true, |
}, |
type = "Transport", |
} |
zones[ORGRIMMAR_TOLBARAD_PORTAL] = { |
zones[transports["ORGRIMMAR_TOLBARAD_PORTAL"]] = { |
paths = { |
[BZ["Tol Barad Peninsula"]] = true, |
}, |
} |
zones[ORGRIMMAR_JADEFOREST_PORTAL] = { |
zones[transports["ORGRIMMAR_JADEFOREST_PORTAL"]] = { |
paths = { |
[BZ["The Jade Forest"]] = true, |
}, |
type = "Transport", |
} |
zones[JADEFOREST_ORGRIMMAR_PORTAL] = { |
zones[transports["JADEFOREST_ORGRIMMAR_PORTAL"]] = { |
paths = { |
[BZ["Orgrimmar"]] = true, |
}, |
type = "Transport", |
} |
zones[STORMWIND_JADEFOREST_PORTAL] = { |
zones[transports["STORMWIND_JADEFOREST_PORTAL"]] = { |
paths = { |
[BZ["The Jade Forest"]] = true, |
}, |
type = "Transport", |
} |
zones[JADEFOREST_STORMWIND_PORTAL] = { |
zones[transports["JADEFOREST_STORMWIND_PORTAL"]] = { |
paths = { |
[BZ["Stormwind City"]] = true, |
}, |
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"]] = { |
paths = { |
[BZ["Dun Morogh"]] = true, |
[BZ["Deeprun Tram"]] = true, |
[IRONFORGE_BLASTEDLANDS_PORTAL] = true, |
[transports["IRONFORGE_BLASTEDLANDS_PORTAL"]] = true, |
}, |
faction = "Alliance", |
type = "City", |
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", |
[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", |
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", |
[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, |
[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, |
}, |
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, |
}, |
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, |
[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, |
high = 35, |
continent = Eastern_Kingdoms, |
paths = { |
[BOOTYBAY_RATCHET_BOAT] = true, |
[transports["BOOTYBAY_RATCHET_BOAT"]] = true, |
["Northern Stranglethorn"] = true, |
}, |
fishing_min = 225, |
[BZ["Blackwing Descent"]] = true, |
[BZ["Molten Core"]] = true, |
[BZ["Blackrock Spire"]] = true, |
[BZ["Upper Blackrock Spire"]] = true, |
}, |
paths = { |
[BZ["Blackrock Mountain"]] = true, |
[BZ["Blackwing Descent"]] = true, |
[BZ["Molten Core"]] = true, |
[BZ["Blackrock Spire"]] = true, |
[BZ["Upper Blackrock Spire"]] = true, |
}, |
paths = { |
[BZ["Burning Steppes"]] = true, |
[BZ["Blackrock Depths"]] = true, |
[BZ["Blackrock Caverns"]] = true, |
[BZ["Blackrock Spire"]] = true, |
[BZ["Upper Blackrock Spire"]] = true, |
}, |
type = "Complex", |
fishing_min = 1, -- lava |
[BZ["Blackwing Descent"]] = true, |
[BZ["Molten Core"]] = true, |
[BZ["Blackrock Spire"]] = true, |
[BZ["Upper Blackrock Spire"]] = true, |
}, |
paths = { |
[BZ["Blackrock Mountain"]] = true, |
-- } |
-- New instance (MoP) |
zones[BZ["Scarlet Halls"]] = { -- TODO: check levels |
zones[BZ["Scarlet Halls"]] = { |
low = 28, |
high = 31, |
continent = Eastern_Kingdoms, |
-- } |
-- New instance (MoP) |
zones[BZ["Scarlet Monastery"]] = { -- TODO: check levels |
zones[BZ["Scarlet Monastery"]] = { |
low = 30, |
high = 33, |
continent = Eastern_Kingdoms, |
[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, |
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", |
[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", |
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", |
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", |
[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, |
paths = { |
[BZ["Thunder Bluff"]] = true, |
[BZ["Southern Barrens"]] = true, |
[MULGORE_DARKMOON_PORTAL] = true, |
[transports["MULGORE_DARKMOON_PORTAL"]] = true, |
}, |
faction = "Horde", |
fishing_min = 25, |
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, |
[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, |
}, |
[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, |
type = "Complex", |
} |
-- a.k.a. The Escape from Durnhold Keep |
zones[BZ["Old Hillsbrad Foothills"]] = { |
low = 64, |
high = 73, |
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"]] = { |
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"]] = { |
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, |
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"]] = { |
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", |
[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, |
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, |
[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, |
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, |
}, |
[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, |
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, |
[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, |
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, |
}, |
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, |
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, |
} |
[BZ["Burning Steppes"]] = true, |
[BZ["Blackrock Mountain"]] = true, |
[BZ["Blackrock Spire"]] = true, |
[BZ["Blackrock Spire"]] = true, |
}, |
groupSize = 10, |
altGroupSize = 25, |
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"]] = { |
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"]] = { |
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"]] = { |
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 }, |
} |
[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, |
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, |
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, |
[BZ["Throne of Thunder"]] = true, |
}, |
paths = { |
[ISLEOFTHUNDER_TOWNLONGSTEPPES_PORTAL] = true, |
[transports["ISLEOFTHUNDER_TOWNLONGSTEPPES_PORTAL"]] = true, |
}, |
fishing_min = 750, |
battlepet_low = 23, |
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 |
battlepet_high = 23, |
} |
-- Mists of Pandaria (MoP) instances |
zones[BZ["Temple of the Jade Serpent"]] = { |
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"]] = { |
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"]] = { |
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"]] = { |
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"]] = { |
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 |
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 |
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 = {} |
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 |
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) |
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 |
-- 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 |
-- 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 |
end |
zones = nil |
trace("Tourist: BZ initialized.") |
trace("Tourist: Initialized.") |
PLAYER_LEVEL_UP(Tourist) |
end |
## 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 |