Recipes*.gam Files
This section discusses the "\GameBalance\Recipes*.gam" files in the "CoreData.mpq" file. MPQ Patches to this file are located in the "base" subdirectory of the Diablo 3 "MPQs" directory. Please see the MPQs section for general MPQ information and basic information about how files are encoded.
There are three "Recipes*.gam" files that correspond to the three types of "crafting" in Diablo 3. Each of these files contain all of their corresponding recipes.
- RecipesBlacksmith.gam (Armor/Weapon recipes)
- RecipesJeweler.gam (Design recipes)
- RecipesMystic.gam (Enchant recipes — training-only)
These "Recipes*.gam" files work in conjunction with the Recipe *.rcp files. Each "*.rcp" file corresponds to a single crafted item, enchant, or gem combination.
Note that the non-training Mystic Enchant recipes are found in the ItemEnhancements.gam file.
Recipe Structure
The Recipe structure size is 0x14C bytes. The recipe name accounts for 0x100 bytes so it is not a very large structure. Here are the details of this structure:
| struct Recipe | // sizeof 0x14C | |
| { | ||
| 0x000 | DWord unknown1; | // always 0x00000000 |
| 0x004 | char recipeName[256]; | // non-NLS key name of the recipe |
| 0x104 | DWord rcpId; | // MPQ Id of the corresponding *.rcp file |
| 0x108 | DWord type; | // recipe type: 0=BS, 1=Jeweler, 2=Mystic |
| 0x10C | DWord source; | // recipe source: 0=Auto, 1=Plan |
| 0x110 | DWord goldCost; | // crafting gold cost |
| 0x114 | DWord level; | // crafting level required (internal) |
| 0x118 | DWord numMats; | // number of materials required to craft |
| 0x11C | RecipeMats mats[6]; | // recipe materials required to craft |
| } |
The Recipes.stl (StringList) data allows you to map the non-NLS key name ("recipeName") to the language appropriate name for the recipe. For example, the "T01_Armor_Helm" key maps to the "Apprentice Leather Hood" (enUS) string.
The "rcpId" is what binds a given recipe from this file to the corresponding Recipe *.rcp files.
The crafting "level" used in this structure is an internal (not displayed in-game) value between 1 and 46. In contrast, the level of the artisan displayed in-game go from "tier" 1 through 10: Apprentice, Journeyman, Adept, Master, Grandmaster, Illustrious, Magnificent, Resplendent, Glorious, and Exalted. As such, an in-game level (or tier, if you will) corresponds to 5 of the levels in this Recipe structure. This explains the fact that you need to train the artisan 5 times before they "level up", but you learn new patterns each time you train. As an example from the actual recipe data, we see that "Apprentice" items range from level 1-4, and "Journeyman" items range from 5-9.
RecipeMats Structure
The structure for the recipe materials that are required for crafting is:
| struct RecipeMats | // sizeof 0x08 | |
| { | ||
| 0x00 | DWord materialHash; | // item hash of the materal |
| 0x04 | DWord materialQty; | // quantity of the material |
| } |
Crafting Materials
Any given recipe can have at most 6 different types of materials required to craft it. This is reflected by the size of the "mats" array. The recipe material items are all found in the "Items_Other.gam" file. Below is a table containing most of the recipe material item hashes, item non-NLS key name, and item description from the from the Items.stl (StringList) file.
| Hash Value | Item non-NLS Name | Item Description (enUS) |
|---|---|---|
| 4034BA7D | Crafting_Training_Tome | Tome of Training |
| 7B0EDEA2 | Crafting_Tier_01A | Common Scrap |
| 7B0EDEA3 | Crafting_Tier_01B | Subtle Essence |
| 7B0EDEA4 | Crafting_Tier_01C | Fallen Tooth |
| 7B0EDEA5 | Crafting_Tier_01D | Petrified Bark |
| 7B0EDEC3 | Crafting_Tier_02A | Assorted Fragment |
| 7B0EDEC4 | Crafting_Tier_02B | Shimmering Essence |
| 7B0EDEC5 | Crafting_Tier_02C | Lizard Eye |
| 7B0EDEC6 | Crafting_Tier_02D | Corpse Ash |
| 7B0EDEE4 | Crafting_Tier_03A | Reusable Part |
| 7B0EDEE5 | Crafting_Tier_03B | Wishful Essence |
| 7B0EDEE6 | Crafting_Tier_03C | Encrusted Hoof |
| 7B0EDEE7 | Crafting_Tier_04D | Volcanic Coal |
| 7B0EDF05 | Crafting_Tier_04A | Valuable Component |
| 7B0EDF06 | Crafting_Tier_04B | Exquisite Essence |
| 7B0EDF07 | Crafting_Tier_04C | Iridescent Tear |
| 7B0EDF08 | Crafting_Tier_04D | Fiery Brimstone |
Note that the "Tome of Training" is assembled from combining 5 "Pages of Training".
The Mystic "gem combination" recipes simply take the different tiers of gems to craft. To craft a tier "n" gem (e.g., "Perfect Amethyst"), you will need 3 tier "n-1" gems (e.g., "Flawless Amethyst"). This is identical to how it was done in Diablo 2 except that you didn't need an artisan to learn the recipes. Also note that Diablo 3 has eleven tiers of gems (from Chipped to Radiant Star), up from Diablo 2's five — that's a huge increase.
There are also crafting materials that can be obtained from salvaging runes. These are only used in Mystic Enchant crafting recipes.
| Hash Value | Item non-NLS Name | Item Description (enUS) |
|---|---|---|
| 1695D8F4 | Crafting_Rune_Alabaster_Dust | Alabaster Anima |
| 8B530900 | Crafting_Rune_Crimson_Dust | Crimson Anima |
| 38F53AFE | Crafting_Rune_Golden_Dust | Golden Anima |
| D55356DF | Crafting_Rune_Indigo_Dust | Indigo Anima |
| A176802E | Crafting_Rune_Obsidian_Dust | Obsidian Anima |
For a complete list of recipes, check out D3Lexicon's Blacksmith and Jeweler. Please note that the Mystic was removed from the game during the Beta!
