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ů.
 
 
 

87 řádky
1.9 KiB

  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 (blueprint) {
  13. let rerender = false;
  14. if (blueprint.destroyItems) {
  15. rerender = true;
  16. this.items.spliceWhere(i => blueprint.destroyItems.includes(i.id));
  17. events.emit('onDestroyItems', blueprint.destroyItems, this.items);
  18. }
  19. if (blueprint.getItems) {
  20. let items = this.items;
  21. let newItems = blueprint.getItems || [];
  22. let nLen = newItems.length;
  23. for (let i = 0; i < nLen; i++) {
  24. let nItem = newItems[i];
  25. let nId = nItem.id;
  26. let findItem = items.find(f => f.id === nId);
  27. if (findItem) {
  28. if (!rerender) {
  29. rerender = (
  30. (findItem.pos !== nItem.pos) ||
  31. (findItem.eq !== nItem.eq) ||
  32. (findItem.active !== nItem.active) ||
  33. (findItem.quickSlot !== nItem.quickSlot) ||
  34. (findItem.quantity !== nItem.quantity)
  35. );
  36. }
  37. for (let p in findItem)
  38. delete findItem[p];
  39. $.extend(true, findItem, nItem);
  40. newItems.splice(i, 1);
  41. i--;
  42. nLen--;
  43. } else {
  44. rerender = true;
  45. nItem.isNew = true;
  46. }
  47. }
  48. this.items.push.apply(this.items, blueprint.getItems || []);
  49. events.emit('onGetItems', this.items, rerender);
  50. }
  51. },
  52. equipItemErrors: function (item) {
  53. let errors = [];
  54. let stats = this.obj.stats.values;
  55. if (item.level > stats.level)
  56. errors.push('level');
  57. if (item.requires && item.requires[0] && stats[item.requires[0].stat] < item.requires[0].value)
  58. errors.push('stats');
  59. if (item.factions) {
  60. if (item.factions.some(f => f.noEquip))
  61. errors.push('faction');
  62. }
  63. return errors;
  64. },
  65. canEquipItem: function (item) {
  66. return (this.equipItemErrors(item).length === 0);
  67. }
  68. };
  69. });