The revisions let you track differences between multiple versions of a post.

Revision of WoW-Pro Addon Syntax from Mon, 2016-11-21 20:59

Jiyambi's picture




With the WoW-Pro Recorder, you don't really need to know the syntax (the language the guide files are written in) unless you really want to. However, taking a look at this syntax can help you understand how the addon works and can help you do a better job of writing and designing guides for the addon.

Remember, if you have any specific questions about the addon's syntax, feel free to ask in chat!


Table of Contents


  1. Overview
  2. Step Types
  3. Tags
  4. Comments



Overview


To start with, I suggest working with a guide that has already been coded, rather than trying to start from scratch.

Opening a File to Edit

    The leveling guides can be found in Addons\WoWPro_Leveling\Alliance (or Horde). Go ahead and open one up in your favorite simple text editor. Do NOT use Microsoft Word or a similar rich text editor - the formatting used by these programs will break your guide file.

    I highly recommend the free program Notepad++, as do most addon authors - it's very powerful yet simple for beginners, with a very user-friendly interface.

[Back to top]

Anatomy of a Guide File

    Once you open up the file, you should see something like the following:

    local guide = WoWPro:RegisterGuide("LudoExpDaS","Achievements","Darkshore","Ludovicus", "Neutral")
    WoWPro:GuideLevels(guide,20,90)
    WoWPro:GuideIcon(guide,"ACH",844)
    WoWPro:GuideProximitySort(guide)
    WoWPro:GuideSteps(guide, function()
    return [[
    
    
    INSERT GUIDE CODE HERE
    
    ]]
    end)

    In the example, where I say "INSERT GUIDE CODE HERE", you'll see many lines of code. We'll talk about those in a minute. For now, we're going to talk about the guide registration functions.

[Back to top]

