View Single Post
05-29-13, 01:29 PM   #13
d07.RiV
A Defias Bandit
Join Date: Jun 2011
Posts: 3
I'll try to bring back this discussion - with the new patch, upgraded stats now compensate for sockets (which aren't upgraded, obviously), so the formula changes.

Since item data now appears to be stored client-side (Item-sparse.db2), you can get stat allocation and socket multipliers for every item, so the formula is something like this:
Code:
statAfterUpgrade = (statBeforeUpgrade + socketMultiplier * 160) * upgradeFactor - socketMultiplier * 160
I'm getting upgradeFactor from weapon damage data (ItemDamageTwoHand.dbc), and it seems to work fine except for rounding issues (maybe if I find out how to use stat allocation values I'd get it right).

Anyway, the obvious problem is that socketMultiplier is not available in lua code, and there's no general rule to calculate it - e.g. if some items have 1 for primary stat and 0.5 for both secondary stats, some would have 1 for primary, and 0.25/0.75 for secondary (assuming 2 sockets).

By the way, here's the new upgrade id to item level table:
Lua Code:
  1. local upTable = {
  2.   [1]   =  8, -- 1/1
  3.   [373] =  4, -- 1/2
  4.   [374] =  8, -- 2/2
  5.   [375] =  4, -- 1/3
  6.   [376] =  4, -- 2/3
  7.   [377] =  4, -- 3/3
  8.   [378] =  7, -- 1/1
  9.   [379] =  4, -- 1/2
  10.   [380] =  4, -- 2/2
  11.   [445] =  0, -- 0/2
  12.   [446] =  4, -- 1/2
  13.   [447] =  8, -- 2/2
  14.   [451] =  0, -- 0/1
  15.   [452] =  8, -- 1/1
  16.   [453] =  0, -- 0/2
  17.   [454] =  4, -- 1/2
  18.   [455] =  8, -- 2/2
  19.   [456] =  0, -- 0/1
  20.   [457] =  8, -- 1/1
  21.   [458] =  0, -- 0/4
  22.   [459] =  4, -- 1/4
  23.   [460] =  8, -- 2/4
  24.   [461] = 12, -- 3/4
  25.   [462] = 16, -- 4/4
  26.   [465] =  0, -- 0/2
  27.   [466] =  4, -- 1/2
  28.   [467] =  8, -- 2/2
  29.   [468] =  0, -- 0/4
  30.   [469] =  4, -- 1/4
  31.   [470] =  8, -- 2/4
  32.   [471] = 12, -- 3/4
  33.   [472] = 16, -- 4/4
  34.   [476] =  0, -- ?
  35.   [479] =  0, -- ?
  36. }