Skip to content

Latest commit

 

History

History
452 lines (357 loc) · 96.6 KB

README.md

File metadata and controls

452 lines (357 loc) · 96.6 KB

ItemLevelCalculator 🔗

Screenshot Item in the screenshot - Vest of Jotunheim

This web application is currently in development. The Item Level Calculator is designed to assist in the creation, modification, and validation of item-level balanced armor and weapons for World of Warcraft emulators, with support for Vanilla, The Burning Crusade, and Wrath of the Lich King. It is most effective for validating or creating items within the intended item level range of blizzlike items. Items with levels extending beyond the existing in-game ranges may yield undesirable or unpredictable results.

In researching this concept, I discovered numerous values and coefficients scattered throughout the community, each employing different mathematical approaches. While many in the community describe these calculations as "good enough," I found them often constrained by linear functions, lacking the dynamic scaling needed to accommodate variations introduced by Blizzard throughout the expansions. Many stats vary based on Inventory Type, Quality, and Item Level.

Improving the accuracy of these calculations hinges on enhancing the quality of the equations. As a first step to the conceptualization of this calculator, I immediately found the need for a method to more easily plot and graph data. So I developed a graphing tool called Polynomial Visualizer. I used it to draft many of the formulas the calculator uses, the formulas and the links to their data are scattered around down below.

Stat and item level calculation accuracy significantly improved by introducing polynomial regression and categorizing formulas and coefficients by item quality and slot according to their appropriate item level ranges. The enhanced equations integrated into this calculator provide significantly more reliable outputs, closely reflecting in-game values. Though it is far from perfect, testing reveals that the calculator typically deviates by one or two item levels from actual values.

However, there are significant outliers Blizzard created either accidentally in the form of a typo, mixing up a stat value, or using the wrong calculations for a stat altogether; or intentionally as cleverly disguised treats, hidden gem rewards, raid or dungeon boss loot, or just flattening the curve to be more easily digestable to players. Blizzard did create and use a formula to calculate item levels and aid their process of creating items in a very general way, this is most notably evidenced in their items that include randomized stats. These items were very helpful in validating the stat coefficients used in the functions, and sanity checking certain outliers. Many times I would be researching the more significant outliers on wowhead and the comments would often validate the finding. It is pretty much impossible to account for these outliers; instead, the calculator indicates the more likely item level of these anomalies.

For instance, consider item level 277 gear dropped in Icecrown Citadel (ICC). These items are among the best in the game and vary with heroic and non-heroic items, they display a huge variance in stat combinations. Balancing stat coefficients across all items within this range is not possible; very few items labeled as level 277 truly fit the designation. This is ubiquitous among all of the common blanket item level tiers (213, 226, 245, etc.).

A prime example of these outliers is the Shining Buckle Gauntlets and the Discoverer's Mitts. Both are item level 154 leather items with identical stats despite differing qualities, an impossibility under standard calculations.

Fundamentals of Item Level Calculation

Terms and Definitions

  • StatMod: The weight coefficient or "cost" of a given Stat. Stamina is often less expensive than strength.
  • Exponent: $log(2)/log(1.5) ≈ 1.7095$ is applied to inflate the expense of a stat into a StatValue. This makes a lone stat of higher quantity more expensive than multiple lower quantity stats while maintaining a relatively similar overall expense. (e.g. at item level 172, 100 strength ≈ 53 strength + 53 agility + 53 crit)
  • StatValue: The inflated expense of the Stat on an item.
  • StatBudget: The sum of all of the StatValues on an item.
  • SlotMod: The weight coefficient of an item based on its slot. A chest will have a lower item level than gloves with the same stats.
  • ItemBudget: The StatBudget of an item multiplied by the SlotMod coefficient of the item's slot type.
  • QualityMod: The weight coefficient of an item based on its quality. An epic shield will have a lower item level than an uncommon shield with the same stats.
  • ItemLevel: The effective level of an item.

Calculating StatBudget

