Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

90 linhas
1.9 KiB

  1. let config = {
  2. 'Runecrafter\'s Toil': {
  3. chance: 0.025,
  4. reward: 'Level 10 Rune',
  5. mobLevel: [8, 12]
  6. },
  7. 'Godly Promise': {
  8. chance: 0.01,
  9. reward: 'Level 15 Legendary Weapon',
  10. zone: 'sewer'
  11. },
  12. 'The Other Heirloom': {
  13. chance: 0.02,
  14. reward: 'Perfect Level 10 Ring',
  15. mobName: 'flamingo'
  16. },
  17. 'Benthic Incantation': {
  18. chance: 0.015,
  19. reward: 'Princess Morgawsa\'s Trident',
  20. zone: 'estuary'
  21. },
  22. 'Fangs of Fury': {
  23. chance: 0.05,
  24. reward: 'Steelclaw\'s Bite',
  25. mobName: 'stinktooth'
  26. },
  27. 'Tradesman\'s Pride': {
  28. chance: 0.007,
  29. reward: 'Five Random Idols'
  30. }
  31. };
  32. module.exports = {
  33. getCard: function (modFolderPath, looter, mob) {
  34. let pool = [];
  35. let mobLevel = mob.stats.values.level;
  36. let configs = extend({}, config);
  37. looter.instance.eventEmitter.emit('onBeforeGetCardsConfig', configs);
  38. Object.keys(configs).forEach(function (c) {
  39. let card = configs[c];
  40. if (!card.chance)
  41. return;
  42. let rqrLevel = card.mobLevel;
  43. if (rqrLevel) {
  44. if ((rqrLevel.push) && ((mobLevel < rqrLevel[0]) || (mobLevel > rqrLevel[1])))
  45. return;
  46. else if ((!rqrLevel.push) && (mobLevel !== rqrLevel))
  47. return;
  48. }
  49. let mobName = card.mobName;
  50. if (mobName) {
  51. if ((mobName.toLowerCase) && (mob.name.toLowerCase() !== mobName.toLowerCase()))
  52. return;
  53. else if ((mobName.push) && (!mobName.some(m => (m.toLowerCase() === mob.name.toLowerCase()))))
  54. return;
  55. }
  56. if ((card.zone) && (looter.zoneName !== card.zone))
  57. return;
  58. if (Math.random() >= card.chance)
  59. return;
  60. pool.push(c);
  61. }, this);
  62. if (pool.length === 0)
  63. return;
  64. let pickName = pool[~~(Math.random() * pool.length)];
  65. let pick = configs[pickName];
  66. let builtCard = {
  67. name: pickName,
  68. spritesheet: pick.spritesheet || `${modFolderPath}/images/items.png`,
  69. type: 'Gambler\'s Card',
  70. noSalvage: true,
  71. sprite: pick.sprite || [0, 0],
  72. quantity: 1,
  73. quality: pick.quality || 1
  74. };
  75. return builtCard;
  76. }
  77. };