Parcourir la source

Merge branch '1366-centralize-stack-checks' into 'temp-v0.5'

Centralize item stacking checks

See merge request Isleward/isleward!449
tags/v0.4.4^2
Big Bad Waffle il y a 4 ans
Parent
révision
5295c7b734
4 fichiers modifiés avec 16 ajouts et 7 suppressions
  1. +4
    -2
      src/server/components/inventory.js
  2. +3
    -1
      src/server/components/inventory/getItem.js
  3. +5
    -0
      src/server/components/inventory/helpers.js
  4. +4
    -4
      src/server/components/stash.js

+ 4
- 2
src/server/components/inventory.js Voir le fichier

@@ -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 { isItemStackable } = require('./inventory/helpers');
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 ((!isItemStackable(fromItem)) || (!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) && (isItemStackable(item) && isItemStackable(exists)))
return true;
}



+ 3
- 1
src/server/components/inventory/getItem.js Voir le fichier

@@ -1,3 +1,5 @@
const { isItemStackable } = require('./helpers');

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 (isItemStackable(item) && !noStack) {
let existItem = cpnInv.items.find(i => i.name === item.name);
if (existItem) {
exists = true;


+ 5
- 0
src/server/components/inventory/helpers.js Voir le fichier

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

+ 4
- 4
src/server/components/stash.js Voir le fichier

@@ -1,4 +1,5 @@
const cpnInventory = require('./inventory');
const { isItemStackable } = require('./inventory/helpers');

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 (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 && (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);


Chargement…
Annuler
Enregistrer