$$ StatBudget = \left( (StatValue_{1} \times StatMod_{1})^{\frac{\log(2)}{\log(1.5)}} + (StatValue_{2} \times StatMod_{2})^{\frac{\log(2)}{\log(1.5)}} + \ldots \right) $$

Calculating ItemBudget

$$ ItemBudget = StatBudget \times SlotMod $$

Calculating QualityMod

The QualityMod is calculated by multiplying a given item level by a predetermined coefficient, the product of which is added to a base integer.

$$ QualityMod(i) = qualityMult \times i_{ItemLevel} + qualityBase $$

Calculating ItemLevel

The QualityMod is multiplied by the SlotMod and the product is raised to the exponent power. This is performed in a loop with $i$ increasing by the value of 1 each iteration until the product meets or exceeds the value of the ItemBudget. The item level is the number of iterations required to meet the criteria.

$$ (\text{QualityMod}(i) \times \text{SlotMod})^{\frac{\log(2)}{\log(1.5)}} \geq \text{ItemBudget} $$

Stat & Slot Coefficients

Item Quality Modifiers

These coefficients control the ceiling for stats on an item based on its quality.

quality ilvl mult base
4 200+ 1.320 -120
4 100+ 0.700 -2
4 1+ 0.689 +1
3 136+ 0.880 -39.25
3 80+ 0.674 -8.0
3 1+ 0.641 -4.0
2 130+ 0.801 -38.3
2 80+ 0.505 -4.5
2 1+ 0.495 -2.85

Item Slot Modifiers (Armor)

This coefficient (SlotMod) controls the ceiling for stats on an item based on the slot.

The values in this table are found to be static and do not change within any item level range. You'll notice that tabards, shirts, and relics are included in the table. Assuming these item slots were ever even considered to have stats in any capacity, I'd assume they'd have a very low stat budget. All of the tabards that have any spell abilities at all were toys for the GMs to have fun with while testing the game, they have no baseline from which to assume any amount of power, and are there just for grins.

InventoryType Item Name defaults
5 Chest 16/16
20 Chest (Robe) 16/16
23 Held Off-hand 3/16
28 Relic 1/32
4 Shirt 1/32
19 Tabard 1/32

The values in this table are found to be dynamic and potentially very between item level ranges. As better methods for determining the accuracy of these coefficients is developed, these figures may change or be found to be static, and will be moved into the table above.

InventoryType Item Name [2] 1+ [2] 80+ [2] 130+ [3] 1+ [3] 80+ [3] 136+ [4] 1+ [4] 90+ [4] 200+
1 Head 16/16 ... ... ... ... ... ... 11/16 16/16
2 Neck 4/16 ... ... ... ... ... ... 3/16 4/16
3 Shoulder 8/16 ... ... ... ... ... ... 6/16 8/16
6 Waist 8/16 ... ... ... ... ... ... 6/16 8/16
7 Legs 16/16 ... ... ... ... ... ... 12/16 16/16
8 Feet 8/16 ... ... ... ... ... ... 6/16 8/16
9 Wrists 4/16 ... ... ... ... ... ... 3/16 4/16
10 Hands 8/16 ... ... ... ... ... ... 6/16 8/16
11 Finger 4/16 ... ... ... ... ... ... 3/16 4/16
12 Trinket 8/16 ... ... ... 11/16 11/16 8/16 6/16 6/16
14 Shield 4/16 ... ... ... ... ... ... 3/16 3/16
16 Back 3/16 4/16 4/16 4/16 4/16 4/16 4/16 3/16 3/16

Item Slot Modifiers (Weapons)

This coefficient (SlotMod) controls the ceiling for stats on an item based on the slot.

Item Name InventoryType uncommon
One Hand Weapon 13 7/16
Bow 15 16/16
Two Hand Weapon 17 16/16
Main-Hand 21 7/16
Off-Hand 22 7/16
Thrown 25 5/16
Ranged 26 5/16

Item Stat Modifiers

This coefficient (StatMod) controls the ceiling for stats on an item based on the stat type.

The values in this table are found to be static and do not change within any item level range.

