No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

101 líneas
2.4 KiB

  1. define([
  2. 'items/generators/level',
  3. 'items/generators/quality',
  4. 'items/generators/slots',
  5. 'items/generators/types',
  6. 'items/generators/stats',
  7. 'items/generators/names',
  8. 'items/generators/worth',
  9. 'items/generators/quantity',
  10. 'items/generators/spellbook',
  11. 'items/generators/currency',
  12. 'items/generators/effects'
  13. ], function (
  14. g1, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11
  15. ) {
  16. var generators = [g1, g2, g3, g4, g5, g6, g11, g7];
  17. var materialGenerators = [g6, g8];
  18. var spellGenerators = [g1, g9];
  19. var currencyGenerators = [g10];
  20. var generator = {
  21. spellChance: 0.02,
  22. currencyChance: 0.025,
  23. generate: function (blueprint) {
  24. var isSpell = false;
  25. var isCurrency = false;
  26. var hadBlueprint = !!blueprint;
  27. blueprint = blueprint || {};
  28. var item = {};
  29. if ((!blueprint.slot) && (!blueprint.noSpell)) {
  30. isSpell = blueprint.spell;
  31. isCurrency = blueprint.currency;
  32. if ((!isCurrency) && (!isSpell) && ((!hadBlueprint) || ((!blueprint.type) && (!blueprint.slot) && (!blueprint.stats)))) {
  33. isSpell = Math.random() < this.spellChance;
  34. if (!isSpell)
  35. isCurrency = Math.random() < this.currencyChance;
  36. }
  37. }
  38. if (blueprint.isSpell)
  39. isSpell = true;
  40. if (isSpell)
  41. spellGenerators.forEach(g => g.generate(item, blueprint));
  42. else if (isCurrency) {
  43. currencyGenerators.forEach(g => g.generate(item, blueprint));
  44. } else if (blueprint.material) {
  45. item.material = true;
  46. item.sprite = blueprint.sprite;
  47. item.noDrop = blueprint.noDrop;
  48. item.noSalvage = blueprint.noSalvage;
  49. item.noDestroy = blueprint.noDestroy;
  50. materialGenerators.forEach(g => g.generate(item, blueprint));
  51. } else if (blueprint.type == 'mtx') {
  52. item = extend(true, {}, blueprint);
  53. delete item.chance;
  54. } else {
  55. generators.forEach(g => g.generate(item, blueprint));
  56. if (blueprint.spellName)
  57. g9.generate(item, blueprint);
  58. }
  59. if (blueprint.spritesheet)
  60. item.spritesheet = blueprint.spritesheet;
  61. if (blueprint.noSalvage)
  62. item.noSalvage = true;
  63. if (blueprint.uses)
  64. item.uses = blueprint.uses;
  65. return item;
  66. },
  67. removeStat: function (item, stat) {
  68. if (!stat) {
  69. stat = Object.keys(item.stats)
  70. .filter(s => (s != 'armor'));
  71. stat = stat[~~(Math.random() * stat.length)];
  72. }
  73. delete item.stats[stat];
  74. },
  75. pickRandomSlot: function () {
  76. var item = {};
  77. var blueprint = {};
  78. g3.generate(item, blueprint);
  79. return item.slot;
  80. }
  81. };
  82. return generator;
  83. });