[TUTORIAL] - Creating a Completely Custom Heirloom [3.3.5a]

BookNQuill

Member
Rep
0
0
0
Rep
0
Vouches
0
0
0
Vouches
0
Posts
16
Likes
30
Bits
3 YEARS
3 YEARS OF SERVICE
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

rq.PNG
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.


qr.PNG
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.

1.PNG

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.

2.PNG

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:
3.PNG

After opening that up you should see....

5.PNG
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

6.PNG
Game compatibility must be set to Wrath of The Lich King, it should by default be set to this but always check seven times :p
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.

7.PNG
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.

8.PNG

9.PNG
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.
 

OnlyFans

Divine
Divine
OnlyFans Rep
0
0
0
Rep
0
OnlyFans Vouches
0
0
0
Vouches
0
Posts
90
Likes
59
Bits
2 YEARS
2 YEARS OF SERVICE
LEVEL 7 131 XP
Fantastic share and update! - a great asset to the community's educational resources.
 
Liked By 1 member :

specktro

New member
Rep
0
0
0
Rep
0
Vouches
0
0
0
Vouches
0
Posts
1
Likes
1
Bits
2 YEARS
2 YEARS OF SERVICE
LEVEL 1 25 XP
My new heirloom belt wasn't showing the stats, and I learned how to put edited files into MPQ using your post... thanks a lot!
 
Liked By 1 member :

BookNQuill

Member
Rep
0
0
0
Rep
0
Vouches
0
0
0
Vouches
0
Posts
16
Likes
30
Bits
3 YEARS
3 YEARS OF SERVICE
LEVEL 4 140 XP
So if it wasn't showing your new belt is either you forgot to put the ID into the ScalingStatValue section of the item in the SQL OR it's a client-side thing which means you forgot to either patch it so that the item doesn't show up as a "?"

Show me a screenshot of what you're experiencing so I can get more detail and know for sure.
 
Liked By 1 member :

Paultimate

New member
Rep
0
0
0
Rep
0
Vouches
0
0
0
Vouches
0
Posts
4
Likes
0
Bits
1 YEAR
1 YEAR OF SERVICE
LEVEL 1 10 XP
This deserves more likes.

Im not sure why you dont just use WDBX to export as SQL though. I did it both ways and the same files are in the two MPQ files I made.

However, the dang heirloom will not populate changes. I put in new values at 372 that are identical to 371 (because i know those values work)

1. I updated the sql item 120011 so it has 372 in the correct place (when i change it to 371 it shows the stats properly)
2. I made sure this 372 change was saved and applied in the DB with a heidiSQL check
3. Restarted server
4. Deleted cache in wow dir
5. opened wow again
6. Made sure the MPQ i created has the updated dbc file in it with the 372 change and inside the DBFilesClient folder.
7. Made sure the MPQ file was put inside the wiw data folder of the wow i am launching
8. named it PATCH-ZZ.MPQ

Item is giving me a ? icon and the stats are gone vs 371.

Im at a loss.
 
Last edited:

AzukaChan Japan

Staff
Staff
AzukaChan Rep
2
0
0
Rep
8
AzukaChan Vouches
1
0
0
Vouches
1
Posts
98
Likes
601
Bits
2 YEARS
2 YEARS OF SERVICE
LEVEL 135 30 XP
Appreciate you contributing to the community.
Well-made guide for inexperienced users.
 

BookNQuill

Member
Rep
0
0
0
Rep
0
Vouches
0
0
0
Vouches
0
Posts
16
Likes
30
Bits
3 YEARS
3 YEARS OF SERVICE
LEVEL 4 140 XP
This deserves more likes.

Im not sure why you dont just use WDBX to export as SQL though. I did it both ways and the same files are in the two MPQ files I made.

However, the dang heirloom will not populate changes. I put in new values at 372 that are identical to 371 (because i know those values work)