stat_type Stat Name InventoryType defaults
0 Mana all ?
1 Health all ?
3 Agility all 16/16
4 Strength all 16/16
5 Intellect all 16/16
6 Spirit all 16/16
12 Defense Rating all 16/16
13 Dodge Rating all 16/16
14 Parry Rating all 16/16
15 Block Rating all 16/16
21 Spell Crit Rating all 16/16
21 Hit Rating all 16/16
32 Crit Rating all 16/16
35 Resiliance Rating all 16/16
36 Haste Rating all 16/16
37 Expertise all 16/16
38 Attack Power all 8/16
44 Armor Penetration all 16/16
47 Spell Penetration all 16/16
X_res Resistances all 16/16

The values in this table are found to be dynamic and frequently very between item level ranges. As better methods for determining the accuracy of these coefficients is developed, these figures may change or be found to be static, and will be moved into the table above.

stat_type Stat Name InventoryType [2] 1+ [2] 80+ [2] 130+ [3] 1+ [3] 80+ [3] 136+ [4] 1+ [4] 90+ [4] 200+
X_socket Sockets 2, 11, 14, 23 5/1 5/1 5/1 10/1 10/1 10/1 10/1 10/1 24/1
X_socket Sockets else 10/1 10/1 10/1 20/1 20/1 20/1 20/1 10/1 24/1
armor Bonus Armor all 3/32 ... ... ... 2/32 2/32 2/32 2/32 2/32
7 Stamina all 16/16 2/3 2/3 16/16 2/3 2/3 16/16 2/3 2/3
43 Mana Regen Per 5 2, 11, 12, 23 48/32 ... ... ... 32/16 32/16 32/16 32/16 24/16
43 Mana Regen Per 5 else 92/32 ... ... ... 32/16 32/16 32/16 32/16 32/16
45 Spell Power all 45/64 55/64 55/64 55/64 55/64 55/64 55/64 45/64 45/64
46 Health Regen Per 5 2, 11, 12, 23 32/16 ... ... ... ... ... 16/16 8/16 4/16
46 Health Regen Per 5 else 64/16 ... ... ... ... ... 32/16 16/16 8/16
48 Block Value 2, 11, 12, 14 16/16 21/64 21/64 21/64 21/64 21/64 21/64 21/64 4/64
48 Block Value else 16/16 21/64 21/64 21/64 21/64 21/64 21/64 21/64 21/64

Base Armor Calculation

Base Armor is calculated by item level and Bonus Armor is applied to an item as an additional stat. I hypothesize that the base armor of an item actually consumes an amount of the item's overall stat budget in whatever formula blizzard invented. I believe this is true due to how bonus armor affects an items level. This can be a thought experiment for another time (or person).

Base Armor Modifiers

These values are derived by dividing the armor value each type of armor of equivalent item level by that of the chest piece. The chest piece is assumed to have 100% of the armor assigned by its item level. The cloak armor value is derived by dividing against a cloth chestpiece of equivalent item level.

Item Name InventoryType armorMod
Chest 5 16/16
Chest (Robe) 20 16/16
Legs 7 14/16
Head 1 13/16
Shoulder 3 12/16
Feet 8 11/16
Hands 10 10/16
Waist 6 9/16
Shield 14 9/16
Back 16 8/16
Wrists 9 7/16

Cloth

Quality Formula Link
2 y = 8.5 + 1.135x + 0.00018x^2 graph
3 y = 0 + 2.2x - 0.02345x^2 + 0.0002057x^3 - 5.34e-7x^4 graph
4 y = 2.5 + 1.33x + 0.00944x^2 - 0.0000684x^3 + 1.235e-7x^4 graph

Leather

Quality Formula Link
2 y = 39 + 1.8x + 0.00148x^2 graph
3 y = 0 + 5.22x - 0.06638x^2 + 0.0005313x^3 - 0.000001305x^4 graph
4 y = 0 + 3.05x + 0.01044x^2 - 0.00009593x^3 + 1.8476e-7x^4 graph

Mail

