Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 

168 righe
3.5 KiB

  1. define([
  2. 'items/generator',
  3. 'misc/events'
  4. ], function (
  5. itemGenerator,
  6. events
  7. ) {
  8. var config = {
  9. 'Runecrafter\'s Toil': {
  10. chance: 0.05,
  11. reward: 'Rune',
  12. setSize: 3,
  13. mobLevel: [3, 100]
  14. },
  15. 'Godly Promise': {
  16. chance: 0.0025,
  17. reward: 'Level 15 Legendary Weapon',
  18. setSize: 2,
  19. zone: 'sewer'
  20. },
  21. 'The Other Heirloom': {
  22. chance: 0.04,
  23. reward: 'Perfect Level 10 Ring',
  24. setSize: 3,
  25. mobName: 'flamingo'
  26. },
  27. 'Benthic Incantation': {
  28. chance: 990.05,
  29. reward: `Princess Morgawsa's Trident`,
  30. setSize: 1,
  31. zone: 'estuary'
  32. }
  33. };
  34. return {
  35. init: function () {
  36. },
  37. fixCard: function (card) {
  38. var template = config[card.name];
  39. if (!template)
  40. return;
  41. card.setSize = template.setSize;
  42. },
  43. getCard: function (mob) {
  44. var pool = [];
  45. var mobLevel = mob.stats.values.level;
  46. var configs = extend(true, {}, config);
  47. events.emit('onBeforeGetCardsConfig', configs);
  48. Object.keys(configs).forEach(function (c) {
  49. var card = configs[c];
  50. if (!card.chance)
  51. return;
  52. var rqrLevel = card.mobLevel;
  53. if (rqrLevel) {
  54. if ((rqrLevel.push) && ((mobLevel < rqrLevel[0]) || (mobLevel > rqrLevel[1])))
  55. return;
  56. else if ((!rqrLevel.push) && (mobLevel != rqrLevel))
  57. return;
  58. }
  59. var mobName = card.mobName;
  60. if (mobName) {
  61. if ((mobName.toLowerCase) && (mob.name.toLowerCase() != mobName.toLowerCase()))
  62. return;
  63. else if ((mobName.push) && (!mobName.some(m => (m.toLowerCase() == mob.name.toLowerCase()))))
  64. return;
  65. }
  66. if (Math.random() >= card.chance)
  67. return;
  68. pool.push(c);
  69. }, this);
  70. if (pool.length == 0)
  71. return;
  72. var pickName = pool[~~(Math.random() * pool.length)];
  73. var pick = configs[pickName];
  74. var card = {
  75. name: pickName,
  76. spritesheet: pick.spritesheet || `${this.folderName}/images/items.png`,
  77. type: 'Reward Card',
  78. description: 'Reward: ' + pick.reward,
  79. noSalvage: true,
  80. sprite: pick.sprite || [0, 0],
  81. quantity: 1,
  82. quality: pick.quality || 1,
  83. setSize: pick.setSize
  84. };
  85. return card;
  86. },
  87. getReward: function (set) {
  88. var configs = extend(true, {}, config);
  89. events.emit('onBeforeGetCardsConfig', configs);
  90. var reward = configs[set].reward;
  91. var msg = {
  92. reward: reward,
  93. handler: this.rewards[reward]
  94. };
  95. events.emit('onBeforeGetCardReward', msg);
  96. return msg.handler();
  97. },
  98. rewards: {
  99. 'Rune': function () {
  100. return itemGenerator.generate({
  101. spell: true
  102. });
  103. },
  104. 'Level 15 Legendary Weapon': function () {
  105. return itemGenerator.generate({
  106. level: 15,
  107. quality: 4,
  108. noSpell: true,
  109. slot: 'twoHanded'
  110. });
  111. },
  112. 'Perfect Level 10 Ring': function () {
  113. return itemGenerator.generate({
  114. level: 10,
  115. noSpell: true,
  116. perfection: 1,
  117. slot: 'finger'
  118. });
  119. },
  120. "Princess Morgawsa's Trident": function () {
  121. return itemGenerator.generate({
  122. name: `Princess Morgawsa's Trident`,
  123. level: [10, 15],
  124. quality: 4,
  125. noSpell: true,
  126. slot: 'twoHanded',
  127. sprite: [0, 0],
  128. spritesheet: '../../../images/legendaryItems.png',
  129. type: 'Trident',
  130. spellName: 'magic missile',
  131. description: `Summoned from the ancient depths of the ocean by the Benthic Incantation.`,
  132. stats: ['elementFrostPercent', 'elementFrostPercent', 'elementFrostPercent'],
  133. effects: [{
  134. type: 'freezeOnHit',
  135. rolls: {
  136. i_chance: [2, 5],
  137. i_duration: [2, 4]
  138. }
  139. }]
  140. });
  141. }
  142. }
  143. };
  144. });