選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 

68 行
1.3 KiB

  1. define([
  2. 'js/system/events'
  3. ], function(
  4. events
  5. ) {
  6. return {
  7. type: 'inventory',
  8. items: [],
  9. init: function(blueprint) {
  10. this.items.forEach(function(i) {
  11. if ((i.stats) && (i.stats.hpMax)) {
  12. i.stats.vit = i.stats.hpMax;
  13. delete i.stats.hpMax;
  14. }
  15. });
  16. events.emit('onGetItems', this.items);
  17. },
  18. extend: function(blueprint) {
  19. if (blueprint.destroyItems)
  20. events.emit('onDestroyItems', blueprint.destroyItems);
  21. if (blueprint.getItems) {
  22. var items = this.items;
  23. var newItems = blueprint.getItems || [];
  24. var nLen = newItems.length;
  25. for (var i = 0; i < nLen; i++) {
  26. var nItem = newItems[i];
  27. var nId = nItem.id;
  28. if ((nItem.stats) && (nItem.stats.hpMax)) {
  29. nItem.stats.vit = nItem.stats.hpMax;
  30. delete nItem.stats.hpMax;
  31. }
  32. var findItem = items.find(function(item) {
  33. return (item.id == nId);
  34. });
  35. if (findItem) {
  36. [
  37. 'eq',
  38. 'stats',
  39. 'power',
  40. 'pos'
  41. ].forEach(function(s) {
  42. if (!nItem[s])
  43. delete findItem[s];
  44. });
  45. $.extend(true, findItem, nItem);
  46. newItems.splice(i, 1);
  47. i--;
  48. nLen--;
  49. } else
  50. nItem.isNew = true;
  51. }
  52. this.items.push.apply(this.items, blueprint.getItems || []);
  53. events.emit('onGetItems', this.items);
  54. }
  55. }
  56. };
  57. });