Quality Formula Link
2 y = 74 + 3.9x + 0.004366x^2 graph
3 y = 31 + 8.05x - 0.08529x^2 + 0.0007948x^3 - 0.000002107x^4 graph
4 y = 7.5 + 5.76x + 0.036x^2 - 0.0002668x^3 + 4.828e-7x^4 graph

Plate

Quality Formula Link
2 y = 0 + 9.74x - 0.003686x^2 graph
3 y = 0 + 16.2x - 0.16567x^2 + 0.001442x^3 - 0.00000373x^4 graph
4 y = 0 + 9.5x + 0.07993x^2 - 0.0005654x^3 + 0.000001018x^4 graph

Shield

Quality Formula Link
2 y = 82 + 29.9x - 0.01284x^2 + 0.00007097x^3 graph
3 y = -44 + 60.15x - 4.546x^2 + 0.192134x^3 - 0.00357196x^4 + 0.000034529x^5 - 1.8099e-7x^6 + 4.8879e-10x^7 - 5.3407e-13x^8 graph
4 y = 0 + 52x - 0.2633x^2 + 0.003241x^3 - 0.0000173x^4 + 2.948e-8x^5 graph
5 y = 331 + 52x - 0.2633x^2 + 0.003241x^3 - 0.0000173x^4 + 2.948e-8x^5 graph

The legendary curve is a copy of the Epic curve with a greater y intercept, set to match the legendary Phaseshift Bulwark shield from the Kael'thas fight in Tempest Keep.

Shield Block Value Calculation

Each segment of calculation between vanilla, tbc, and wotlk is drastically different. Getting blizzlike results required the use of multiple expressions split by item level ranges.

Quality Item Level Range Formula Link
2 1 to 78 y = 0 + 0.505x - 0.01644x^2 + 0.0004899x^3 - 0.000003353x^4 graph
2 79 to 137 y = 0 + 0.3581x + 0.003094x^2 - 0.000001515x^3 graph
2 138 to 200 y = 1.38 - 0.3985x^1 + 0.01505x^2 - 0.0000403x^3 graph
3 1 to 89 y = 1.39 + 0.1027x + 0.01232x^2 - 0.00006735x^3 graph
3 90 to 153 y = -172 + 6.062x - 0.05626x^2 + 0.0001997x^3 graph
3 154 to 200 y = -700 + 10.22x - 0.03629x^2 + 0.0000389x^3 graph
4 1 to 199 y = 0 + 0.7851x - 0.001735x^2 + 0.00006482x^3 - 2.466e-7x^4 graph
4 200 to 300 y = -327 + 6.8942x - 0.031x^2 + 0.00004965x^3 graph

Weapon DPS

Weapon DPS is inherent to the item level of the weapon and varies based on item type, quality, and other factors.

Formula

The calculator determines the dps value corelated to the item level for the weapon type and an attack speed derived from the mode average for that weapon type. Based on the attack speed, it will determine the minimum and maximum attack values for that weapon. Each weapon type has a coefficient value of the difference between min and max damage.

$$ \text{DPS} = \frac{\text{Item Level} \times \text{Weapon Coefficient}}{\text{Mode Average Attack Speed}} $$

Where:

  • Item Level: The level of the item being evaluated.
  • Weapon Coefficient: A constant value specific to the weapon type that determines the relationship between minimum and maximum damage.
  • Mode Average Attack Speed: The most frequently occurring attack speed value for the weapon type.

Minimum and Maximum Attack Value Calculation

Based on the calculated DPS and the Mode Average Attack Speed, the minimum and maximum attack values (Min Damage, Max Damage) for the weapon can be derived:

