Ackis Recipe List

API/Database Documentation

Database and code documentation for Ackis Recipe List.

Localization

Please see this page for information on localization within the addon.

File Breakdown

AckisRecipeList.lua
Main code for getting the database, adding entries to it, filtering, etc.
ARLColour.lua
Code for making output colourized.
ARLConfig.lua
All the configuration options for ARL
ARLFrame.lua
All the GUI code
Locals
All the localization files
RecipeDB
All the recipe database files
ARLDataminer.rb
Dataminer which was used to initially populate the ARL database.

Graphical Interface

All the graphical interface functions are located in ARLFrame.lua. This file contains all the functions needed for the GUI. If you have enhancements, know how to fix an issue, etc please feel free to contribute. Just leave a detailed commit note. If it's a new feature please run it by me first before adding anything.

Database Functions

In the RecipeDB is a single file for each profession. Each recipe is inserted into the database via 3 functions. For example:

-- Elixir of Lion's Strength -- 2329
self:addTradeSkill(RecipeDB,2329,1,2454,1,2259,0,1,55,75,95)
self:addTradeFlags(RecipeDB,2329,1,2,3,21,22,23,24,25,26,27,28,29,30,36,41,51,52)
self:addTradeAcquire(RecipeDB,2329,8,8)

The first line is a human readable comment, which states the recipe name, with the spell ID of the recipe.

Please see the [API] page for detailed documentation on the database methods.

Filter Method

Filters can be divided into two general categories:

Exclusive: if ANY of these are flagged to "FALSE", the recipe will not display
Non-exclusive: if ANY of these filters are flagged to "TRUE", the recipe will display

Thus, one possible flow for the CheckDisplayRecipe function is as follows:

Stage 1: Exclusive filters

  1. set retval to true
  2. loop through ALL Exclusive filters. If any "FALSE" condition exists, flag to false and exit loop

