Get an Epic Experience with Premium


Libraries Login to Add Favorites
  • 1 Like
  • World of Warcraft
  • 2,968 Monthly Downloads
  • Supports: 4.3
  • 241,057 Total Downloads
  • Updated 11/16/2014
  • Created 07/20/2008
  • 123 Favorites
  • Project Site
  • Comments
  • Release Type: Mature
  • License: MIT License
  • Newest File: WoW-4.3-release2
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.


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.


r138 | odica | 2011-12-15 15:37:29 +0000 (Thu, 15 Dec 2011) | 1 line
Changed paths:
   A /tags/WoW-4.3-release2 (from /trunk:137)

Tagging as WoW-4.3-release2
r137 | Odica | 2011-12-14 22:52:52 +0000 (Wed, 14 Dec 2011) | 9 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

- API: Added function GetLevelString(zone) which returns a ready-to-use string with the recommended level(s) of a zone.
- Added/updated combined levels for complexes:
Ring of Observance: 62-75
Coilfang Reservoir: 60-75
Tempest Keep: 67-75
Coldarra: 69-82
Blackrock Mountain: 47-83
Caverns of Time: 64-85
Hellfire Citadel: 57-75
r136 | Odica | 2011-12-14 21:39:21 +0000 (Wed, 14 Dec 2011) | 1 line
Changed paths:
   M /trunk/LibTourist-3.0.lua

Updated levels for all WotLK 5-man dungeons to match the levels in the Dungeon Finder.
r135 | Odica | 2011-12-13 22:05:31 +0000 (Tue, 13 Dec 2011) | 29 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

- Updated recommended levels for all Burning Crusade 5-man dungeons to match the Dungeon Finder levels
- Added groupsize 10 to Blackrock Spire

InstanceClusters functionality has been merged with existing Complex functionality:
- API: Renamed function IterateInstanceClusters into IterateComplexes
- API: Renamed function IsInstanceCluster into IsComplex
- API: GetType(zone) now returns "Complex" instead of "InstanceCluster"

Updated/added relationships between instances and their complexes:
- Changed Complex for Auchenai Crypts, Shadow Labyrinth, Sethekk Halls and Mana-Tombs from "Auchindoun" into "Ring of Observance"
- Set Complex to "Blackrock Mountain" for Blackrock Caverns, Blackwing Descent, Blackrock Depths, Blackrock Spire, Blackwing Lair and Molten Core
- Set Complex to "Coldarra" for The Nexus, The Oculus and The Eye of Eternity
- Set Complex to "Ahn'Qiraj: The Fallen Kingdom" for Ruins of Ahn'Qiraj and Temple of Ahn'Qiraj

Added relationships between all complexes and their zones:
- Added "Blackrock Mountain" to complexes of Burning Steppes and Searing Gorge
- Added "Scarlet Monastery" to complexes of Tirisfal Glades
- Added "Caverns of Time" to complexes of Tanaris
- Added "Hellfire Citadel" to complexes of Hellfire Peninsula
- Added "Coilfang Reservoir" to complexes of Zangarmarsh
- Added "Ring of Observance" to complexes of Terokkar Forest
- Added "Tempest Keep" to complexes of Netherstorm
- Added "Coldarra" to complexes of Borean Tundra
- Added "Ahn'Qiraj: The Fallen Kingdom" to complexes of Silithus

Zone - Complex relationships have been made available:
- API: Added function DoesZoneHaveComplexes(zone)
- API: Added function IterateZoneComplexes(zone)
- API: Added function GetComplexZone(complex)
r134 | Odica | 2011-12-11 19:16:12 +0000 (Sun, 11 Dec 2011) | 1 line
Changed paths:
   M /trunk/LibTourist-3.0.lua

(re-commit after packager failure)
r133 | Odica | 2011-12-09 10:19:39 +0000 (Fri, 09 Dec 2011) | 1 line
Changed paths:
   M /trunk/LibTourist-3.0.lua

(new commit attempt after error)
r132 | Odica | 2011-12-09 10:09:01 +0000 (Fri, 09 Dec 2011) | 10 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

- Ticket 24: If a name is not known by LibTourist, IsZone will no longer return True.

- Ticket 23: A new zone type has been introduced: InstanceCluster. An InstanceCluster is still considered to be a zone (and not an instance or a transport) but can now be distinguished.
Any old entrance portal coordinates for these zones have been removed, as they aren't instances.

Affected zones: Blackrock Mountain, Scarlet Monastery, Caverns of Time, Hellfire Citadel, Coilfang Reservoir, Ring of Observance, Tempest Keep, Coldarra and Anh'Qiraj: The Fallen Kingdom.

- API: GetType(<zone>) will now return "InstanceCluster" for these zones.
- API: Added function IsInstanceCluster(<zone>)
- API: Added function IterateInstanceClusters
r130 | Odica | 2011-12-01 10:20:21 +0000 (Thu, 01 Dec 2011) | 1 line
Changed paths:
   M /trunk/LibTourist-3.0.lua

Updated player levels to match the new recommended levels provided by WoW itself, for the following zones: Moonglade, Mount Hyjal, Durotar, Mulgore, Dun Morogh, Badlands, Searing Gorge, Burning Steppes, Elwynn Forest, Blasted Lands, Zul'Drak, Dragonblight and all Vashj'ir zones.
r128 | Odica | 2011-11-29 17:11:02 +0000 (Tue, 29 Nov 2011) | 2 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua
   M /trunk/LibTourist-3.0.toc

- Added End Time, Hour of Twilight, Well of Eternity and Dragon Soul
- updated toc version to 40300
r127 | Odica | 2011-11-17 20:37:16 +0000 (Thu, 17 Nov 2011) | 3 lines
Changed paths:
   M /trunk/LibTourist-3.0.lua

- replaced divide by zero by math.huge
- fixed timeout mechanism on zone search loop
- updated portal coordinates for Blackrock Caverns


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 »

Dying Light Wiki Game Giveaway