epic weapons quality InventoryType item level range subclass purpose formula link
one-hand 4 13 1 to 99 any general y = -0.46373319610341757 + 1.948435650742608x - 0.05134655549435444x^2 + 0.0006882333623959314x^3 - 0.000002864536021471839x^4 graph
one-hand 4 13 100 to 199 any general y = -0.2769968450289057 + 1.5484937105463996x - 0.011645982924600652x^2 + 0.00004802296965314522x^3 - 5.273652941191476e-8x^4 graph
one-hand 4 13 200 to 300 any general y = -0.08289582596875844 + 1.1576083521398557x - 0.005540388894214148x^2 + 0.000016701140069482415x^3 graph
bows 4 15 any 2 general y = -1.8160185143165526 + 0.8176011515936384x + 0.00004631966853788777x^2 - 0.00002190693147532568x^3 + 9.05587408850838e-8x^4 graph
two-hand: non-staff 4 17 1 to 100 !10 general y = -0.7405045351583416 + 2.5291730790997162x - 0.06696995004352309x^2 + 0.0009043795705405915x^3 - 0.000003796542201089664x^4 graph
two-hand: non-staff 4 17 91 to 300 !10 general y = 0.904817539290022 + 1.5822436006525589x - 0.007940579189201744x^2 + 0.000023354465861457816x^3 graph
two-hand: caster staff 4 17 any 10 caster y = - 2.7137455672 + 1.2034848552x - 0.0078149234x^2 + 0.0000237964x^3 graph
two-hand: druid staff 4 17 any 10 druid y = - 39.8477534594 + 2.2205407279x - 0.0111235858x^2 + 0.0000284616x^3 graph
main-hand: caster 4 21 1 to 199 4, 7, 15 caster y = 0.33220409164479436 + 0.9289727447958701x - 0.0029446443452658348x^2 - 0.00004346568763260079x^3 + 2.2512744703653982e-7x^4 graph
main-hand: caster 4 21 199 to 300 4, 7, 15 caster y = -1428.9508500081054 + 19.69433925384912x - 0.08717187138547562x^2 + 0.0001325134232926368x^3 graph
main-hand: melee 4 21 any any general y = -0.5178790028826743 + 0.4607974744638549x + 0.0061377306628395585x^2 - 0.00006505628736448377x^3 + 2.70678156265153e-7x^4 - 3.427754270710267e-10x^5 graph
off-hand 4 22 any any general y = -0.8154206101027381 + 0.8306900043436485x - 0.00029042355648253686x^2 - 0.000009668965907691205x^3 + 4.243652454960742e-8x^4 graph
thrown 4 25 any any general y = -0.12483151990909214 + 1.605551235747681x - 0.008135377299559524x^2 + 0.000023833062012799013x^3 graph
ranged: guns & crossbows 4 26 any 3, 18 general y = -2.9838107517317654 + 1.044765562039762x - 0.003913212784379925x^2 + 6.090860438060731e-7x^3 + 5.016590029076527e-8x^4 graph
ranged: wands 4 26 1 to 94 19 general y = -0.19588388531408696 + 1.413551669030605x - 0.014741678597083266x^2 + 0.00017194361662129607x^3 graph
ranged: wands 4 26 95 to 300 19 general y = 38.01542852693626 + 1.5934000590768418x - 0.007732119057129331x^2 + 0.000027000350802930127x^3 graph
rare weapons quality InventoryType item level range subclass purpose formula link
one-hand 3 13 1 to 115 any general y = -0.20849222965398617 + 0.5638012041071734x + 0.006185098993217638x^2 - 0.00010529221983632224x^3 + 4.856933421922349e-7x^4 graph
one-hand 3 13 116 to 300 any general y = -1129.4203195277557 + 28.231290187427803x - 0.24779778144598605x^2 + 0.0009711032569160498x^3 - 0.0000014022912601703806x^4 graph
bows 3 15 any 2 general y = -0.743084783011632 + 0.7736504766853647x - 0.002608641911723087x^2 + 0.000008555961584640232x^3 graph
two-hand: non-staff 3 17 any !10 general y = -1.4407940637747765 + 0.9868570871805012x - 0.0023989071048527186x^2 + 0.00000872913868341514x^3 graph
two-hand: druid staff 3 17 any 10 general y = -1.5589456685719236 + 0.9962799588626463x - 0.002586859275705108x^2 + 0.000009472522985824832x^3 graph
main-hand: caster 3 21 any 4, 7, 15 general y = 0.9195580731155433 + 0.7492658962645824x - 0.005319339993856751x^2 + 0.000017593004422642952x^3 graph
main-hand: non-caster 3 21 any any general y = 0.7081542428231806 + 0.6667863115619928x - 0.0007860876748404416x^2 + 0.000003503709149771536x^3 graph
off-hand 3 22 any any general y = 0.31862967197133674 + 0.6822091250858717x - 0.0007913172544140505x^2 + 0.000003122564997039902x^3 graph
thrown 3 25 any any general y = 0.625697055774282 + 0.8215995459019617x - 0.0005425910100895496x^2 + 0.0000032710921570688796x^3 graph
ranged: guns & crossbows 3 26 any 3, 18 general y = -0.2913340491058385 + 0.7574162727175957x - 0.0024457905894126005x^2 + 0.000008067767939268019x^3 graph
ranged: wands 3 26 any 19 general y = 1.8294537711042669 + 0.7318471260336387x + 0.004969814407876487x^2 - 0.000017145838654172353x^3 + 1.7205349213855612e-8x^4 graph
uncommon weapons quality InventoryType item level range subclass purpose formula link
one-hand 2 13 any any general y = 0.4042050606136029 + 0.49734508151683776x + 0.0007876333296000732x^2 - 0.0000013811950352316454x^3 graph
bow 2 15 any 2 general y = 0.22444917005698017 + 0.5822163577210446x - 0.0006990769934425673x^2 + 0.0000024109481894875313x^3 graph
two-handed: melee 2 17 any any general y = -1.2469017714620838 + 0.7595359183093786x - 0.00052x^2 + 0.0000031790771502211193x^3 graph
two-handed: caster staff 2 17 any 10 caster y = 0.5878275909223474 + 0.6486638702862207x - 0.0008183156661210863x^2 graph
main-hand: melee 2 21 any any general y = 0.1888986564358558 + 0.514467630955437x + 0.0001449871791498711x^2 + 0.0000022300382306673762x^3 graph
main-hand: caster 2 21 any 4, 7, 15 caster y = 0.4835370552909741 + 0.8668090226204177x - 0.006599272125728605x^2 + 0.000020415414066691894x^3 graph
off-hand 2 22 any any general y = 0.9718419506869891 + 0.41682208197155196x + 0.001587412068902008x^2 - 0.0000030964817997803457x^3 graph
thrown 2 25 any any general y = 2.766343576702119 + 0.46057309703714083x + 0.0031338924726831943x^2 - 0.000008297133052168907x^3 graph
ranged: guns & crossbows 2 26 any 3, 18 general y = 1.4129016032445012 + 0.4961550555995297x + 0.00032039463941715415x^2 - 8.224505599804983e-7x^3 graph
ranged: wands 2 26 any 19 general y = 3.4857134522863866 + 0.48418168318576166x + 0.005842172301613738x^2 - 0.000014078423351119631x^3 graph