Stage 2: Nonexclusive filters (only do this is Stage 1 produced a TRUE value

  1. set retval to false
  2. loop through ALL Nonexclusive filters. If any "TRUE" condition exists, flag to true and exit loop

Finally, return retval.

I believe this will get through the flags in the shortest possible route, short circuiting the looping when any condition warrants it

List of Exclusive filters

This filters will prevent the recipe from showing up regardless of any other filters. For example, if one of them is false, the recipe is hidden.

specialty
known
unknown
class
skill
bindings
itemboe
itembop
recipebop
recipeboe
item
weapon
armor

List of Non-exclusive filters

  • If false, this will only exclude the display of cross-faction vendors/trainers/etc:
    • faction
  • The following filters will simply squelch the display of that particular acquire method
    • trainer
    • vendor
    • instance
    • raid
    • seasonal
    • quest
    • pvp
    • discovery
    • worlddrop
    • mobdrop
    • item (This includes ALL weapon and armor item types)
    • player types (melee, tank, caster, healer)
    • reputation (All reputation flags)

Note that if NO acquire methods remain unfiltered, the recipe will not be displayed.

Filter Flags

A recipe can be flagged with many (or even all) of the below flags. They are defined as follows:

Obtain

  • 1 = Alliance faction
  • 2 = Horde faction
  • 3 = Trainer
  • 4 = Vendor
  • 5 = Instance
  • 6 = Raid
  • 7 = Seasonal
  • 8 = Quest
  • 9 = PVP
  • 10 = World Drop
  • 11 = Mob drop
  • 12 = Discovery
  • 13-20 = Reserved for future use

Class

These flags are defined as:

  1. Can this class use this recipe? (ie: Rage potions, glyphs, etc)
  2. Can this class learn this recipe? (ie: Thistle tea)
  • 21 = Deathknight
  • 22 = Druid
  • 23 = Hunter
  • 24 = Mage
  • 25 = Paladin
  • 26 = Priest
  • 27 = Shaman
  • 28 = Rogue
  • 29 = Warlock
  • 30 = Warrior
  • 31-35 = Reserved for future use

Crafted Properties

  • 36 = Item BoE
  • 37 = Item BoP
  • 38 = Item BoA
  • 40 = Recipe BoE
  • 41 = Recipe BoP
  • 42 = Recipe BoA
  • 43-50 = Reserved for future use

Item Type

  • 51 = Physical DPS (melee/hunters)
  • 52 = Tanking
  • 53 = Healing
  • 54 = Caster DPS
  • 55 = Reserved for future use
Armor Type
  • 56 = Cloth
  • 57 = Leather
  • 58 = Mail
  • 59 = Plate
  • 60 = Cloak
  • 61 = Trinket
  • 62 = Ring
  • 63 = Necklace
  • 64 = Shield
  • 65 = Reserved for future use
Weapon Type
  • 66 = 1H/Offhand
  • 67 = 2H
  • 68 = Axe
  • 69 = Sword
  • 70 = Mace
  • 71 = Polearm
  • 72 = Dagger
  • 73 = Staff
  • 74 = Wand
  • 75 = Thrown
  • 76 = Bow
  • 77 = Crossbow
  • 78 = Ammo
  • 79 = Fist
  • 80 = Gun
  • 81-95 = Reserved for future use

Reputation

Original
  • 96 = Argent Dawn
  • 97 = Cenarion Circle
  • 98 = Thorium Brotherhood
  • 99 = Timbermaw Hold
  • 100 = Zandalar Tribe
Burning Crusade
  • 101 = The Aldor
  • 102 = Ashtongue Deathsworn
  • 103 = Cenarion Expedition
  • 104 = Hellfire Factions (Thrallmar/Honor Hold)
  • 105 = Consortium
  • 106 = Keepers of Time
  • 107 = Lower City
  • 108 = Nagrand Factions (Maghar/Kurenai)
  • 109 = Scale of the Sands
  • 110 = The Scryer
  • 111 = Sha'tar
  • 112 = Shattered Sun
  • 113 = Sporeggar
  • 114 = Violeteye
Wrath of the Lich King
  • 115 = Argent Crusade
  • 116 = Frenzyheart Tribe
  • 117 = Knights of the Ebon Blade
  • 118 = Kirin Tor
  • 119 = The Sons of Hodir
  • 120 = The Kalu'ak
  • 121 = The Oracles
  • 122 = The Wyrmrest Accord
  • 123 = Wrath Common Factions (The Silver Covenant/The Sunreavers)
  • 124 = Wrath Common Factions (Explorers' League/The Hand of Vengeance)
  • 125 = Wrath Common Factions(Explorer's League/Valiance Expedition)
  • 126 = Wrath Common Factions (The Frostborn/The Taunka)
  • 127 = Wrath Common Factions (Alliance Vanguard/Horde Expedition)

Acquire Flags

Defined below is the specification for the arguments passed back into addTradeAcquire. Each Acquire Type passes in different parameters depending on how the recipe is acquired:

	Acquire Type = 1								( Trainer )
		ID				- Index into TrainerList
	Acquire Type = 2								( Vendor )
		ID				- Index into VendorList
	Acquire Type = 3								( Mob Drop )
		ID				- Index into MobList
	Acquire Type = 4								( Quest )
		ID				- Index into QuestList
	Acquire Type = 5								( Seasonal )
		ID				- Index into SeasonList
	Acquire Type = 6								( Reputation )
		ID				- Index into ReputationList
		RepLevel		- ReputationLevel**
		RepVendor		- Index into VendorList
	Acquire Type = 7								( World Drop )
		ID				- Rarity Level
	Acquire Type = 8								( Custom )
		ID				- Custom string

Reputation ID

0 = Neutral
1 = Friendly
2 = Honored
3 = Revered
4 = Exalted

Faction ID

0 - Neutral
1 - Alliance
2 - Horde

Rarity colours

0 - poor #919191
1 - common #ffffff
2 - uncommon #00A900
3 - rare #0062C3
4 - epic #B343FF
5 - legendary #FA9900
6 - artifact #e5cc80

Profession IDs

2259 Alchemy
2018 Blacksmithing
2550 Cooking
7411 Enchanting
4036 Engineering
746 FirstAid
2108 Leatherworking
2575 Smelting
3908 Tailoring
25229 Jewelcrafting
45357 Inscription
53428 Runeforging

Game IDs

0 - Original WoW
1 - Burning Crusade
2 - Wrath of the Lich King

Table Structures

Recipe Array Structure

SpellID =
Level - Skill level at which you can learn the recipe
ItemID - ID of the item created by the recipe (if it exists)
Name - Name of the recipe
Rarity - Rarity level of recipe **
RecipeLink - String containing the recipe link
Display - Boolean determining if we display the recipe or not (via filters)
Known - Boolean determining if you know the recipe
Search - Boolean determining if it's in the search results (true = yes, false = no)
Profession - Flag for identifying which profession it is.
Speciality - Profession speciality (if it exists)
Game - Which expansion this recipe is from.
Orange - Skill level when recipe is orange.
Yellow - Skill level when recipe is yellow.
Green - Skill level when recipe is green.
Grey - Skill level when recipe is grey.

Mob DB

self:addLookupList(MobDB, 590, L["Defias Looter"], BZONE["Westfall"], 38.52, 55.94)
MobList
ID =
Name - Mob name
Location - Mob location (zone)
Coordx - X coordinate
Coordy - Y coordinate

Quest DB

self:addLookupList(QuestDB, 2859, L["Wild Leather Leggings"], BZONE["Feralas"], 47.97, 67.15, 2)
QuestList
ID =
Name - Quest Name
Location - Zone
Coordx - X Coordinate of quest start
Coordy - Y Coordinate of quest start
Faction - Faction **

Reputation DB

self:addLookupList(RepDB, 54, BFAC["Gnomeregan Exiles"]) -- Acquire Flag: 
ReputationList
ID =
Name -- translated faction

Seasonal DB

self:addLookupList(SeasonDB, 3, L["Darkmoon Faire"])
SeasonList
ID =
Name -- Translated Seasonal Event name

Trainer DB

self:addLookupList(TrainerDB, 16583, L["Rohok"], BZONE["Hellfire Peninsula"], 54.62, 40.62, 2)
TrainerList
ID
Name -- Trainer Name
Location -- Location (zone)
Coordx -- Trainer X coordinate
Coordy -- Trainer Y coordinate
Faction -- Faction ID **

Vendor DB

self:addLookupList(VendorDB, 13433, L["Wulmort Jinglepocket"], BZONE[""], 0, 0, 0)
VendorList
ID =
Name -- Vendor Name
Location -- Location (zone)
Coordx -- Vendor X coordinate
Coordy -- Vendor Y coordinate
Faction -- Vendor Faction ID **

SavedVariable Structure

This identifies the overall database structure for the saved variables. Italics are the default options.

  • addon.db.profile
    • tradeskill
      • {}
    • frameopts
      • offsetx
        • 0
      • offsety
        • 0
      • anchorTo
        • ""
      • anchorFrom
        • ""
      • uiscale
        • 1
      • tooltipscale
        • .9
      • fontsize
        • 11
    • sorting
      • "SkillAsc"
    • includefiltered
      • false
    • includeexcluded
      • false
    • closeguionskillclose
      • false
    • ignoreexlcusionlist
      • false
    • scanbuttonlocation
      • "TR"
    • spelltooltiplocation
      • "Right"
    • acquiretooltiplocation
      • "Mouse"
    • hidepopup
      • false
    • minimap
      • true
    • worldmap
      • true
    • autoscanmap
      • false
    • exclusionlist
      • {}
    • filters
      • general
        • faction
          • true
        • specialty
          • false
        • skill
          • true
        • known
          • false
        • unknown
          • true
      • obtain
        • trainer
          • true
        • vendor
          • true
        • instance
          • true
        • raid
          • true
        • seasonal
          • true
        • quest
          • true
        • pvp
          • true
        • discovery
          • true
        • worlddrop
          • true
        • mobdrop
          • true
      • item
        • armor
          • cloth
            • true
          • leather
            • true
          • mail
            • true
          • plate
            • true
          • trinket
            • true
          • cloak
            • true
          • ring
            • true
          • necklace
            • true
          • shield
            • true
        • weapon
          • onehand
            • true
          • twohand
            • true
          • axe
            • true
          • sword
            • true
          • mace
            • true
          • polearm
            • true
          • dagger
            • true
          • fist
            • true
          • staff
            • true
          • wand
            • true
          • thrown
            • true
          • bow
            • true
          • crossbow
            • true
          • ammo
            • true
      • binding
        • itemboe
          • true
        • itembop
          • true
        • recipebop
          • true
        • recipeboe
          • true
      • player
        • melee
          • true
        • tank
          • true
        • healer
          • true
        • caster
          • true
      • rep
        • scryer
          • true
        • argentdawn
          • true
        • ashtonguedeathsworn
          • true
        • cenarioncircle
          • true
        • cenarionexpedition
          • true
        • consortium
          • true
        • hellfire
          • true
        • keepersoftime
          • true
        • nagrand
          • true
        • lowercity
          • true
        • scaleofthesands
          • true
        • shatar
          • true
        • shatteredsun
          • true
        • sporeggar
          • true
        • thoriumbrotherhood
          • true
        • timbermaw
          • true
        • violeteye
          • true
        • zandalar
          • true
        • argentcrusade
          • true
        • frenzyheart
          • true
        • ebonblade
          • true
        • kirintor
          • true
        • sonsofhodir
          • true
        • kaluak
          • true
        • oracles
          • true
        • wyrmrest
          • true
        • silvercovenant
          • true
        • sunreavers
          • true
        • explorersleague
          • true
        • valiance
          • true
        • handofvengeance
          • true
        • taunka
          • true
        • warsongoffensive
          • true
        • wrathcommon1
          • true
      • classes
        • deathknight
          • true
        • druid
          • true
        • hunter
          • true
        • mage
          • true
        • paladin
          • true
        • priest
          • true
        • rogue
          • true
        • shaman
          • true
        • warlock
          • true
        • warrior
          • true

You must login to post a comment. Don't have an account? Register to get one!