1. I updated the sql item 120011 so it has 372 in the correct place (when i change it to 371 it shows the stats properly)
2. I made sure this 372 change was saved and applied in the DB with a heidiSQL check
3. Restarted server
4. Deleted cache in wow dir
5. opened wow again
6. Made sure the MPQ i created has the updated dbc file in it with the 372 change and inside the DBFilesClient folder.
7. Made sure the MPQ file was put inside the wiw data folder of the wow i am launching
8. named it PATCH-ZZ.MPQ

Item is giving me a ? icon and the stats are gone vs 371.

Im at a loss.
So first off, Item giving you a ? Icon is a completely different dbc file edit which I don't remember at all how to do, I can't help you on that part, sorry. Second, for the "stats are gone vs 371", I'm assuming you mean 372's stats aren't visible but 371 are.

The first thing you should always do is assure 372 is in ScalingStatDistribution column on the item in your SQL database. The second thing is restart the server completely, shut it all down, then I'd recommend manually starting them back up because its better that way to assure a full restart, followed by like you said you did a wow cache clear. Once we've absolutely made sure that's been done, double check you've updated the DBCs in your server and in your wow client with an mpq patch.

Now if you still see the item with no stats, double check to see if IT is giving stats and its just not showing on weapon. To do this, equip the item while in-game and see if your Stats change, try it at different level intervals to make sure the item actually has stats too.

ALSO VERY IMPORTANT: Make sure you've added ScalingStatValue (how the item progresses with its stats) on each item. If your weapon or armor piece has 372 ScalingStatDistribution but no ScalingStatValue its not going to work. To do this go back to your SQL Database Editor, open up to the item you want to fix, add 838809 for Normal Armor Progression, or check the previously linked Custom Heirloom tutorial where I have all list of values for you.

Once you've assured this is all here and NONE of its the case, then I honestly have no idea, because it should work. I often find myself unable to fix it and turns out to be something real silly like above, DBCs actually being read and up-to-date can get confusing during the process and somewhere can mess one up.

As for your question
m not sure why you dont just use WDBX to export as SQL though. I did it both ways and the same files are in the two MPQ files I made.
Because I'm not updating SQLs, I'm updating DBC, frankly that doesn't make much sense. I need the DBC files to update the DBCs in the server then apply a Patch, you can't use an SQL to do that.
 
Liked By 1 member :

Paultimate

New member
Rep
0
0
0
Rep
0
Vouches
0
0
0
Vouches
0
Posts
4
Likes
0
Bits
1 YEAR
1 YEAR OF SERVICE
LEVEL 1 10 XP
Thanks for the reply!

