You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

58 lines
1.1 KiB

  1. module.exports = {
  2. qualities: [
  3. 2000,
  4. 350,
  5. 80,
  6. 17,
  7. 1
  8. ],
  9. magicFindMult: 7,
  10. generate: function (item, blueprint) {
  11. if (blueprint.quality !== null) {
  12. item.quality = ~~blueprint.quality;
  13. return;
  14. }
  15. let qualities = extend(true, [], this.qualities);
  16. let magicFind = (blueprint.magicFind || 0);
  17. if (!(magicFind instanceof Array))
  18. magicFind = [magicFind];
  19. else
  20. magicFind = extend(true, [], magicFind);
  21. let bonusMagicFind = blueprint.bonusMagicFind || 0;
  22. let mLen = magicFind.length;
  23. for (let i = 0; i < mLen; i++) {
  24. qualities[i] = Math.max(0, qualities[i] - magicFind[i]);
  25. if (qualities[i] > 0) {
  26. if (i === 0) {
  27. qualities[i] -= (bonusMagicFind * this.magicFindMult);
  28. if (qualities[i] < 0)
  29. qualities[i] = 0;
  30. }
  31. break;
  32. }
  33. }
  34. let max = qualities.reduce((p, n) => p + n);
  35. let gen = ~~(Math.random() * max);
  36. let total = 0;
  37. for (let i = 0; i < qualities.length; i++) {
  38. total += qualities[i];
  39. if (gen < total) {
  40. item.quality = i;
  41. return;
  42. }
  43. }
  44. item.quality = qualities.length - 1;
  45. }
  46. };