Get an Epic Experience with Premium


Libraries Login to Add Favorites
  • 1 Like
  • World of Warcraft
  • 115 Monthly Downloads
  • Supports: 6.0.3
  • 250,589 Total Downloads
  • Updated 12/16/2014
  • Created 07/20/2008
  • 122 Favorites
  • Project Site
  • Comments
  • Release Type: Mature
  • License: MIT License
  • Newest File: WoW-6.0-release1
Support development! **

About LibTourist-3.0

LibTourist is a library that provides information about zones, instances, transports and more.

For zones, instances, complexes (like Caverns of Time), arenas and battlegrounds, LibTourist can provide level range, faction, location and connections with other zones, as well as instance group sizes, instance entrance portal coordinates, battle pet level ranges and required fishing skills, if applicable.

Color-coding for level ranges and zone names is available.

Relationships between zones can be provided, i.e. which instances are located in a specific complex, and in which zone resides the complex, vice versa.

The library contains information about all known cross-zone transports: zeppelins, boats, portals etcetera. It can also be used for distance calculations between coordinates.

An extensive API allows the addon developer to query LibTourist in many ways.

LibTourist supports localization.

See the API Reference page for detailed information.


A few notes about the fishing skills in LibTourist:

- All fishing skills are now set to the skill required to fish 100% junk-free. If your skill, including the effect of lures and other enhancements, is below that, you will catch a certain percentage of junk, which can be up to 100%.

- These values are valid for open water, because fishing pools requires skill 1 since WoW patch 3.3.0, regardless of the zone they're in.

- If multiple values apply for a zone, generally the lowest is used. For example, for Northern Stranglethorn a higher skill is required to fish the South Seas (300) compared to other waters (150), so it's value in LibTourist is set to 150.

- Zones that have a fishing skill of 1, allow fishing in lava or acid only. Don't expect to catch anything useful here, except for an incidental Elemental Fire from lava.

- Zones without a fishing skill should contain no fishable water.

- Fishing in Draenor works differently. Depending on your skill you will catch Small, 'normal' or Enormous fish. For all Draenor zones the fishing skill is set to 950, which is the skill required to catch nothing but Enormous Fish.


r179 | odica | 2014-12-16 21:11:01 +0000 (Tue, 16 Dec 2014) | 1 line
Changed paths:
   A /tags/WoW-6.0-release1 (from /trunk:178)

Tagging as WoW-6.0-release1
r178 | Odica | 2014-12-16 21:08:27 +0000 (Tue, 16 Dec 2014) | 1 line
Changed paths:
   M /trunk/LibTourist-3.0.lua

Set all BG level highs to MAX_PLAYER_LEVEL (was 90)
r177 | Odica | 2014-12-10 22:43:09 +0000 (Wed, 10 Dec 2014) | 6 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

Bugfix: GetEnglishZoneFromTexture did not return anything for the textures of the duplicate zones (Nagrand (Draenor), Shadowmoon Valley (Draenor) and The Maelstrom (zone)). Fixed this by adding the unique names for the duplicate zones to the localization tables.

API changes:
- Added function GetUniqueEnglishZoneNameForLookup(zoneName, continentID)
Returns a unique English zone name to be used to lookup data in LibTourist, based on a localized or English zone name.
- GetUniqueZoneNameForLookup now also accepts non-localized English zoneNames
r176 | Odica | 2014-12-08 00:13:10 +0000 (Mon, 08 Dec 2014) | 15 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

--Major revision--
- Finally developed a way to convert the output of GetCurrentMapZone to the zone offsets LibTourist needs, which were previously provided by UpdateMapHighlight. Completely rewrote the mechanism that gathers zone sizes, offsets and texture names. This allowed the removal of the weird and buggy use of UpdateMapHighlight as well as several hacks that were implemented in  attempts to make that mechanism work for all zones. Despite those attempts, it turned out that LibTourist has been using incorrect data for 34 zones.

KNOWN ISSUE: For Dalaran, Shrine of Two Moons and Shrine of Seven Stars, GetCurrentMapZone() returns no data (0), therefore no distances can be calculated from, to or within these three zones.

- Revised/rewrote the rather outdated API functions GetYardDistance and TransposeZoneCoordinate. These functions should now be able to properly calculate distances and transposes between all Azeroth continents, except for The Maelstrom. Made the functions more robust and if the calculation cannot be made, nil is returned instead of incorrect values. Due to the improved data gathering, these functions should now be more reliable. Added comments.
Revised the API function GetBestZoneCoordinate as well.

Other fixes:
- API functions GetZoneFromTexture and GetEnglishZoneFromTexture should now work for the garrison texture names with the _tier<n> postfix.
- Had to add hard-coded size, offset and texture name values for garrison zones Frostwall and Lunarfall (thanks, Sutorix!) because the garrison data is sometimes not available yet when LibTourist performs its initialization. Besides that, this data is only available if the character has established a garrison and only for that garrison (not for the other faction).
- Added zone The Maelstrom (lvl82 sanctuary) to the new mechanism for duplicates zones, to (finally) be able to distinguish it from the continent with the same name. The unique lookup name for LibTourist has "(zone)" added to it and will be provided, localized, by GetUniqueZoneNameForLookup. See release notes for r169.

API change:
- New function IsContinent(zone). Returns true for all continents including Azeroth.
r175 | Odica | 2014-11-27 18:56:53 +0000 (Thu, 27 Nov 2014) | 3 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

- Updated Upper Blackrock Spire level to 100
- Added fishing skill for Warspear and Stormshield
- All fishing skills for Draenor zones are now set to 950, which is the skill required to catch nothing but Enormous Fish.
r174 | Odica | 2014-11-26 14:57:24 +0000 (Wed, 26 Nov 2014) | 3 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

- bugfix: GetYardDistance: it is now possible to calculate distances *within* a zone for which LibTourist is unable to retrieve zone offset data. This includes the garrison zones Frostwall and Lunarfall. Calculating distances from or to such a zone is still a problem (GetYardDistance returns nil if no offsets are available) but I'm working on that.
- added fishing skill for Frostwall and Lunarfall. For now, the value is set to 750, as for the other Draenor zones.
- expanded GetLevel() with brackets [90-94] and [95-99] for battlegrounds.
r172 | Odica | 2014-11-16 13:38:28 +0000 (Sun, 16 Nov 2014) | 2 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

- Added Warspear - Thunder Bluff protal
- Added Siege of Orgrimmar instance
r171 | Odica | 2014-11-04 22:51:02 +0000 (Tue, 04 Nov 2014) | 4 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

- Added/updated instance portal coordinates for all eight Caverns of Time instances. Values are the coordinates on the Caverns of Time map (was Tanaris)
- Added instance portal coordinates for Mogu'shan Vaults, Siege of Niuzao Temple, Mogu'shan Palace, Heart of Fear, Terrace of Endless Spring and Throne of Thunder.
- Added battle pet levels for Darkmoon Island
- Corrected faction for Frostwall (now Horde)