Min/Max Damage Range Coefficients

InventoryType subclass quality coefficient item level range detail
13, 15, 22, 25, 26 any 2, 3, 4 0.54 all default
17 1, 5, 6, 8, 10 2, 3, 4 0.65 all default two-hand
17 10 2, 3, 4 0.54 101 to 300 default caster staff
21 any 2, 3, 4 0.54 1 to 100 default main-hand
21 any 2, 3, 4 0.3125 101 to 300 default main-hand
13 15 3 0.65 101 to 300 rare one-hand daggers
13 15 4 0.54 1 to 100 epic one-hand daggers
13 15 4 0.65 101 to 300 epic one-hand daggers
15 2 4 0.54 1 to 100 epic bows
15 2 4 0.65 101 to 300 epic bows
21 13 2, 3 0.54 all default main-hand fist
21 13 4 0.65 200 to 300 epic main-hand fist
21 4 4 0.155 115 to 164 epic main-hand mace
21 15 4 0.155 101 to 200 epic main-hand daggers
21 15 4 0.3125 all epic main-hand daggers
21 0 4 0.54 all epic main-hand axes
25 16 3, 4 0.65 all rare and epic thrown
26 18 3, 4 0.65 all rare and epic crossbows

Attack Speeds per Weapon Type

inventorytype subclass avg delay detail
21 0 2400 main hand axe
13 0 2300 one hand axe
22 0 2000 off hand axe
17 1 3400 two hand axe
21 4 2000 main hand mace
13 4 2300 one hand mace
17 5 3300 two hand mace
22 4 1500 off hand mace
21 7 1900 main hand sword
13 7 2200 one hand sword
22 7 1500 off hand sword
17 8 3300 two hand sword
21 15 1700 main hand dagger
13 15 1700 one hand dagger
22 15 1600 off hand dagger
21 13 2600 main hand fist
13 13 2000 one hand fist
22 13 2000 off hand fist
17 6 3200 two hand polearm
17 10 2700 two hand staff
15 2 2700 bow
25 16 1900 thrown
26 3 2700 ranged - gun
26 18 2900 ranged - crossbow
26 19 1700 ranged - wand

