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
- set retval to true
- 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
- set retval to false
- 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:
- Can this class use this recipe? (ie: Rage potions, glyphs, etc)
- 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
- ID =
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 **
- ID =
Reputation DB
self:addLookupList(RepDB, 54, BFAC["Gnomeregan Exiles"]) -- Acquire Flag:
- ReputationList
- ID =
- Name -- translated faction
- ID =
Seasonal DB
self:addLookupList(SeasonDB, 3, L["Darkmoon Faire"])
- SeasonList
- ID =
- Name -- Translated Seasonal Event name
- ID =
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 **
- 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 **
- 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
- offsetx
- 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
- faction
- obtain
- trainer
- true
- vendor
- true
- instance
- true
- raid
- true
- seasonal
- true
- quest
- true
- pvp
- true
- discovery
- true
- worlddrop
- true
- mobdrop
- true
- trainer
- item
- armor
- cloth
- true
- leather
- true
- mail
- true
- plate
- true
- trinket
- true
- cloak
- true
- ring
- true
- necklace
- true
- shield
- true
- cloth
- 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
- onehand
- armor
- binding
- itemboe
- true
- itembop
- true
- recipebop
- true
- recipeboe
- true
- itemboe
- player
- melee
- true
- tank
- true
- healer
- true
- caster
- true
- melee
- 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
- scryer
- classes
- deathknight
- true
- druid
- true
- hunter
- true
- mage
- true
- paladin
- true
- priest
- true
- rogue
- true
- shaman
- true
- warlock
- true
- warrior
- true
- deathknight
- general
- tradeskill
Facts
- Date created
- 14 Apr 2009
- Last updated
- 29 Sep 2009