Advertisement
blackmanos

Untitled

Apr 5th, 2014
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. uint32 FillMaxDurability(uint32 itemClass, uint32 itemSubClass, uint32 inventoryType, uint32 quality, uint32 itemLevel)
  2. {
  3. if (itemClass != ITEM_CLASS_ARMOR && itemClass != ITEM_CLASS_WEAPON)
  4. return 0;
  5.  
  6. static float const qualityMultipliers[MAX_ITEM_QUALITY] =
  7. {
  8. 1.0f, 1.0f, 1.0f, 1.17f, 1.37f, 1.68f, 0.0f, 0.0f
  9. };
  10.  
  11. static float const armorMultipliers[MAX_INVTYPE] =
  12. {
  13. 0.00f, // INVTYPE_NON_EQUIP
  14. 0.59f, // INVTYPE_HEAD
  15. 0.00f, // INVTYPE_NECK
  16. 0.59f, // INVTYPE_SHOULDERS
  17. 0.00f, // INVTYPE_BODY
  18. 1.00f, // INVTYPE_CHEST
  19. 0.35f, // INVTYPE_WAIST
  20. 0.75f, // INVTYPE_LEGS
  21. 0.49f, // INVTYPE_FEET
  22. 0.35f, // INVTYPE_WRISTS
  23. 0.35f, // INVTYPE_HANDS
  24. 0.00f, // INVTYPE_FINGER
  25. 0.00f, // INVTYPE_TRINKET
  26. 0.00f, // INVTYPE_WEAPON
  27. 1.00f, // INVTYPE_SHIELD
  28. 0.00f, // INVTYPE_RANGED
  29. 0.00f, // INVTYPE_CLOAK
  30. 0.00f, // INVTYPE_2HWEAPON
  31. 0.00f, // INVTYPE_BAG
  32. 0.00f, // INVTYPE_TABARD
  33. 1.00f, // INVTYPE_ROBE
  34. 0.00f, // INVTYPE_WEAPONMAINHAND
  35. 0.00f, // INVTYPE_WEAPONOFFHAND
  36. 0.00f, // INVTYPE_HOLDABLE
  37. 0.00f, // INVTYPE_AMMO
  38. 0.00f, // INVTYPE_THROWN
  39. 0.00f, // INVTYPE_RANGEDRIGHT
  40. 0.00f, // INVTYPE_QUIVER
  41. 0.00f, // INVTYPE_RELIC
  42. };
  43.  
  44. static float const weaponMultipliers[MAX_ITEM_SUBCLASS_WEAPON] =
  45. {
  46. 0.89f, // ITEM_SUBCLASS_WEAPON_AXE
  47. 1.03f, // ITEM_SUBCLASS_WEAPON_AXE2
  48. 0.77f, // ITEM_SUBCLASS_WEAPON_BOW
  49. 0.77f, // ITEM_SUBCLASS_WEAPON_GUN
  50. 0.89f, // ITEM_SUBCLASS_WEAPON_MACE
  51. 1.03f, // ITEM_SUBCLASS_WEAPON_MACE2
  52. 1.03f, // ITEM_SUBCLASS_WEAPON_POLEARM
  53. 0.89f, // ITEM_SUBCLASS_WEAPON_SWORD
  54. 1.03f, // ITEM_SUBCLASS_WEAPON_SWORD2
  55. 0.00f, // ITEM_SUBCLASS_WEAPON_Obsolete
  56. 1.03f, // ITEM_SUBCLASS_WEAPON_STAFF
  57. 0.00f, // ITEM_SUBCLASS_WEAPON_EXOTIC
  58. 0.00f, // ITEM_SUBCLASS_WEAPON_EXOTIC2
  59. 0.64f, // ITEM_SUBCLASS_WEAPON_FIST_WEAPON
  60. 0.00f, // ITEM_SUBCLASS_WEAPON_MISCELLANEOUS
  61. 0.64f, // ITEM_SUBCLASS_WEAPON_DAGGER
  62. 0.64f, // ITEM_SUBCLASS_WEAPON_THROWN
  63. 0.00f, // ITEM_SUBCLASS_WEAPON_SPEAR
  64. 0.77f, // ITEM_SUBCLASS_WEAPON_CROSSBOW
  65. 0.64f, // ITEM_SUBCLASS_WEAPON_WAND
  66. 0.64f, // ITEM_SUBCLASS_WEAPON_FISHING_POLE
  67. };
  68.  
  69. float levelPenalty = 1.0f;
  70. if (itemLevel <= 28)
  71. levelPenalty = 0.966f - float(28u - itemLevel) / 54.0f;
  72.  
  73. if (itemClass == ITEM_CLASS_ARMOR)
  74. {
  75. if (inventoryType > INVTYPE_ROBE)
  76. return 0;
  77.  
  78. return 5 * uint32(23.0f * qualityMultipliers[quality] * armorMultipliers[inventoryType] * levelPenalty + 0.5f);
  79. }
  80.  
  81. return 5 * uint32(17.0f * qualityMultipliers[quality] * weaponMultipliers[itemSubClass] * levelPenalty + 0.5f);
  82. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement