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.
 
 
 

52 lines
1.0 KiB

  1. let cards = require('./cards');
  2. module.exports = {
  3. name: 'Feature: Cards',
  4. extraScripts: [
  5. 'cards'
  6. ],
  7. init: function () {
  8. cards.init();
  9. this.events.on('onBeforeDropBag', this.onBeforeDropBag.bind(this));
  10. this.events.on('onGetCardSetReward', this.onGetCardSetReward.bind(this));
  11. this.events.on('onBeforeGetItem', this.onBeforeGetItem.bind(this));
  12. },
  13. onBeforeDropBag: function (dropper, items, looter) {
  14. if (!looter.player)
  15. return;
  16. let dropEvent = {
  17. chanceMultiplier: 1,
  18. source: dropper
  19. };
  20. looter.fireEvent('beforeGenerateLoot', dropEvent);
  21. if (Math.random() >= dropEvent.chanceMultiplier)
  22. return;
  23. let res = cards.getCard(looter, dropper);
  24. if (!res)
  25. return;
  26. items.push(res);
  27. },
  28. onBeforeGetItem: function (item, obj) {
  29. if ((!obj.player) && (item.type !== 'Reward Card'))
  30. return;
  31. cards.fixCard(item);
  32. },
  33. onGetCardSetReward: function (set, obj) {
  34. let reward = cards.getReward(obj, set);
  35. if (!reward.push)
  36. reward = [reward];
  37. reward.forEach(r => obj.inventory.getItem(r));
  38. }
  39. };