----
(Blah blah i wrote too much skip to "Testing")
I absolutely shut down the server and auth server fully each time i make item changes, even just SQL ones. I verify it every-time and have bat files that help me with this process (and i further verify in process manager that they arnt just hidden) as ive done it 100s of times in developing items. I just have not tried doing sets or heirloom full customization yet. For example i can change the heirlooms to already existing scaling (low, med, boosted as im sure you're well aware already exist in the dbc), and those changes take effect perfectly. Like changing from 372 to 371 requires the same workflow of shutting the server down and deleting cache to get to update. So im 99.9% sure that that can be take out of the possible problem equation at least.

Just yesterday I started from absolute scratch with a brand new AzerothCore, cloned it, built it and installed a brand new fresh wotlk install untouched by filthy human hands. made brand new dbcs etc from this brand new mysql and put it all in a VM. This take other possible issues out of possible issue territory like maybe there was a conflict with another mpq or who knows what.

My next tests were doing the editing process again. I went in a made a copy of the Arcanite Reaper (42943) and set it to entry 90000. Inside my dbc i made a new entry, 372 and just made it a copy of 371 . i know these stats are for armor but it will still take effect. On the default item (42943) the 371 reflected the new built-in 371 statdistrabution. On the 90000 set it to 372. Blank. I set 90000 to 371. works. I followed both your method and my own method of making the MPQ files in multiple tests. I verified the 372 edit was indeed saved and changed and opened it up from the MPQ itself to verity. Its definitely there. I have ideas for more tests.

For the ScalingStatValue Ive simply left it the default value as the heirloom its based off of. For the Arcanite Reaper this is 1032 (1024 (Weapon damage (2H DPS)) + 8 Boosted stat progression = 1032. I can test with 838809 too but it should with both.

Am i naming the MPQ wrong? Ive tried several names, capital and lowercase. When i was doing custom sets, it could see a new custom sets ID when i tried to spawn items in game, (but would not spawn the items themselves but thats a separate problem) so i have to assume the game can actually see and read the MPQs im making too.

----

Im not sure what vital step im missing for the 372 to actually work. Ill keep testing.

Testing:
Distribution 372 for both: 42943 & 90000 = blank
Distribution 371 for both: 42943 & 90000 = Working (471 scaling is a default from Blizzard of course)

Next im going to try and alter 371 itself and see what happends there instead of making a new line here. If it changes, then something extra needs to be done when adding new distrabution lines? If it doesnt change, something weird is going on with distrabutions registering changes made in the dbc. If it turns blank, ILL GO CRAZY but whatever happends it should tell me something?

Ive set the distrabution of 371 (the line we know works) to match 1 (1 is actually the default distrabution of the Arcanite Reaper, so this is also clearly known to work). 372 isnt used but it still has the same settings as the old 371.

371 -> 1 Change

DB

Result: 42943
Result: 90000

What this tells me:
1. I am restarting the server and Wow correctly
2. I am updating the MPQ and Wow is reading these changes correctly
3. The SQL changes are also being saved and read correctly
4. Something is absolutly fucked when i try and add a NEW line to ScaleingStatDistrabution.dbc .
5. Why? What other file needs to be updated to "see" that a new line is added?


Because I'm not updating SQLs, I'm updating DBC, frankly that doesn't make much sense. I need the DBC files to update the DBCs in the server then apply a Patch, you can't use an SQL to do that.
Im not 100% sure what you mean here. I have all my dbcs backed up and i open the dbc im editing directly from my AzerothCore DBC data folder to work out of into WDBX to edit. When im done editing, I save as normal so it updates for the server, then I use WDBX feature to convert to MPQ. I made sure this results in the same file structure. Let me know if this is wrong.
 
Last edited:

BookNQuill

Member
Rep
0
0
0
Rep
0
Vouches
0
0
0
Vouches
0
Posts
16
Likes
30
Bits
3 YEARS
3 YEARS OF SERVICE
LEVEL 4 140 XP
Thanks for the reply!

----
(Blah blah i wrote too much skip to "Testing")
I absolutely shut down the server and auth server fully each time i make item changes, even just SQL ones. I verify it every-time and have bat files that help me with this process (and i further verify in process manager that they arnt just hidden) as ive done it 100s of times in developing items. I just have not tried doing sets or heirloom full customization yet. For example i can change the heirlooms to already existing scaling (low, med, boosted as im sure you're well aware already exist in the dbc), and those changes take effect perfectly. Like changing from 372 to 371 requires the same workflow of shutting the server down and deleting cache to get to update. So im 99.9% sure that that can be take out of the possible problem equation at least.

Just yesterday I started from absolute scratch with a brand new AzerothCore, cloned it, built it and installed a brand new fresh wotlk install untouched by filthy human hands. made brand new dbcs etc from this brand new mysql and put it all in a VM. This take other possible issues out of possible issue territory like maybe there was a conflict with another mpq or who knows what.

My next tests were doing the editing process again. I went in a made a copy of the Arcanite Reaper (42943) and set it to entry 90000. Inside my dbc i made a new entry, 372 and just made it a copy of 371 . i know these stats are for armor but it will still take effect. On the default item (42943) the 371 reflected the new built-in 371 statdistrabution. On the 90000 set it to 372. Blank. I set 90000 to 371. works. I followed both your method and my own method of making the MPQ files in multiple tests. I verified the 372 edit was indeed saved and changed and opened it up from the MPQ itself to verity. Its definitely there. I have ideas for more tests.

For the ScalingStatValue Ive simply left it the default value as the heirloom its based off of. For the Arcanite Reaper this is 1032 (1024 (Weapon damage (2H DPS)) + 8 Boosted stat progression = 1032. I can test with 838809 too but it should with both.

Am i naming the MPQ wrong? Ive tried several names, capital and lowercase. When i was doing custom sets, it could see a new custom sets ID when i tried to spawn items in game, (but would not spawn the items themselves but thats a separate problem) so i have to assume the game can actually see and read the MPQs im making too.

----

Im not sure what vital step im missing for the 372 to actually work. Ill keep testing.

Testing:
Distribution 372 for both: 42943 & 90000 = blank
Distribution 371 for both: 42943 & 90000 = Working (471 scaling is a default from Blizzard of course)

Next im going to try and alter 371 itself and see what happends there instead of making a new line here. If it changes, then something extra needs to be done when adding new distrabution lines? If it doesnt change, something weird is going on with distrabutions registering changes made in the dbc. If it turns blank, ILL GO CRAZY but whatever happends it should tell me something?

Ive set the distrabution of 371 (the line we know works) to match 1 (1 is actually the default distrabution of the Arcanite Reaper, so this is also clearly known to work). 372 isnt used but it still has the same settings as the old 371.

371 -> 1 Change

DB

Result: 42943
Result: 90000

What this tells me:
1. I am restarting the server and Wow correctly
2. I am updating the MPQ and Wow is reading these changes correctly
3. The SQL changes are also being saved and read correctly
4. Something is absolutly fucked when i try and add a NEW line to ScaleingStatDistrabution.dbc .
5. Why? What other file needs to be updated to "see" that a new line is added?



Im not 100% sure what you mean here. I have all my dbcs backed up and i open the dbc im editing directly from my AzerothCore DBC data folder to work out of into WDBX to edit. When im done editing, I save as normal so it updates for the server, then I use WDBX feature to convert to MPQ. I made sure this results in the same file structure. Let me know if this is wrong.
Wait you're using AzerothCore and the "?" is still appearing? That's not right. AC is supposed to have a built-in auto-update function for new items, so that we don't have to patch new items in through the Item.dbc.

I have to be honest, I'm stumped, you're doing everything correctly, it should in theory work, I've done it on Azerothcore before, and Trinitycore as well, it works for both cores. I'm not a real developer, I just followed an old tutorial and figured out most of it myself. Also I didn't know WDBX could convert to MPQ directly, that's cool. You might wanna try asking in the Azerothcore Discord, Github, or maybe even on the forums around here? Maybe asking in the WoW Modding Community Discord.
 

Paultimate

New member
Rep
0
0
0
Rep
0
Vouches
0
0
0
Vouches
0
Posts
4
Likes
0
Bits
1 YEAR
1 YEAR OF SERVICE
LEVEL 1 10 XP
Wait you're using AzerothCore and the "?" is still appearing? That's not right. AC is supposed to have a built-in auto-update function for new items, so that we don't have to patch new items in through the Item.dbc.

I have to be honest, I'm stumped, you're doing everything correctly, it should in theory work, I've done it on Azerothcore before, and Trinitycore as well, it works for both cores. I'm not a real developer, I just followed an old tutorial and figured out most of it myself. Also I didn't know WDBX could convert to MPQ directly, that's cool. You might wanna try asking in the Azerothcore Discord, Github, or maybe even on the forums around here? Maybe asking in the WoW Modding Community Discord.
Yeah I compiled it fresh yesterday too. That sounds like a sweet feature shame it doesnt work for me. Weird.

To be clear, are you adding new lines in your statdistradution or just editing the base ones? I guess i could just edit the base ones but there isnt enough lines to really gover all the gear I want to make.

Ill ask around some more and maybe solve this eventually. Thanks for teh replies!
 

3,575

1,285

9,621

433

Top