Guide Registration Function

    The guide registration functions are what tells the addon the overall information about the guide. It contains several important parts, as follows:

    1. The function
        The actual name of the function we are calling: WoWPro:RegisterGuide
    2. The Guide ID
        The next section, “LudoExpDaS” in the example, is the Guide ID (or GID). This was implemented as a means to give guides a unique ID since zones and authors and level ranges separately might overlap. The GID consists of:
        • The first few letters of the author’s name (Ludo for Ludovicus in this case)
        • The first few letters of the guide zone or type (Exp for Explore in this case and DaS for Darkshore)
        • For leveling guides, the level range in double digits (0112 for 01-12 for example) is appended.
    3. The zone
        Pretty self explanatory. “Darkshore” in the example. This has to be a valid zone, but can be a continent or even "Azeroth".

        NOTE1: You can provide more information about the guide after a - or a (. For example, a valid zone entry would be Scarlet Enclave (Death Knight) or Durotar - Valley of Trials.

    4. The author
        Again pretty simple. “Ludovicus” in the example.
    5. Faction
        The faction the guide is intended for. Can be Horde, Alliance, or Neutral.

  • The return value
      The guide object is returned, which you can now feed into some additional functions to more fully describe the guide.

Guide Description Functions


  • WoWPro:GuideLevels(guide, start_level, end_level, mean_level)
      The starting, ending and average level for the quests in the guide. It is not what level you will end up at by doing the guide, it is the required level to get the quests even if you have XP locked down.
      The start_level controls when a guide will be offered to the user. The mean level sets the "color" of the guide to indicate difficulty.
      The end_level controls a warning to XP locked users that not all quests in the guide can be completed.
  • WoWPro:GuideIcon(guide, icon_type, icon_reference)
      The icon to associate with the guide. With an icon_type of "ACH", the icon_reference is the achievment number (like the "Did ## quests in Tanaris").
      With an icon_type of "PRO", the icon_reference is a profession number.
      With an icon_type of "ICON", the icon_reference is an icon path.
      For Achievement guides, setting the correct icon_reference is doubly important, as it also sets the guide name, class and subclass from the game fucntions
  • WoWPro:GuideClassSpecific(guide, class)
      Tells the system that this guide is restricted to a particular class. Used for the "DeathKnight" only starting zone.
  • WoWPro:GuideRaceSpecific(guide, race)
      Tells the system that this guide is restricted to a particular race. Used for the "Goblin" or "Worgen" starting zones.
  • WoWPro:GuideProximitySort(guide)
      Tells the system to sort the steps in order of proximity every time you complete a step.
  • WoWPro:GuideNextGuide(guide,nextGID)
      Tells the system which guide to offer as the next guide. For a neutral guide you can use two GIDs separated by a "|" for each faction (Alliance first).
  • WoWPro:GuideSteps(guide, ...
      Register the function which returns the big "[[ ... ]]" quoted string of all the guide steps.
  • Fancy things: But this is really LUA code we are running, so we can do fancy things here. Look at this!
    WoWPro:GuideIcon(guide,"Icon",
        WoWPro:GuidePickGender(
            "Interface\\Icons\\Achievement_Character_Dwarf_Male",
            "Interface\\Icons\\Achievement_Character_Dwarf_Female"))
    

    This picks an icon for the Dwarf starting zone depending on the gender!

[Back to top]

The Guide Code

    Finally, to the meat of the guide. Each line of code represents one step in the guide. You can have blank lines if you like to help break up the big block of code, but make sure they are COMPLETELY blank. A single space on an otherwise blank line can cause the guide to not load!

    For each line, You have several fields of import. The first is the step type, represented by a single uppercase character at the front of the line followed by a space. Step types tell the addon what icon to display, and can also tell the addon how to auto-complete the step.

    Right after the step type, you'll see the step text. For quests, this will be the quest name. For location-based steps (run to, fly to, hearth to, etc) this will be the zone or sub-zone name. For other steps, it can vary.

    After the step text come the tags, and this is where most of the "coding" comes into play. Some tags are required, some are not. These tags help the addon know how to handle the step, whether to display a note, where to map the coordinates, and more.

[Back to top]


Step Types


A – Quest Accept

    Use this every time you direct the player to accept a step.

    Example:

      A Wanted: Dreadtalon |QID|12091|N|From the Wanted Poster just outside the door.|
      

    Auto-Completion:

      When a quest of the specified QID newly appears in the user's quest log.

[Back to top]

C – Quest Complete

    Use this when the player is completing all of the steps of a quest at once. If you are planning to split up the quest complete steps, you can still use this type of step, but you need to add quest objective tags (|QO|) to it.

    If you want to mark a complete step as being non-combat, add a |NC| tag!

    Example:

      C Blood Oath of the Horde |QID|11983|N|Talk to the Taunka'le Refugees.|
      

    Auto-Completion:

      When the quest of the specified QID is marked (complete) in the user's quest log.

    Modifications:

    • Use a |NC| tag to mark the step as non-combat, giving it a cog icon instead of crossed swords.
    • Use a |QO| tag to make the step complete based on one quest objective rather than all of them.

[Back to top]

T – Quest Turn-in

t – Quest Turn-in (suppressible)

    Use this every time you direct the player to turn in a step.

    Example:

      T The Flesh-Bound Tome |QID|12057|N|Back at Agmar's Hammer.|
      t Test Your Strength|QID|29433|M|48.06,67.05|N|To Kerri Hicks.|
      

    Auto-Completion:

      When the quest of the specified QID disappears from the user's quest log or after viewing the completion page for the quest.

    Skipping:

      For a "T" step, if the completion criteria for the quest have not been met, the step will not be skipped. So use a C step if you need it done.
      For a "t" step, if the completion criteria for the quest have not been met, the step will be skipped. When it is completed, the "t" will step magically reappear.

[Back to top]

R – Run F – Fly b – Boat/Zeppelin H – Hearth P - Portal

    These steps are all really variations on the same type – a location change.

    Hearth steps will automatically provide a use button with the hearth stone on it.

    Example:

      H Warsong Hold |QID|11686|U|6948|
      

    Auto-Completion:

      When the subzone or zone name matches the specified one.

    Modifications:

    • Use a |CC| tag to make the step complete when the user reaches a coordinate, rather than a zone name.
    • Use a |CS| tag to make the step complete when the user passes through a series of coordinates, rather than based on the zone name.

[Back to top]

h – Set Hearth

    Instructs the user to set their hearthstone. Make sure to spell the town’s name exactly correctly, or it won’t auto complete correctly.

    Example:

      h Warsong Hold |QID|11598|N|At the innkeeper.|
      

    Auto-Completion:

      Auto-completes on the message “TOWNNAME is now your home.”

[Back to top]

f – Get Flight Point

    Instructs the user to get the flightpath. While convention suggests you use the subzone name as the step text, it's not required.

    Example:

      f Moa'ki Harbor|QID|11585|Z|Dragonblight|
      

    Auto-Completion:

      Auto-completes on the UI message "New flight point discovered". Does not require or use a subzone name.

[Back to top]

K – Kill U – Use B – Buy r – Repair/Restock l - Loot L - Level N - Note

    None of these steps auto-complete on their own. They all behave exactly the same, and you should supply a tag to help them auto-complete if at all possible. Avoid the N type step as much as possible since it doesn't give the user any visual cue on what to do.

    Example:

      K Fjord Crows |QID|11227|L|33238 5|N|Until you have 5 Crow meat.|
      

    Auto-Completion:

      IMPORTANT: This step has no auto-completion on it's own! You'll need to supply a tag to do that. Commonly used tags include |L| and |QO|. The above example uses a |L| tag.

[Back to top]

; - Comment Step

    Use this to put a comment into the guide. Since the guide lines are in a LUA bracket quote pair, you can not use a LUA double hyphen (--) to comment out a line.

    Example:

      ; Begin Class specific training quests for Level 3
      A Steady Shot|QID|14007|M|60.26,77.54|N|From Bamm Megabomb.|Z|Kezan|C|Hunter|
      

    When the parser encounters a comment step, it records the line, but does nothing with it. Empty lines or lines of just whitespace are discarded. Use of comments by guide writers is encouraged, particularly when you do something clever or complicated. A ; after a step also starts a comment, but is discarded by the parser. Hence, the first type of comment is visible when viewing the guide steps, but the second is not.

[Back to top]

$ - Treasure Step

    Use this to register a quest tagged treasure in the game. Many treasures in the game have a flag quest behind them that is completed upon looting the treasure.

    Example:

      $ Gurun|QID|34839|M|47.00,55.20|Z|Frostfire Ridge|ITEM|111955|N|And [money=120.00]|
      

    A QID is required for this type of step. The primary item should be indicated in the ITEM tag. Any secondary rewards should be in the note.

[Back to top]


Tags


|QID|####| – Quest ID

    This tag is REQUIRED for every step.

    Even on a step that has nothing to do with any quest (e.g. Hearth steps) it is still important to have this tag there as well. Use the ID of a quest which, if completed, means the user no longer needs to complete that step.

    Example:

      A Wanted: Dreadtalon |QID|12091|N|From the Wanted Poster just outside the door.|
      

    Auto-Completion:

      Regardless of what other tags the step has, if the addon detects that the QID quest has been turned in, this step will complete.

[Back to top]

|ACTIVE|####| – Active Quest ID

    This tag will skip the step if the given quest is not active. I.e. you need to be on this quest, but not have completed it.

    Example:

      A The Grand Melee|QID|13761|ACTIVE|13717|M|76.40,19.00|N|From Airae Starseeker.|
      

[Back to top]

|AVAILABLE|####| – Available Quest ID

    This tag will skip the step if the given quest is not available. I.e. you need to not be on the quest or have completed it.

    Example:

      R Go here for Grand Melee|AVAILABLE|13717|M|76.40,18.00;76.40,19.00|N|Take this path|
      

[Back to top]

|QG|Some text| – Quest Gossip

    This is used for quests where the NPC will ask you a question and then you need to supply an answer. In the Timeless Isle, for example, Senior Historian Evelyna has a trivia quiz. Here is am excerpt from the quiz:

    Example:

      A A Timeless Question|QID|33211|M|65,50.6|N|From Senior Historian Evelyna, daily.|
      ; This first C step "catches" until you GOSSIP with Evelyna and then goes away when it does not match the gossip
      C A Timeless Question|QID|33211|QG|Senior Historian Evelyna|N|Chat with Evelyna to get your question.  The question will change each time you chat with her, but we have a cheat sheet.|
      C A Timeless Question|QID|33211|QG|assault on Icecrown|N|Mord'rethar|
      C A Timeless Question|QID|33211|QG|bloodied crown|N|King Terenas Menethil II|
      C A Timeless Question|QID|33211|QG|Broken|N|Nobundo|
      ...
      T A Timeless Question|QID|33211|M|65,50.6|N|To Senior Historian Evelyna.|
      

    When you are interacting with an NPC between the GOSSIP_OPEN/_CLOSED states, the addon samples the text and matches it against the text in the QG tag. The match is case insensitive. If it matches, the step is not skipped, if it does not match, the step is skipped. If we are not interacting with an NPC between the GOSSIP_OPEN/_CLOSED states, then the tag has no effect.

    Auto-Completion:

      It does not do any auto-completion. The quest turnin will take care of it!

[Back to top]

|QO|Some Mob slain: 10/10| – Quest Objective

|QO|1| – Quest Objective

    This is used for quests where you won’t be completing all objectives at the same time or when the objective locations are very specific and static.

    Please note that the addon is smart enough to know that when you use a QO tag, you want it to be have like a QO step, NOT a C step – so you can still use the C step type to get the nice icon for users to see. The quest tracker will only track the correct quest objective, and the step will auto-complete when that objective is complete. Remember also that you can change the step text to be something other than the quest name and it won't hurt anything!

    You can also list multiple quest objectives in one step, and the step will complete when all of them are complete. Just separate them with a semicolon (Eye.

    You can also use a number instead of text. The number is the ordinal of the quest of objective. The addon will use the localized text to display the goal so people playing on non-English game clients will have a better idea of what to do.

    Example:

      C Watchtower Burned |QID|11285|QO|Winterskorn Watchtower Burned: 1/1|U|33472|
      C Bridge Burned |QID|11285|QO|Winterskorn Bridge Burned: 1/1|U|33472|
      C Dwelling Burned |QID|11285|QO|Winterskorn Dwelling Burned: 1/1|U|33472|
      C Barracks Burned |QID|11285|QO|4|U|33472|N|Winterskorn Barracks Burned|
      

    Auto-Completion:

      Auto-completes when the addon detects the exact QO text in the QID quest's leaderboard in the user's quest log. Spelling and capitalization is very crucial here!

[Back to top]

|O| – Optional

    This tag makes the step optional and will only show if the player has the quest in their quest log.

    Use this on an Accept step with a Use tag and it will only show if the player has the item in their bags, useful for quests that come from items.

    You can also use the |PRE| tag with it to only display the objective if the quest with the QID listed in the |PRE| tag has been completed.

[Back to top]

|PRE|####| – Prerequisite

    This is used in quest skipping logic, so please use it for every quest that has a prerequisite, optional or not! You only need to use this on Accept steps, the guide will extrapolate from there.

    You don’t need to include previous steps in the chain with this tag, just the most recent. However, you CAN include multiple prerequisites if it is applicable by adding a ; (semicolon) or a + (plus) in between each the quest IDs. Use one or the other, don't mix. A semicolon indicates that all of the quests have to be completed for this step to activate. A plus indicates that any of the quests can be completed for this step to activate.

[Back to top]

|L|####| – Loot

    Used when you need to make sure the player has a specific item or amount of an item in their bags. Add the quantity after the item number with a space in between. If you only need one of an item, you do not need to specify a quantity.

    Note that in some quests you loot an item, but it may not appear in your bags.
    If so, you need to use the right QO tag instead.

    Please do not use this along with a C type step or with QO tags, as it will cause issues in the tracking display.

    Auto-Completion:

      Causes the step to complete when the user has the specified item in their bag.

[Back to top]

|U|####| – Use

    This will create a button for the item specified so you don’t have to dig through your bags to find it.

    You don't need to list this on hearth type steps, it's added automatically.

[Back to top]

|C|Priest,Mage,…| – Class |R|Orc,Troll,…| – Race

    These will only show the step if you are playing the specified class/race. Use commas to separate entries to list more than one race or class.

[Back to top]

|N|…| – Note

    A general note for the step to add additional information. Please try to limit these to one or two sentences.

[Back to top]

|M|55.55;55.55| – Mapping

    List coordinates here. You can list multiple coordinates by separating them with semicolons (Eye. Make sure you list coordinates for every step! The addon CAN get coordinates from the in-game quest blobs, but we'd rather have our own coordinates listed.

    If you have more than one coordinate, you need to specify one of the |CS|CC|CN| tags.

[Back to top]

|Z|Zone Name| – Zone

    Use this tag if the step goes outside the zone for the guide. IMPORTANT – if you don’t use this tag and the coordinates are not in the guide’s title zone, they will show up WRONG.

[Back to top]

|S| – Sticky |US| – Un-Sticky

    These are for do-as-you-go steps. Use |S| on the do as you go message. Use |US| on a step with the same name when you want to have the user actually complete the step.

    Example:

      C Galgar's Cactus|QID|4402|N|Loot Cactus Apples from Cacti|S|
      C Vile Familiars|QID|792|N|Kill the Vile Familiars in the north.|M|44.7,57.7|
      C Galgar's Cactus|QID|4402|N|Loot Cactus Apples from Cacti|US|M|44.7,57.7|
      

    In this example, the user is instructed to pick up cactus apples while killing vile familiars. Once they kill all the familiars they need, the stickied cactus apple step becomes a normal step.

    Auto-Completion:

      |S| tagged steps auto-complete when the corresponding |US| type step becomes active, so only one will be active at a time.

[Back to top]

|LVL| – Level

    Use this tag to denote a step that requires a particular level. There is also a step type, L, to denote a step that completes once the user levels up.

    Auto-Completion:

      For L steps, completes when the user reaches the specified level.

    Step-Enabling:

      For non-L steps, enable the step if the user is at least the specified level.

    Alternate usage - Step - hiding:

      prepend the level with a minus "-" sign to cause the step to not display if the user is over the specified level. (|LVL|-109|)

[Back to top]

|LEAD| – Lead In Quest

    Use for lead in or breadcrumb type quests, followed by the QID for the quest it leads to. This step will be checked off if the user has already completed the quest it leads up to.

    Auto-Completion:

      Completes when the user completes the specified QID quest (sort of like a second QID).

[Back to top]

|T| – Target

    Follow by the name of the mob or NPC you want the user to be able to target.

[Back to top]

|P| – Profession

    Two arguments are required: the name of the profession and its "number". There are three optional arguments that follow:
      |P|Alchemy;171|
        The required form, with the name and profession number. If the toon has at least 1 in Alchemy, the step will activate.

      |P|Blacksmithing;164;42|

        This adds the profession level, which defaults to 1. A "*" can be used to mean max level for the expansion, 700 today. If the toon has at least 42 (>=) in Blacksmithing, this step will activate.

      |P|Enchanting;333;42;1|

        This sets the profession max level flag. A non zero value flips the sense of the profession level test. I.e. the toon would need less than 42 in Enchanting for this step to activate.

      |P|Engineering;202;*;0;150|

        This sets the profession max skill level. This defaults to 0. It will active the step if the current max profession level the toon could get without re-training is less than the argument. So this would require the toon to have Engineering(200).

    The allowed values for the profession names and numbers are:

      Alchemy;171
      Blacksmithing;164
      Enchanting;333
      Engineering;202
      Herbalism;182
      Inscription;773
      Jewelcrafting;755
      Leatherworking;164
      Mining;186
      Skinning;393
      Tailoring;197
      Archaeology;794
      Cooking;185
      First Aid;129
      Fishing;356
      (Thanks Fluclo!)

In addition, if the step is an "A" step and you do not have the profession, the step and QID are marked as skipped.

[Back to top]

|CC| – Coordinate Auto-complete |CS| – Coordinate Auto-complete in Sequence |CN| – No Coordinate Auto-complete

    Use either CC or CS in order to auto-complete the step when the coordinate (or set of coordinates), given in the |M| tag, is reached. If you are using a set of coordinates, the |CS| tag will make the step auto-complete only when the player follows the coordinates in sequence, from the first to last (final) coordinate, and the |CC| tag will make it auto-complete when the player reaches the final coordinate, regardless of the previous ones.

    The |CN| tag is used to indicate that a set of coordinates are just markers on the map and NO auto-complete should be done.

    If a set of coordinates is used in the |M| tag, one of these three tags is required or an error message will be issued.

    Auto-Completion:

      Completes when the user reaches the specified coordinate or series of coordinates.

[Back to top]

|RANK| – Rank

    This tag should be used as much as possible from now on, and denotes how important a quest is. 1 is the most important and will NEVER be skipped. 3 is the least important. Vital quest chains with great XP and item rewards should be marked 1. Things that are neutral in rewards but which are convenient to do should be a 2. Things that take you out of your way and aren’t particularly rewarding should be marked a 3. Anything unmarked will be considered a 1. In general, a character with heirlooms and RAF should be able to get through the guide on a setting of 1, while a character with none of these bonuses and who doesn’t do instances or have rested would need a setting of 2. 3 is more for completionists trying to get as many quests done as possible.

    The only other note to this: If you use a rank tag, you must make sure all quests following that one in a chain must have the same rank or higher. We don’t want the user to be instructed to pick up a quest that he or she has not done the prerequisites for.

    More specific descriptions:

    |RANK|1|

      You don’t need to use it, it’s implied if no rank is listed. Never skipped no matter what setting. Use for quest chains that lead to the “final” quest in the zone. I’m not sure how the high level zones go, but for the mid level ones there is usually one quest that yields very high quality rewards and “finishes” the story for that zone. All quests leading up to and including this kind of a quest should be rank 1.

    |RANK|2|

      These steps are only skipped by people on the lowest completion setting. Use this for quest chains that don’t lead to the “final” quest – though NOT if there are a ton of quest chains like this. I would say as a general guideline, between 1/4 and 1/3 quests should have this tag.

    |RANK|3|

      Really out of the way or annoying quests with little return. I haven’t been using it too often. Something the typical user would NOT want to do, something only completionists would want to do.

    |RANK|-1|

      Denotes a step you only want to show when a guide is being run on RANK 1. Typical usage is for R steps when you skip content that rank 2 or 3 walks you through.

[Back to top]

|NC| – Non-Combat

    Used with the C step, this suppresses the display of the step if the player is in combat.

[Back to top]

|NA| – Not Automatic

    If a guide is marked as an auto-switching guide using WoWPro:GuideAutoSwitch(guide), this tag is used to make this particular quest as not triggering an auto-switch. This is used for things like dungeon quests or other quests that are going to hang around in your quest log for a long time and could result in many irritating offers to switch guides.

[Back to top]

|CHAT| – Chat

    Used with the C step, this changes the icon to the Gossip icon, so you know you need to talk to someone.

[Back to top]

|REP| – Reputation

    Takes a set of two required arguments and up to two optional ones. Lets take an example:

    |REP|Operation: Shieldwall;1376|

      This is the minimally acceptable form. The first argument is the name of the faction and the second is the faction number. You can get faction numbers off of WowHead. Yeah, the number is all you really need, but then the guide would be unreadable. Besides, Blizzard has changed the names of factions in past patches, but preserved the faction numbers, so we feel safer in using the numbers. The third argument defaults to neutral-exalted and the fourth to 0. Explanations for them follow. This form enables the step if the reputation with "Operation: Shieldwall" is neutral through exalted.

    |REP|Operation: Shieldwall;1376;friendly|

      The third argument is a reputation or friendship range.
        Reputations are: hated, hostile, unfriendly, neutral, friendly, honored, revered, exalted

        Friendships are: stranger, acquaintance, buddy, friend, good friend, best friend

      Reputations are used with factions, like the Scryers or Tillers. Friendships were introduced in 5.1 for your status with individual NPC's like Gina Mudclaw.

      A reputation range is separated by a '-' like neutral-exalted. If only one element is present, like the example, it is doubled up and interpreted as friendly-friendly and means that the step is enabled only when friendly with the faction. Do not mix reputation keywords and friendship keywords or evil things will result.

    |REP|Operation: Shieldwall;1376;friendly;950|

      The last argument is either the reputation level or the reputation bonus detector. In the example, it specifies that you need to be friendly and at least 950 points into friendly. It will not activate for any higher levels of reputation. You use this for quests that appear at specific reputation levels instead of reputation boundries. We may in the future choose to obey the upper reputation limit as well.

    |REP|Operation: Shieldwall;1376;revered;nobonus|

      The last argument is the reputation bonus detector. In the example, it specifies that you need to be revered and not have purchased and used the "Grand Commendation of Operation: Shieldwall". This can be used in guides to prompt the user to buy the commendation at the right rep level. The last argument could also be "bonus" to detect that you have the bonus, but we did that for completeness rather than utility.

[Back to top]

|ACH| – Achievement

    Takes a set of one required arguments and two optional ones. Lets take a few examples:

    |ACH|6031|

      This is the minimally acceptable form. The first argument is the number of the achievement, 6031, which you can look up in wowhead. In this form, the step completes if the whole achievement is complete.

    |ACH|6031;2|

      This is the second form. The first argument is the number of the achievement, 6031, which you can look up in wowhead. The second, specifies the step in the achievement, in this case "firing off the fireworks in Orgrimmar". In this form, the step completes if the portion of the achievement is complete.

    |ACH|6031;2;true|

      This is the third form. The first argument is the number of the achievement, 6031, which you can look up in wowhead. The second, specifies the step in the achievement, in this case "firing off the fireworks in Orgrimmar". The third augment is the "flip" argument. In this form, the step completes if the portion of the achievement is not complete.

    |ACH|6031;;true|

      This is the fourth form. The first argument is the number of the achievement, 6031, which you can look up in wowhead. The second is set to nil, so it is equivalent to the first case. The third augment is the "flip" argument. In this form, the step completes if the whole achievement is not complete.

[Back to top]

|BUFF| – Unit Buff

    Buffs, those things that appear at the top, like Sayge's Dark Fortune of Strength, can be detected by this tag and cause the step to complete. Multiple buffs can be specified with the usual ';' delimited list. Example:
    N Sayge's Dark Fortunes|M|52.94,75.94|BUFF|23735;23736;23737;23738;23766;23767;23768;23769|N|Sayge offers different 2 hour buffs.  Pick one and elect to get a written fortune for a chance at a quest item! We pre-select based on your class.|
    

[Back to top]

|PET| – Pet Detect

    The PET tag takes one, two or three arguments, depending on what you are up to. The second and third arguments default to 3;false if not specified.

    |PET|6031|

      In the one argument form, this tests to see if less than 3 of the indicated pet. The creature IDs are not well documented. As far as I know, the only place to get them are in the Blizzard web API or by using the WoW-Pro debug log, which lists the IDs for all the pets you have.

    |PET|6031;1|

      In the two argument form, this tests to see if less than 1 of the indicated pet.

    |PET|6031;1;true|

      In the three argument form, this tests to see if you have >= 1 of the indicated pet. A true value flips the sense of the test.

[Back to top]

|BUILDING| – Building Detect

    The BUILDING tag takes two or more arguments, depending on what you are up to. The first argument is ignored and is used for documentation and second and following arguments are building numbers. You can find a list of building numbers for WoD at http://wod.wowhead.com/buildings . If you have none of the buildings specified, then the step is skipped. As a special bonus, if the step does not have a |M| tag, one for the building location will be added. The addon uses the building locations on your Garrison map, so it won't be perfect, but it is pretty good.

    |BUILDING|Lumberyard;40|

      In the two argument form, this tests to see if you have the indicated building. In this case, a level 1 Lumberyard.

    |BUILDING|Lumberyards;40;41|

      In the three argument form, this tests to see if you have either a level 1 or level 2 lumberyard.

    Two special buildings types exist:

    |BUILDING|TownHall;2|

      In this form, it tests your Town Hall level. In this case, it checks that the Town Hall (Garrison) level is exactly 2. Only one level can be tested for. Note that this form does NOT set the |M| tag.

    |BUILDING|TownHallOnly|

      In this form, this tests to see if you have built no buildings. No other arguments are paid attention to!

[Back to top]

Comments

Ranks

How do you change ranks?

 

For instance, I am in Stormheim, doing the quests there, and I only want to see the Rank 1 quests. How do I change it to do that in the settings?

Profession correction

If anyone used P|Leatherworking;164|  in a guide, it is the wrong number... it SHOULD be P|Leatherworking;165| 

I just editted this guide to the correct number.

Another not on the list above...

|RECIPE| ;)

B Recipe: Koi-Scented Stormray|M|71.61,48.87|P|Cooking;185|RECIPE|201503|L|133819|N|From Markus Hjolbruk.|

Guide has you Buy the Recipe, for cooking (if you have cooking), and if you do NOT have it Koi-Scented Stormray (Spell ID: 201503). Recipe ID is 133819 to learn it.

 

Interesting to note though, 201503 is Rank 1 of the recipe, 201532 - Rank 2, and 201552 - Rank 3...  but all three (WP thinks) exist in your skill, once you've learned all three, so you dont need to list all three IDs... 

 

 

 

 

 

Doesn't seem to work: |R|Multiple,Races|

When I use |R|SingleRace| this works as expected, but when I do |R|Multiple,Races| it doesn't.

For example, load up Coldridge Valley on a non-Dwarf, it has the following line, but it doesn't show:
R Coldridge Valley |QID|24469|M|67.18,41.41|R|Gnome,Draenei,Night Elf,Human,Worgen|N|Head to the Dwarf starting zone, in Coldridge Valley, south-west of Dun Morogh. \n\nFrom Ironforge/Karanos, just follow the road south-west.|

Ludovicus_Maior's picture

Re: Doesn't seem to work: |R|Multiple,Races|

I broke it.   I fixed a bug with Hunter matching DemonHunter, but forgot about the multi-race case.

On  it.

Fixed in https://github.com/Ludovicus/WoW-Pro-Guides/commit/eaaea0650ba07085c0c1c1ba871f51e516bb9ba7

Would this also fix the same

Would this also fix the same issue with Class?

C Enter the cave here|QID|26318|CC|M|33.82,66.34;25.98,66.14;26.89,64.55|N|Enter the cave and run through it keeping to the left as you go.|C|Mage,Priest,Rogue,Warrior|

The above isn't showing on Mage, Priest, Rogue or Warrior.

Ludovicus_Maior's picture

Re: Would this also fix the same

Yup!

Are you sure it works?

Are you sure it works? You split on semicolon, but R and C tags are split on comma's.

Ludovicus_Maior's picture

Are you sure it works?

Damn you!   Corrected.

Hard to test with the leftovers of a hurricaine coming though.

 

Poor Ludo, fixing code and dodging a hurricane

Aren't you glad we are around to try and break WP so these little things are found, and fixed quickly? ;)

Ludovicus_Maior's picture

RE Poor Ludo, fixing code and dodging a hurricane

LOL,  when I saw WP, I first thought of WordPerfect, an ancient text editor.

Well, now you have 7.0.3O to play with!

lol.. WP

Yeah I remember WordPerfect...  I also used WordStar (I think it was...)  damn... 

I have some faulty memory chips... 

 

 

Do sticky |S| and unsticky

Do sticky |S| and unsticky |US| have to be nested properly, I was seeing some problems while playing through Redridge mountains, where they were in order.

 

Emmaleah's picture

Sticky/Unsticky Nesting

In my experience, It looks at QID to match up |S| / |US| steps.  That being said if you were using sticky steps with multiple individual QOs it would probably do wierd things.  I of course could be totally wrong, I  have not looked at the programatic logic, only speaking from what I think I have observed.

Emmaleah == bravely leading the way since ... um a long time ago... Smiling

Sticky/Unsticky nesting

That was what I was observing. Doing proper nesting seemed to fixed it.

C Quest 1|QID|1|S

C Quest 2|QID|2|S

C Quest 3|QID|3|QO|1

C Quest 3|QID|3|QO|2

C Quest 2|QID|2|US

C Quest 1|QID|1|US

 

 

Ludovicus_Maior's picture

Re: Sticky/Unsticky nesting

Yup!  They have to be nested that way or things get screwy!

Emmaleah's picture

More Syntax Documentation - Multiple QIDs

When a questgiver gives one of multiple (mutually exclusive) quests based on the choice the player made, you can account for it by putting a semicolon ";" between the QID's as shown below.   This is also good for when same questgiver gives identically named quests but differant QIDs to Horde and Alliance.

A Durotan's quest|QID|36474;35880|M|46.10,70.18|N|From Durotan. This
quest will vary depending on whether you chose the Lumber Yard or the
Sparring Arena in the previous step.|
;A The Razorbloom|QID|36474|M|46.10,70.20|N|From Durotan.| ; build lumber mill
;A Rage and Wisdom|QID|35880|M|46.10,70.18|N|From Durotan.| ; build sparring arena

Emmaleah == bravely leading the way since ... um a long time ago... Smiling

Ludovicus_Maior's picture

Re: More Syntax Documentation - Multiple QIDs

Yeah, I also did not document wildcard quest IDs.  In the Alliance Shieldwall dailies guide I have lines like this:

A Amber Kearnen's Quests|QID|*|M|89.79,32.43|NPC|68908|N|If Amber Kearnen offers a quest, off to the Skyfire or you go! Skip otherwise|

A Get Troteman's Quests|QID|*|M|89.69,33.08|NPC|67631|ACTIVE|-32451;-32452;-32157;-32142|N|From Marshall Troteman.|

A Get Mishka's Quests|QID|*|M|89.67,32.79|NPC|67630|ACTIVE|-32451;-32452;-32116;-32157;-32142|N|From Mishka.|

This has the effect of grabbing all the quests from Amber, then passing you on to Troteman to try to grab his quests, ONLY if Amber did NOT give you any quests (note the negative values in ACTIVE that flip the test).  Then you go to Miska.

PS:  semicolan -> semicolon 

 

Emmaleah's picture

ITEM tag

You dont have the documentation listed for the item tag? IIRC you can put more than one item?

Is it?

K BigNasty|QID|12345|M|12,38|Z|Durotar|ITEM|123456;123457|N|Kill and loot for a bit of treasure.|T|BigNasty|

Emmaleah == bravely leading the way since ... um a long time ago... Smiling

Ludovicus_Maior's picture

Re: ITEM tag

Item buttons support only a single item.  Do you really want more than one?

Emmaleah's picture

ITEM

I dont know.  With Legion all the rares (silver) have a high (not 100%) chance to drop a BoP item (ilvl 660 in Azsuna -- hope they scale that) and a artifact powering-up item.  I dont suppose its necesary to list the powering up item, but with the lackluster quality of the main item, its really the only reason to kill them, (unless achievements are important to you).

Emmaleah == bravely leading the way since ... um a long time ago... Smiling

Ludovicus_Maior's picture

Re: ITEM (upgrades)

Hmm.  Let me think abou this.  What you might want is a button that displays more than one item on mouseover.

It might be possible.

Building

Clicking |BUILDING| – Building Detector doesn't jump you to the Building section of the guide.

I was hoping I could use this tag for Garrison Level, but couldn't work out a way to do. Sometimes coordinates are different depending on the level of garrison, and it would be smoother if it just shows the right one for the level of garrison you have. |GARRISON|1| to only show if your garrison is level 1? 

Ludovicus_Maior's picture

Re: Building

If your step does not have an M tag, but has a BUILDING tag, the addon will add an M tag automatically for the level of the building.

If the building name is "TownHall" then the building ID is interpreted as the desired level.  You can use this for locations that are inside the townhall.  Only one building-id/level per townhall.  So

if the building name is "TownHallOnly" then the step will be activated if there is a town hall and no other buildings.

TownHall Level == Garrison Level

 

PS:  I amended the documentation.

Pandaren

I am attempting to write a profession leveling guide for enchanting and would like to keep it neutral if possible but there is a point where there is a pattern that has to be bought in order to continue. There are side specific vendors and I can't find any way to add tags for Horde or Alliance in the steps of the guide and since Pandaren could be for both sides I wish to know how to separate steps for either side.

Thank you for your time.

 

I am relying heavily on Twists Tailoring guide for help, so a BIG THANKS to Twists for the work on that guide.

Ludovicus_Maior's picture

Re: Pandaren (Professions)

Its easy.   Use a |FACTION| tag to control which faction sees the step.

I use it in the shopping guides all the time.

Take a look at:

http://wow-pro.com/wiki/enchanting_formulas

Professions tag |P|

Had a bit of a time trying to work out the Professions tag |P|, does it need skill numbers?

Ok, answered my own question.

Ok, answered my own question. I've done digging and find that you need both the Profession Name and ID number for it to display. If you don't have the Skill ID, the step won't show. The minimum needed is |P|Profession_Name;Skill_ID|

The profession names and IDs are:

Primary:

  • Alchemy;171
  • Blacksmithing;164
  • Enchanting;333
  • Engineering;202
  • Herbalism;182
  • Inscription;773
  • Jewelcrafting;755
  • Leatherworking;164
  • Mining;186
  • Skinning;393
  • Tailoring;197

Secondary:

  • Archaeology;794
  • Cooking;185
  • First Aid;129
  • Fishing;356

 

Add to guide source documentation

Can we add this list to the guide above?

Ludovicus_Maior's picture

Re: Add to guide source documentation

Sure.  But I'll have do it when I am not enjoying a margarita.

Ludovicus_Maior's picture

Re: Add to guide source documentation

Added.

Thanks

Thanks for that. Goes nicely with that section.

Is |LVL| working as intended

Is |LVL| supposed to act differently depending on the initial Step Type?

For example:
L TEXT|LVL|20|
This step shows if the player is Level 1 to 19, and not if the player is level 20 to 90

C TEXT|LVL|20|
This step does NOT show if the player is Level 1 to 19, but does show if player level is 20 to 90.

Is it meant to handle the |LVL| tag if the initial Step Type is different?

Ludovicus_Maior's picture

Re: Is |LVL| working as intended

LVL may not be working correctly right now.  I need check this.

Your description is correct and the Addon syntax has been updated.

The LVL tag is the required level for all step types except L steps.

For  L steps, the LVL tag autocompletes if the toon is less than the indicated level.

So we do this in the parser:

WoWPro.level[i] = text:match("|LVL|([^|]*)|?") or WoWPro:GrailQuestLevel(WoWPro.QID[i])

This sets the default level for all steps that do not have one set using grail, if it is availible.

Ludovicus_Maior's picture

|LVL| is working as intended

Yup. The logic reflects the statements!

        -- Checking level based completion --
        if WoWPro.level and WoWPro.level[k] then
            local level = tonumber(WoWPro.level[k])
            if WoWPro.action[k] == "L" and level <= UnitLevel("player") then
                WoWProCharDB.Guide[GID].completion[i] = true
                skip = true
                WoWPro.why[k] = "NextStep(): Skipping L step because player level is high enough."
                break
            end
            if WoWPro.action[k] ~= "L" and level > UnitLevel("player") then
                skip = true
                WoWPro:dbp("Skip %s [%s] because its level %d is too high.",WoWPro.action[k],WoWPro.step[k],level)
                WoWPro.why[k] = "NextStep(): Skipping step because player level not high enough."
                break
            end
        end

|LVL|

So Ludo, what would be the logic for NOT |LVL| ?

 

IE:  With Legion, you DO NOT get the Bonus Objectives if you are AT 110, so how can we make WP Skip showing the B/O ?

A Moonclaw Vale-Bonus Objective|QID|39393|M|61.04,73.23|LVL|-110|N|Auto accepted by entering the area.|

I know trying |<110| doesn't work, or putting |98-109|.  -110 still shows it, but does NOT throw an error as the other two ways did.

http://us.battle.net/forums/en/wow/topic/20749166940#post-3

Now, next xpac if they raise the level cap, it might be able to complete. I dont know.

 

Ludovicus_Maior's picture

Re: |LVL|

OK.   This is how you can do it.

A Moonclaw Vale-Bonus Objective|QID|39393|M|61.04,73.23|LVL|-109|N|Auto accepted by entering the area.|

As of this checkin:  https://github.com/Ludovicus/WoW-Pro-Guides/commit/b644dc79f9b223b2756b5f8cd231d27f0a9a8bed

The negative level will auto-complete the step if your level is >= abs(level) on NON-L steps.

 

|LVL|

Ok... will test it when I get back to that area

 

Super, thanks for checking.

Super, thanks for checking.

*smacks myself*

Ludo...  I screwed up....

I FORGOT to RESET the guide, AND didn't pull a developers verison off github BEFORE checking if it worked... *ducks in shame*

I just did a reset, and grabbed a copy of the files off github, and... 

 

Yes it works.. ;)

(from log, debug on)

114127.0274 ~ WoWPro: Skip A [Moonclaw Vale-Bonus Objective] because player level 110 is too high.

114127.0275 ~ WoWPro: Step C [Moonclaw Vale-Bonus Objective/39393] skipped as not in QuestLog

114127.0276 ~ WoWPro: Step C [Moonclaw Vale-Bonus Objective/39393] skipped as not in QuestLog

114127.0277 ~ WoWPro: Step T [Moonclaw Vale-Bonus Objective/39393] skipped as not in QuestLog

 

And went to an area that I didn't go yet, and when I got there... nothing came up about the bonus objective... and the log shows...

115330.9662 ~ WoWPro: Skip A [Faerie Fracas-Bonus Objective] because player level 110 is too high.

115330.9663 ~ WoWPro: Step C [Faerie Fracas-Bonus Objective/38842] skipped as not in QuestLog

115330.9664 ~ WoWPro: 102=WoWPro.NextStep()

115330.9665 ~ WoWPro: Running: WoWPro:RowUpdate()

 

So it does work...  *sorry about the scew up*

|LVL|

Yes, Guide has Automatically GREYED out the Bonus Objectives in the guide list.

Just editted this Guide to reflect that, put it just before the |M| tags.

 

I know this might not be an issue for some, but as I hit lvl 110, when I also finished My third zone, it was upsetting me that the Bonus Objectives where not popping up.  So if you COMPLETE the guides as they have been written, you will CAP out about 2/3 - 3/4 through your third zone. (I did Azsuna, Highmountain, then Stormheim)

Added to Stormheim Ally.  I can not edit Storm-Horde, Azsuna, or Highmountain Guides.

Emmaleah's picture

Very nice addition

Bummer they can't be done at 110, was it that way in draenor too? I don't remember anymore, but I didn't think so.  I will get Stormheim horde as I am nearly done with my next iteration ov it.

I don't know why you can't edit, but I will get the others also , it just may take longer.  It should only need to be put on the "A" steps as "C" steps shouldn't show up if you don't have the quest in your log and the turn ins are "t" so they don't show until completed.

Emmaleah == bravely leading the way since ... um a long time ago... Smiling

yes, it is new for Legion, I

yes, it is new for Legion, I remember being able to do them still at 100.  and I was only putting them on the A steps.

Emmaleah's picture

I don't know, but I hope

I don't know, but I hope there is a way to use it in both ways.  I await the answer also.

Emmaleah == bravely leading the way since ... um a long time ago... Smiling

Any idea what goes into |R|

Any idea what goes into |R| for Pandarian race? I've tried Panda,Pandaria, Pandarian but steps still won't show for a Panda.

The official name is

The official name is Pandaren, if that helps. 

Yeah, perfect...  

Yeah, perfect...   |R|Pandaren| works just the way it should.

Maybe I should learn to spell :)

|PRE|####| – Prerequisite

Is there anything that can be done to have a Prerequisite where you have to have done at least one of a given list of quests?

At this moment if you do |PRE|1;2;3;4| then you have to have done all of quests 1, 2, 3 and 4. What I'd like is something where if you have done any of 1, 2, 3 or 4 then the step shows.

An example would be Crushing the Cores (25577), this only shows up if you've done Into the Maw! but this has four quest IDs, two for Alliance and two for Horde. A step with |PRE|25618;25623;25617;25624| would want you to have done all four quests before showing this step, I'd like something that would show the step if any of the four have been done. Is there something (other than four lines of code?)

Ludovicus_Maior's picture

Re: |PRE|####| – Prerequisite

I guess I need to update the documentation:

|PRE|1+2+3+4|  will skip the step only if you have completed none of the quests.  If you have completed one or more, then the step goes active.

Thanks, I'll try + in the

Thanks, I'll try + in the quest IDs.