Druid/Caster Weapon DPS Adjustment (old methodology)

Because weapon damage is not an effective mechanic of damage for druids and casters, caster and druid weapons sacrifice a portion of their DPS to either gain a base amount of spell power or feral attack power, or increase the stat budget ceiling to accomodate more spellpower or feral attack power. The amount of Spell Power or Feral Attack Power gained is proportional to the amount of DPS reduction on the item.

One-hand caster weapons from tbc and below have the full allotment of spellpower attributed as a stat. Feral Druids do not use one-handed weapons.

One-Hand and Two-Hand caster weapons may or may not have spellpower attributed as a stat, and will come with a base quantity by default.

items with a base spellpower figure built-in contain a spellid_1 of 46749

The typical damage coefficient on a two handed weapon is 0.65, for caster weapons this is reduced to 0.54.

The estimated calculation for adjusted spell power or feral attack power applicable for item level 0 to 165:

$$Sacrificed DPS = Weapon DPS - 41.5 Spell Power = Sacrificed DPS * 4 Feral Attack Power = Sacrificed DPS * 18.37 - 12.4843$$

Sell Value Calculation

Quality Formula Graph
2 y = 439x graph
3 y = 500 + 525x graph
4 y = 10000 + 600x + 0.16x^2 graph

The chest InventoryType has the highest sell value of all slots, similar to the weight of slotMod. Sell value is determined by taking the highest value item (chest) and dividing its cost by the cost of the other items of an equivalent item level and subclass. Weight coefficients for plate, mail, leather, and cloth are derived by dividing the plate chest piece against the chest of each other subclass to determine the difference between.

Item Name InventoryType sellMod
Neck 2 8/16
Waist 6 8/16
Feet 8 12/16
Hands 10 8/16
Finger 11 8/16
Trinket 12 28/16
Shield 14 15/16
Back 9 12/16
Head 1 12/16
Shoulder 3 12/16
Shirt 4 4/16
Chest 5 16/16
Legs 7 16/16
Wrists 9 8/16
Tabard 19 4/16
Chest (Robe) 20 16/16
Off-hand 23 8/16
Relic 28 4/16

Rings, Amulets, and Off-hand items sell for 25% of the buy price. All othe armor types sell for 20% of the buy price.

name subclass sellMod
Misc 0 28/16
Cloth 1 9/16
Leather 2 11/16
Mail 3 14/16
Plate 4 16/16
Shield 6 16/16
Relic 7,8,9,10 16/16

Sources & Attribution

The inspiration for the calculations and formulas above probably wouldn't have happened if it weren't for the hard work of the individuals who took the time to write wiki articles and forum threads outlined below. Their work was heavily influenced by the mathematics introduced by a Zul'jin player known as Hyzenthlei.

The images for item display were compiled by reynoldscahoon.

A not insignificant amount of inspiration for this application was derived from a spreadsheet created by RS_Degen.

The polynomial expressions used in these calculations were created with Polynomial Visualizer, a web application I wrote specifically to help me calculate, fine-tune, and graph polynomial regression based on plottable item data.