BookNQuill
Member
LEVEL 4
140 XP
On this tutorial, I will teach you how to make a Custom Heirloom. This includes not only your own item but your own stats. So it won't be copy pasting any values or of the sort. We'll go completely scratch and show you how simple it really is, to create a custom heirloom scratch.
You'll need a few tools:
An MPQ Editor (Such as Ladik's MPQ Editor)
A DBC Editor (Such as WDBX Editor or Tails)
Common Sense
An SQL Editor (Such as HeidiSQL Or Navicat)
Obviously, your own Server. [1] (This tutorial is made for TrinityCore, you can try with other servers but I'm unaware if it would work the same, I say give er a shot if you want)
As an example I'll make a simple piece of plate armor, I will specifically make this Paladin only, but you don't have to do that. Before doing anything, make backups of ScalingStatDistribution.dbc and ScalingStatValues.dbc, at least the ones in your server's DBC files. These will be the main files we're editing.
Step 1. Deciding what stats you want to put it on
You'll want to know what stats you're going to put on the heirloom. Do you want, Int? Spell Power? Stamina? Strength? Agility? Block Value? Critical Strike? You'll want to keep a tab open of this here Stat ID List. For demonstration, I will be putting, Strength, Intellect, Stamina, Critical Strike and Spell Power. For Armor value, the way they do this is there are set Armor Progressions, meaning each armor type has its own armor progression, so you can't create your own armor progression from scratch unless you code it.
For Demonstration purposes, we'll pick one of them, plate obviously but we'll talk about that more when we actually get to it. So the key to getting the right stats, is knowing what stat values you want when you reach level 80. Meaning by the time you level to 80, you'll want your item for example to have +120 Stamina +100 Strength, etc.
From the Stat ID List, we can see our stats:
Strength = 4
Intellect = 5
Stamina = 7
Critical Strike Rating = 32
Spell Power = 45
Keep track of these as we'll need them later. We'll also need the math to get the values, in the DBC File, Scalingstatdistribution, the way the values work is a bit weird but essentially it goes like...
150/97*10000. To put this in word form, you're taking the value you want, I.E 150, dividing it by 97, then multiplying that result by 10000, your answer should be 15463.9175258, round this up/down, giving us 15464. That's the value you'll use. Now that we have finished the math we need to open the ScalingStatDistribution.dbc in one of our dbc editors. I have chosen WDBX Editor for this.
The first column you'll notice is the ID, this is the tag for your scalingstatdistribution. What that means is once we fill the rest of the row, for your item to refer to these Values, you'll use the ID which I'll also show you how later. Every Column after that up to column 11, will be where you enter your Stat IDS. Since I use WDBX Editor, it actually has made it clear that these columns are "StatType"s

As you can see in this image, I've already entered my statIDs. Look at 372, or all the way to the bottom, I've entered 4, 5, 7, 32, and 45. That's strength, intellect, stamina, crit rating, and spell power. For every column AFTER, I added a -1, for any column you don't use up to Column 11 (Or up to StatType_10) put -1 in place of the 0. Columns 12 - 21 are where the values go, the math we did. So for each stat value you want, like 150 str, 120 stamina, etc, do the math I showed above and put the final rounded
answer in those columns like I do below.

It should look something like this. I did 100 STR, 52 Intellect, 78 Stamina, 49 Critical Rating, and 77 Spell Power, iirc, I did it so fast, I wasn't paying attention, so it might be 79 stamina or 80 stamina. The point is math was correct, I just don't remember the value I set for Stamina XD. If you notice, every column I don't use, is kept 0, this is because unlike the stat types, for whatever reason, you don't touch the Stat Value columns that you don't use.
The Final Column, you'll notice is mostly set to 80 for all other values, this is because this is where you set the max level for your heirloom. Yup, that means if you want to for whatever reason, you can set an heirloom that's maxed out at 45, or maxed out at 60. We'll set it for 80 as an example. Once you've done that, you can close and save. Now if you directly edited the DBC from your server files, that is fine, but I chose to make a backup, and also make another copy in a diff folder, to edit. I'm going to copy this over to where my server's DBC files are and save it there.
Next step is SQL edits. Start your server's SQL, then open it up with HeidiSQL or your preferred choice of SQL Editing. Go into the Item_Template DBC, and go to the item
you want to make an heirloom. You're looking for TWO Columns, one that is called ScalingStatDistribution and ScalingStatValue, these will be in between Stat_Value10 & dmg_min1 assuming you're using TrinityCore, which you should be.

It should look something like this, now you're going to put in the ScalingStatValue your type of armor progression. Here are the Values below..
So first you'll select what type of progression you want. That means, do you want, Low Stats, Mid Stats, Boosted, Very Low, or Normal Progression. For demonstration purposes, we'll do normal stat progression, that means our value is currently one(1), now what type of armor do we have? Cloth, Leather, Mail or Plate? At the bottom you'll see these values.
Since we are using plates for the purpose of the tutorial, we'll take the plate value which is 8388608, now we'll add 1 to 8388608, which is 8388609 and we'll enter 8388609 into ScalingStatValue. Essentially, you choose your type of stat progression then if its an Armor, you pick one of the progressions below (ignore the ones at the top, just use the ones below with the bigger number value).
If you're doing Weapons, look for your Weapon Damage progression. Again, in our case, we're doing plate armor, so that'll be 8388609, Normal Plate Armor Progression.

It should look something like this. Once you've gone ahead and done that, go ahead and make sure to save. Before you do anything else, I've got something for you to note.
The first thing being, to make sure to set your Item Quality to Artifact Quality, if you're using Trinitycreator to create the item, if you're doing it manually, make the Quality ID 6. HOWEVER, You do NOT need to do this, if you want your item to be a legendary rarity, you still can and for whatever reason you want to, go ahead. Here's the list of Quality IDS
Grey 0 ( Poor )
White 1 ( Common )
Green 2 ( Uncommon )
Blue 3 ( Rare )
Epic 4
Legendary 5
Artifact 6
That covers everything serverside, now we need to make the client patches so our client can see it. This is super simple, take your scalingstatdistribution.dbc and copy it over in the same folder as your MPQ Editor. You'll open up your MPQ Editor and click new MPQ:

After opening that up you should see....

This, minus the Patch name. I already added it here, you can go ahead and copy it or if you want, you can give it, its own name. MAKE SURE TO ADD .MPQ AT THE END

Game compatibility must be set to Wrath of The Lich King, it should by default be set to this but always check seven times
Next you should see your empty MPQ file, you need to add a folder called DBFilesClient, EXACTLY. That means if one letter is incorrectly uppercase or lowercase, it will NOT work. It needs to be > DBFilesClient < for it to work!! SO CHECK SEVEN TIMES TO MAKE SURE IT IS CORRECT.

AFTER you do that, go into your newly created folder, AND DRAG AND DROP YOUR NEWLY EDITED, SCALINGSTATSDISTRIBUTION.DBC FILE! MAKE SURE TO PUT IT IN THAT FOLDER.


It should look like this!
Once you are done, save, and you should have a patch-4.MPQ file in the same folder as your MPQ Editor. Drag this file to where your client is located and drop it in your DATA folder. That is very important that you do that, otherwise it won't show up. Clear any cache possible and you should have your item in-game. If your server is already running, restart it so it can update it with the new DBC file you replaced, otherwise just run it.
You should be pretty much done! Now because I use TSWoW, its causing weird interference and this may be because I haven't built data, and I'm not going to on my TSWoW because right now I have code that could cause lots of bugs, but if you're using Trinity or Azerothcore, you should have no issues.
P.S Credits to "MyLilSuccy" on Ac-Web, as he was the one who originally made this guide. I just updated it with a fresh new perspective.
You'll need a few tools:
An MPQ Editor (Such as Ladik's MPQ Editor)
A DBC Editor (Such as WDBX Editor or Tails)
Common Sense
An SQL Editor (Such as HeidiSQL Or Navicat)
Obviously, your own Server. [1] (This tutorial is made for TrinityCore, you can try with other servers but I'm unaware if it would work the same, I say give er a shot if you want)
As an example I'll make a simple piece of plate armor, I will specifically make this Paladin only, but you don't have to do that. Before doing anything, make backups of ScalingStatDistribution.dbc and ScalingStatValues.dbc, at least the ones in your server's DBC files. These will be the main files we're editing.
Step 1. Deciding what stats you want to put it on
You'll want to know what stats you're going to put on the heirloom. Do you want, Int? Spell Power? Stamina? Strength? Agility? Block Value? Critical Strike? You'll want to keep a tab open of this here Stat ID List. For demonstration, I will be putting, Strength, Intellect, Stamina, Critical Strike and Spell Power. For Armor value, the way they do this is there are set Armor Progressions, meaning each armor type has its own armor progression, so you can't create your own armor progression from scratch unless you code it.
For Demonstration purposes, we'll pick one of them, plate obviously but we'll talk about that more when we actually get to it. So the key to getting the right stats, is knowing what stat values you want when you reach level 80. Meaning by the time you level to 80, you'll want your item for example to have +120 Stamina +100 Strength, etc.
From the Stat ID List, we can see our stats:
Strength = 4
Intellect = 5
Stamina = 7
Critical Strike Rating = 32
Spell Power = 45
Keep track of these as we'll need them later. We'll also need the math to get the values, in the DBC File, Scalingstatdistribution, the way the values work is a bit weird but essentially it goes like...
150/97*10000. To put this in word form, you're taking the value you want, I.E 150, dividing it by 97, then multiplying that result by 10000, your answer should be 15463.9175258, round this up/down, giving us 15464. That's the value you'll use. Now that we have finished the math we need to open the ScalingStatDistribution.dbc in one of our dbc editors. I have chosen WDBX Editor for this.
The first column you'll notice is the ID, this is the tag for your scalingstatdistribution. What that means is once we fill the rest of the row, for your item to refer to these Values, you'll use the ID which I'll also show you how later. Every Column after that up to column 11, will be where you enter your Stat IDS. Since I use WDBX Editor, it actually has made it clear that these columns are "StatType"s

As you can see in this image, I've already entered my statIDs. Look at 372, or all the way to the bottom, I've entered 4, 5, 7, 32, and 45. That's strength, intellect, stamina, crit rating, and spell power. For every column AFTER, I added a -1, for any column you don't use up to Column 11 (Or up to StatType_10) put -1 in place of the 0. Columns 12 - 21 are where the values go, the math we did. So for each stat value you want, like 150 str, 120 stamina, etc, do the math I showed above and put the final rounded
answer in those columns like I do below.

It should look something like this. I did 100 STR, 52 Intellect, 78 Stamina, 49 Critical Rating, and 77 Spell Power, iirc, I did it so fast, I wasn't paying attention, so it might be 79 stamina or 80 stamina. The point is math was correct, I just don't remember the value I set for Stamina XD. If you notice, every column I don't use, is kept 0, this is because unlike the stat types, for whatever reason, you don't touch the Stat Value columns that you don't use.
The Final Column, you'll notice is mostly set to 80 for all other values, this is because this is where you set the max level for your heirloom. Yup, that means if you want to for whatever reason, you can set an heirloom that's maxed out at 45, or maxed out at 60. We'll set it for 80 as an example. Once you've done that, you can close and save. Now if you directly edited the DBC from your server files, that is fine, but I chose to make a backup, and also make another copy in a diff folder, to edit. I'm going to copy this over to where my server's DBC files are and save it there.
Next step is SQL edits. Start your server's SQL, then open it up with HeidiSQL or your preferred choice of SQL Editing. Go into the Item_Template DBC, and go to the item
you want to make an heirloom. You're looking for TWO Columns, one that is called ScalingStatDistribution and ScalingStatValue, these will be in between Stat_Value10 & dmg_min1 assuming you're using TrinityCore, which you should be.

It should look something like this, now you're going to put in the ScalingStatValue your type of armor progression. Here are the Values below..
Code:
SSVc Grp Bit Value Description
---- --- --- ----- ------------------------------
3 1 0 1 Normal stats progression
4 1 1 2 Trinket stats progression (only seen on trinkets)
5 1 2 4 Low stats progression
18 1 3 8 Boosted stats progression
6 1 4 16 Very low stats progression
7 2 5 32 Armor value (cloth shoulders)
8 2 6 64 Armor value (leather shoulders)
9 2 7 128 Armor value (mail shoulders)
10 2 8 256 Armor value (plate shoulders)
11 3 9 512 Weapon damage (1H DPS)
12 3 10 1024 Weapon damage (2H DPS)
13 3 11 2048 Weapon damage (1H DPS caster)
14 3 12 4096 Weapon damage (2H DPS caster)
15 3 13 8192 Weapon damage (RangeWpn DPS)
16 3 14 16384 Weapon damage (Wand DPS ??)
17 4 15 32768 Spell power (extra, not same as stat 45 in ScalingStatDistribution, can even have both) (used for caster weapons)
-- - 16 65536 unused???
-- - 17 131072 unused???
19 1 18 262144 Mid stats progression
20 2 19 524288 Armor value (very low progression) (cloak armor)
21 2 20 1048576 Armor value (cloth armor)
22 2 21 2097152 Armor value (leather armor)
23 2 22 4194304 Armor value (mail armor)
24 2 23 8388608 Armor value (plate armor)
So first you'll select what type of progression you want. That means, do you want, Low Stats, Mid Stats, Boosted, Very Low, or Normal Progression. For demonstration purposes, we'll do normal stat progression, that means our value is currently one(1), now what type of armor do we have? Cloth, Leather, Mail or Plate? At the bottom you'll see these values.
Since we are using plates for the purpose of the tutorial, we'll take the plate value which is 8388608, now we'll add 1 to 8388608, which is 8388609 and we'll enter 8388609 into ScalingStatValue. Essentially, you choose your type of stat progression then if its an Armor, you pick one of the progressions below (ignore the ones at the top, just use the ones below with the bigger number value).
If you're doing Weapons, look for your Weapon Damage progression. Again, in our case, we're doing plate armor, so that'll be 8388609, Normal Plate Armor Progression.

It should look something like this. Once you've gone ahead and done that, go ahead and make sure to save. Before you do anything else, I've got something for you to note.
The first thing being, to make sure to set your Item Quality to Artifact Quality, if you're using Trinitycreator to create the item, if you're doing it manually, make the Quality ID 6. HOWEVER, You do NOT need to do this, if you want your item to be a legendary rarity, you still can and for whatever reason you want to, go ahead. Here's the list of Quality IDS
Grey 0 ( Poor )
White 1 ( Common )
Green 2 ( Uncommon )
Blue 3 ( Rare )
Epic 4
Legendary 5
Artifact 6
That covers everything serverside, now we need to make the client patches so our client can see it. This is super simple, take your scalingstatdistribution.dbc and copy it over in the same folder as your MPQ Editor. You'll open up your MPQ Editor and click new MPQ:

After opening that up you should see....

This, minus the Patch name. I already added it here, you can go ahead and copy it or if you want, you can give it, its own name. MAKE SURE TO ADD .MPQ AT THE END

Game compatibility must be set to Wrath of The Lich King, it should by default be set to this but always check seven times
Next you should see your empty MPQ file, you need to add a folder called DBFilesClient, EXACTLY. That means if one letter is incorrectly uppercase or lowercase, it will NOT work. It needs to be > DBFilesClient < for it to work!! SO CHECK SEVEN TIMES TO MAKE SURE IT IS CORRECT.

AFTER you do that, go into your newly created folder, AND DRAG AND DROP YOUR NEWLY EDITED, SCALINGSTATSDISTRIBUTION.DBC FILE! MAKE SURE TO PUT IT IN THAT FOLDER.


It should look like this!
Once you are done, save, and you should have a patch-4.MPQ file in the same folder as your MPQ Editor. Drag this file to where your client is located and drop it in your DATA folder. That is very important that you do that, otherwise it won't show up. Clear any cache possible and you should have your item in-game. If your server is already running, restart it so it can update it with the new DBC file you replaced, otherwise just run it.
You should be pretty much done! Now because I use TSWoW, its causing weird interference and this may be because I haven't built data, and I'm not going to on my TSWoW because right now I have code that could cause lots of bugs, but if you're using Trinity or Azerothcore, you should have no issues.
P.S Credits to "MyLilSuccy" on Ac-Web, as he was the one who originally made this guide. I just updated it with a fresh new perspective.