First Previous Page 1 of 2 Next Last
  • #16

    I am the author of PetShop and was working on a complete rewrite of the addon. I needed the ability to know what level Battle Pets were in each zone. Before I started writing new code I decided to look into LibTourist. While there is not currently support for it I added it in the version on my computer. I thought I would share my modifications with you in case you wanted to make it a part of your addon. It was your addon anyway... :)

    I added local declerations around line 110...

    local petbattle_min = {}
    local petbattle_max = {}

    I added a new function call to be used by 3rd party addons around line 161

    -- Level of Battle Pets
    function Tourist:GetBattlePetLevel(zone)
        return petbattle_min[zone], petbattle_max[zone]

    I added 2 lines to each "zone" like this...

        zones[BZ["Elwynn Forest"]] = {
            low = 1,
            high = 10,
            continent = Eastern_Kingdoms,
            paths = {
                [BZ["Westfall"]] = true,
                [BZ["Redridge Mountains"]] = true,
                [BZ["Stormwind City"]] = true,
                [BZ["Duskwood"]] = true,
                [BZ["Burning Steppes"]] = true,
                [ELWYNNFOREST_DARKMOON_PORTAL] = true,
            faction = "Alliance",
            fishing_min = 25,
            petbattle_min = 1,
    --        petbattle_max = 0,

    If petbattle_min is commented out then currently "unknown", 0 is "No Battle Pets". petbattle_max is optional.

    In the loop at the very bottom of the addon I added...

            petbattle_min[k] = v.petbattle_min
            petbattle_max[k] = v.petbattle_max

    Feel free to use this or drop me a line and I will send you my version in a zip file.

    Thanks for a great addon!

    Rakreo of Duskwood

    Last edited by smccandl on 10/9/2012 8:47:42 PM
  • #18

    See LibTourist r155, available at the developer site.

    - added Battle Pet Levels (special thanks to Grdn!)

    - API: added function:      low,high = GetBattlePetLevel(zone)

    - API: added function:      r,g,b = GetBattlePetLevelColor(zone, petLevel)

    - API: added function:      string = GetBattlePetLevelString(zone)

  • #17

    Hi smccandl,

    I am planning to add the pet battle levels to LibTourist soon. There's already a ticket on that at the developer site of LibTourist. What you describe is about what has to be done in LibTourist to add this functionality, but I currently I do not have a list of battle pet min/max levels per zone.

    So... If you are willing to share your changes it would be appreciated :-)

    Please go to, we can start a private conversation there (by sending me a PM). Also, you can add your post to Ticket #37, to keep all related info together in one location:

    Thanks & regards,


    Last edited by Odica on 10/18/2012 8:22:51 AM
  • #15

    Date: 2012-10-06 16:07:21
    ID: 4
    Error occured in: Global
    Count: 1
    Message: ...psterEnhanced\Libs\LibTourist-3.0\LibTourist-3.0.lua line 1708:
    bad argument #1 to 'pairs' (table expected, got nil)
    [C]: ?
    ...psterEnhanced\Libs\LibTourist-3.0\LibTourist-3.0.lua:1708: CreateLocalizedZoneNameLookups()
    ...psterEnhanced\Libs\LibTourist-3.0\LibTourist-3.0.lua:1733: in main chunk
    (*temporary) = nil
    (*temporary) = "table expected, got nil"
    = <function> defined =[C]:-1


  • #14

    This library is being updated. A beta release for MoP can be expected soon. For those who can't wait, visit the developer site for the latest alpha version, but be aware that alpha versions are work in progress.

    Last edited by Odica on 9/2/2012 6:27:30 PM
  • #13

    1x TravelAgent-4.3.0-1.1.1\Libs\LibTourist-3.0\LibTourist-3.0-90137.lua:4523: attempt to index field "?" (a nil value)
    TravelAgent-4.3.0-1.1.1\Libs\LibTourist-3.0\LibTourist-3.0-90137.lua:4523: in main chunk


  • #12

    Is this addon ever going to be updated? Or should I just remove it?

  • #11

    LibTourist-3.0 its blocking the progress on the loading

    need to set alpha on preferences to work out correctly

    Last edited by enkil80 on 11/30/2011 5:02:15 PM
  • #8
    Several zones appear to have incorrect level ranges. In the following list, the first set of numbers represents what LibTourist currently has and the second set represents what I believe they should be.

    Wetlands 25-30 20-25
    Northern Stranglethorn 25-35 25-30
    Burning Steppes 50-58 50-52
    Swamp of Sorrows 52-55 52-54

  • #9
    Can you create a ticket at
    for that?

  • #10
    This has been fixed in r111, which can be downloaded at the development site.
  • #6
    The error this generates is because it does not have zone information for The Maelstrom continent.

    A quick fix is to add some code to LibTourist and LibBabble-Zone to account for this.

    In LibTourist-3.0.lua --

    Line 42, change to:
    local Kalimdor, Eastern_Kingdoms, Outland, Northrend, The_Maelstrom = GetMapContinents()

    After line 48, add:
    if not The_Maelstrom then
    The_Maelstrom = "The Maelstrom"

    After line 1084, add:
    zones[BZ["The Maelstrom"]] = {
    type = "Continent",
    yards = 15000,
    x_offset = 0,
    y_offset = 0,
    continent = The_Maelstrom,

    In LibBabble-Zone-3.0.lua --

    After line 206, add:
    ["The Maelstrom"] = "The Maelstrom",

    (If you use a non-enUS localization, you will also want to add your local translation of this to one of the arrays further down in the file)

    Note: I have no idea what the "yards" value for The Maelstrom should be, but this does get rid of the error when loading Fubar_GuildFu.
  • #7
    The new release contains (almost) all Cataclysm data and a lot of other fixes and improvements. However, the actual yards value for The Maelstrom (continent) remains a mystery. Who can help?

    BTW, LibTourist requires the latest version of LibBabble-Zone-3.0.
  • #5
    My AddonManager tells me that a dependency is missing for this Addon, umm, can't seem to find out what, so anyone care to share :)

    Also, getting this on every login and reload:

    Message: ...FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:3385: attempt to index field '?' (a nil value)
    Time: 12/16/10 00:33:22
    Count: 1
    Stack: ...FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:3385: in main chunk

    Locals: MAJOR_VERSION = "LibTourist-3.0"
    MINOR_VERSION = 90089
    Tourist = {
    GetLevel = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:137
    IterateRecommendedZones = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:728
    IsInKalimdor = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:803
    GetBestZoneCoordinate = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:366
    IterateAlliance = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:629
    GetTexture = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:827
    HasRecommendedInstances = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:736
    IterateNorthrend = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:721
    DoesZoneHaveInstances = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:542
    IsZoneOrInstance = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:754
    IsPvPZone = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:769
    IterateZoneInstances = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:504
    GetEntrancePortalLocation = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:849
    IsInstance = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:740
    IterateHostile = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:629
    GetInstanceAltGroupSize = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:823
    IteratePvPZones = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:615
    frame = LibTourist-3.0Frame {
    IsAlliance = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:779
    GetLevelColor = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:166
    GetZoneYardSize = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:220
    IterateZonesAndInstances = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:559
    IterateBattlegrounds = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:601
    IterateContested = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:665
    GetEnglishZoneFromTexture = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:838
    GetZoneFromTexture = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:831
    IterateOutland = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:707
    IsZone = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:745
    IsInNorthrend = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:815
    GetYardDistance = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:230
    IsInOutland = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:811
    GetContinent = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:799
    IsInEasternKingdoms = defined @Interface\AddOns\FuBar_GuildFu\libs\LibTourist-3.0\LibTourist-3.0.lua:807

    Got about 17 sheets of these.. :P
  • #4
    report error

    LibTourist-3.0-90099 (Cromulent):3474: attempt to index field '?' (a nil value)\n\nLocals:|r\n\n ---
  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Star Trek Online Wiki Editing Contest