Skip to content

Guide Pack API

JeromeM edited this page Feb 20, 2026 · 1 revision

Guide Pack API

Developer reference for building guide pack addons for GuidelimeVanilla.

Overview

Guide packs are separate WoW addons that register guides with GuidelimeVanilla using the LibStub API. GuidelimeVanilla provides the guide engine, navigation, and tracking — guide packs provide the content.

Core Functions

GLV:RegisterGuide(guideText, groupName, addonName)

Register a guide with the system.

local GLV = LibStub("GuidelimeVanilla")
GLV:RegisterGuide([[
[N 1-11 Elwynn Forest]
[GA Alliance]
[D My custom guide]

[QA 783] Accept "A Threat Within"
[NX 11-15 Westfall]
]], "My Guides", "GuidelimeVanilla_MyGuides")
Parameter Type Required Description
guideText string Yes Guide content with tagged format (see Tag Reference)
groupName string Yes Guide pack name (e.g., "My Guides"). All guides with the same group appear together
addonName string No Addon folder name for metadata lookup (used to read .toc Notes)

GLV:RegisterStartingGuides(packName, raceMapping)

Register which guide should load first for each player race.

GLV:RegisterStartingGuides("My Guides", {
    ["Human"] = "Elwynn Forest",
    ["Dwarf"] = "Dun Morogh",
    ["Gnome"] = "Dun Morogh",
    ["NightElf"] = "Teldrassil",
    ["Orc"] = "Durotar",
    ["Troll"] = "Durotar",
    ["Tauren"] = "Mulgore",
    ["Undead"] = "Tirisfal Glades",
})
Parameter Type Required Description
packName string Yes Must match the groupName used in RegisterGuide
raceMapping table Yes Table mapping race names to starting guide names

The guide name in the mapping must match the name from the [N] tag (without the level range).

GLV.guidePackAddons

Register your addon folder name for metadata lookup:

GLV.guidePackAddons["My Guides"] = "GuidelimeVanilla_MyGuides"

This allows GuidelimeVanilla to read your addon's .toc metadata (e.g., ## Notes: field).

GLV:RegisterTalentTemplate(class, name, type, talents, respec)

Register a talent template. See Creating a Talent Template for full documentation.

GLV:RegisterTalentTemplate("MAGE", "Frost Leveling", "leveling", {
    [10] = {3, 1, 2},
    [11] = {3, 1, 2},
    -- ...
})

Minimal Guide Pack

File Structure

GuidelimeVanilla_MyGuides/
├── GuidelimeVanilla_MyGuides.toc
├── init.lua
└── Guide_Zone.lua

.toc File

## Interface: 11200
## Title: Guidelime Vanilla - My Guides
## Notes: Custom leveling guides
## Dependencies: GuidelimeVanilla

init.lua
Guide_Zone.lua

Key points:

  • ## Dependencies: GuidelimeVanilla ensures load order
  • ## Notes: is displayed in the guide pack selection dropdown
  • New .toc entries require a full game restart

init.lua

local GLV = LibStub("GuidelimeVanilla")
if not GLV then
    DEFAULT_CHAT_FRAME:AddMessage("|cFFFF0000[My Guides]|r GuidelimeVanilla is required!")
    return
end

GLV.guidePackAddons["My Guides"] = "GuidelimeVanilla_MyGuides"

-- Optional: Register starting guides for auto-selection
GLV:RegisterStartingGuides("My Guides", {
    ["Human"] = "Elwynn Forest",
    -- Add more races as needed
})

Guide_Zone.lua

local GLV = LibStub("GuidelimeVanilla")
GLV:RegisterGuide([[
[N 1-11 Elwynn Forest]
[GA Alliance]

[QA 783] Accept "A Threat Within"
[G 48,42 Elwynn Forest][QT 783] Turn in
[NX 11-15 Westfall]
]], "My Guides")

Race Names

Standard Races

Alliance Horde
Human Orc
Dwarf Troll
Gnome Tauren
NightElf Undead

TurtleWoW Custom Races

TurtleWoW adds custom races that are automatically aliased to standard races if your guide pack doesn't include explicit mappings:

Custom Race Aliased To
HighElf NightElf

If you register a HighElf entry in RegisterStartingGuides, it takes priority over the alias. Otherwise, a HighElf player gets the NightElf starting guide.

Guide Selection Logic

When a guide pack is loaded, GuidelimeVanilla selects a guide using this priority:

  1. Saved guide: if the player previously loaded a guide from this pack, resume it
  2. Race-based (level 1-11): use RegisterStartingGuides mapping for the player's race
  3. Level-based: find the best guide for the player's current level
    • First match where player level is within the guide's [N min-max] range
    • Guides are sorted by minLevel then name for deterministic selection

Dropdown Behavior

  • Guides are filtered by player faction/race (via [GA] tag)
  • Sorted by level range, then alphabetically
  • When there are more than 30 guides, the dropdown auto-groups into level range submenus (1-10, 11-20, 21-30, etc.)
  • Guides without a [GA] tag are shown to all players

Faction Filtering

The [GA] tag in guide text controls visibility:

[GA Alliance]           -- Alliance only
[GA Horde]              -- Horde only
[GA Horde,Undead]       -- Horde faction AND Undead race

Without [GA], the guide is visible to all players.

Guide Chaining

Guides link together via [NX]:

[NX 11-15 Westfall]

The name must match the [N] tag of the target guide. When the player clicks "Next Guide" in the navigation frame, GuidelimeVanilla searches the active pack for a guide matching that name and level range.

Tips

  • Keep one guide per .lua file for maintainability
  • Use consistent naming: Guide_ZoneName.lua
  • Quest IDs can be found on TurtleWoW database sites or in Assets/db/ data files
  • NPC IDs (for [TAR]) are in VGDB.units.data
  • Test with /reload for file edits, full restart for new .toc entries
  • Set GLV.Debug = true in Core.lua for verbose debug output

Clone this wiki locally