Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

inventory.js 1.5 KiB

před 7 roky
před 7 roky
před 7 roky
před 2 roky
před 2 roky
před 7 roky
před 2 roky
před 7 roky
před 2 roky
před 7 roky
před 6 roky
před 5 roky
před 6 roky
před 5 roky
před 6 roky
před 6 roky
před 6 roky
před 5 roky
před 7 roky
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. define([
  2. 'js/system/events'
  3. ], function (
  4. events
  5. ) {
  6. return {
  7. type: 'inventory',
  8. items: [],
  9. init: function (blueprint) {
  10. events.emit('onGetItems', this.items);
  11. },
  12. extend: function ({ destroyItems, getItems }) {
  13. const { items } = this;
  14. let rerenderNeeded = false;
  15. if (destroyItems) {
  16. rerenderNeeded = true;
  17. events.emit('onDestroyItems', destroyItems, this.items);
  18. }
  19. if (getItems) {
  20. getItems.forEach(g => {
  21. const findItem = items.find(i => i.id === g.id);
  22. if (!findItem) {
  23. rerenderNeeded = true;
  24. g.isNew = true;
  25. items.push(g);
  26. return;
  27. }
  28. if (!rerenderNeeded) {
  29. rerenderNeeded = (
  30. findItem.pos !== g.pos ||
  31. findItem.eq !== g.eq ||
  32. findItem.active !== g.active ||
  33. findItem.quickSlot !== g.quickSlot ||
  34. findItem.quantity !== g.quantity
  35. );
  36. }
  37. Object.assign(findItem, g);
  38. });
  39. events.emit('onGetItems', this.items, rerenderNeeded, getItems);
  40. }
  41. },
  42. equipItemErrors: function (item) {
  43. let errors = [];
  44. let stats = this.obj.stats.values;
  45. if (item.level > stats.level)
  46. errors.push('level');
  47. if (item.requires && item.requires[0] && stats[item.requires[0].stat] < item.requires[0].value)
  48. errors.push('stats');
  49. if (item.factions) {
  50. if (item.factions.some(f => f.noEquip))
  51. errors.push('faction');
  52. }
  53. return errors;
  54. },
  55. canEquipItem: function (item) {
  56. return (this.equipItemErrors(item).length === 0);
  57. }
  58. };
  59. });