Sfoglia il codice sorgente

Centralize item stacking checks

tags/v0.4.4^2
Peyrille Benjamin 4 anni fa
parent
commit
b6ae2b29f8
4 ha cambiato i file con 16 aggiunte e 7 eliminazioni
  1. +4
    -2
      src/server/components/inventory.js
  2. +3
    -1
      src/server/components/inventory/getItem.js
  3. +4
    -4
      src/server/components/stash.js
  4. +5
    -0
      src/server/items/itemHelpers.js

+ 4
- 2
src/server/components/inventory.js Vedi File

@@ -5,6 +5,8 @@ let classes = require('../config/spirits');
let mtx = require('../mtx/mtx');
let factions = require('../config/factions');
let itemEffects = require('../items/itemEffects');

const itemHelpers = require('../items/itemHelpers');
const transactions = require('../security/transactions');

const { applyItemStats } = require('./equipment/helpers');
@@ -295,7 +297,7 @@ module.exports = {

if ((!fromItem) || (!toItem))
return;
else if ((!fromItem.quantity) || (!toItem.quantity))
else if ((!itemHelpers.isItemStackable(fromItem)) || (!itemHelpers.isItemStackable(toItem)))
return;

toItem.quantity += fromItem.quantity;
@@ -698,7 +700,7 @@ module.exports = {
if (this.inventorySize !== -1) {
if (item) {
let exists = this.items.find(i => (i.name === item.name));
if (exists && !noStack && (exists.quantity || item.quantity))
if ((exists) && (!noStack) && (itemHelpers.isItemStackable(item) && itemHelpers.isItemStackable(exists)))
return true;
}



+ 3
- 1
src/server/components/inventory/getItem.js Vedi File

@@ -1,3 +1,5 @@
const itemHelpers = require('../../items/itemHelpers');

const getNextId = items => {
let id = 0;
let iLen = items.length;
@@ -25,7 +27,7 @@ module.exports = (cpnInv, item, hideMessage, noStack, hideAlert) => {
let quantity = item.quantity;

let exists = false;
if ((item.material || item.quest || item.quantity) && !item.noStack && !item.uses && !noStack) {
if (itemHelpers.isItemStackable(item) && !noStack) {
let existItem = cpnInv.items.find(i => i.name === item.name);
if (existItem) {
exists = true;


+ 4
- 4
src/server/components/stash.js Vedi File

@@ -1,4 +1,5 @@
const cpnInventory = require('./inventory');
const itemHelpers = require('../items/itemHelpers');

const maxItems = 50;

@@ -29,7 +30,7 @@ module.exports = {
getItem: function (item) {
//Material?
let exists = false;
if (((item.material) || (item.quest) || (item.quantity)) && (!item.noStack) && (!item.uses)) {
if (itemHelpers.isItemStackable(item)) {
let existItem = this.items.find(i => i.name === item.name);
if (existItem) {
exists = true;
@@ -66,8 +67,8 @@ module.exports = {
if (!this.active)
return;
else if (this.items.length >= this.maxItems) {
let isMaterial = this.items.some(stashedItem => item.name === stashedItem.name && (item.quantity || item.material));
if (!isMaterial) {
let isStackable = this.items.some(stashedItem => item.name === stashedItem.name && (itemHelpers.isItemStackable(stashedItem)));
if (!isStackable) {
this.obj.instance.syncer.queue('onGetMessages', {
id: this.obj.id,
messages: [{
@@ -79,7 +80,6 @@ module.exports = {
return;
}
}

this.getItem(item);

this.obj.syncer.setArray(true, 'stash', 'getItems', item);


+ 5
- 0
src/server/items/itemHelpers.js Vedi File

@@ -0,0 +1,5 @@
module.exports = {
isItemStackable: function (item) {
return (item.material || item.quest || item.quantity) && (!item.noStack) && (!item.uses);
}
};

Caricamento…
Annulla
Salva