From 84609e1df7b3816cf46be802d7fcc7442ab9a4e3 Mon Sep 17 00:00:00 2001 From: "Damian A. Pastorini" Date: Mon, 1 Jun 2020 11:25:06 +0200 Subject: [PATCH] - Reldens - Items System --- lib/item/type/equipment.js | 8 ++--- lib/item/type/item-base.js | 52 +++++++++++++++++++++------- lib/server/storage/models-manager.js | 4 +-- package.json | 2 +- 4 files changed, 47 insertions(+), 19 deletions(-) diff --git a/lib/item/type/equipment.js b/lib/item/type/equipment.js index 4aafa45..5b871bc 100644 --- a/lib/item/type/equipment.js +++ b/lib/item/type/equipment.js @@ -24,7 +24,7 @@ class Equipment extends ItemBase this.equipped = true; await this.manager.events.emit(ItemsEvents.EQUIP_ITEM, this); // apply modifiers automatically or not: - if(!applyMods && !this.manager.applyModifiersAuto){ + if(applyMods === false || this.manager.applyModifiersAuto === false){ return false; } await this.applyModifiers(); @@ -35,7 +35,7 @@ class Equipment extends ItemBase this.equipped = false; await this.manager.events.emit(ItemsEvents.UNEQUIP_ITEM, this); // revert modifiers automatically or not: - if(!revertMods && !this.manager.revertModifiersAuto){ + if(revertMods === false || this.manager.revertModifiersAuto === false){ return false; } await this.revertModifiers(); @@ -52,8 +52,8 @@ class Equipment extends ItemBase async revertModifiers() { - if(!this.equipped){ - Logger.error('Item not equipped: '+this.getInventoryId()); + if(this.equipped){ + Logger.error('Item equipped: '+this.getInventoryId()); return false; } return await super.revertModifiers(); diff --git a/lib/item/type/item-base.js b/lib/item/type/item-base.js index b1924a8..0351df9 100644 --- a/lib/item/type/item-base.js +++ b/lib/item/type/item-base.js @@ -94,23 +94,51 @@ class ItemBase { // @TODO: this is a temporal list of limited operations which can be improved. // @NOTE: all of this need an opposite method so we can revert it later, except for SET and APPLY_METHOD. - if(modifier.operation === ItemsConst.OPS.INC || (modifier.operation === ItemsConst.OPS.DEC && revert)){ - ownerProperty += modifier.value; - } - if(modifier.operation === ItemsConst.OPS.DEC || (modifier.operation === ItemsConst.OPS.INC && revert)){ - ownerProperty -= modifier.value; - } - if(modifier.operation === ItemsConst.OPS.MUL || (modifier.operation === ItemsConst.OPS.DIV && revert)){ + if( + (modifier.operation === ItemsConst.OPS.INC && !revert) + || (modifier.operation === ItemsConst.OPS.DEC && revert) + ){ + ownerProperty = ownerProperty + modifier.value; + } + if( + (modifier.operation === ItemsConst.OPS.DEC && !revert) + || (modifier.operation === ItemsConst.OPS.INC && revert) + ){ + ownerProperty = ownerProperty - modifier.value; + } + if( + (modifier.operation === ItemsConst.OPS.MUL && !revert) + || (modifier.operation === ItemsConst.OPS.DIV && revert) + ){ ownerProperty = ownerProperty * modifier.value; } - if(modifier.operation === ItemsConst.OPS.DIV || (modifier.operation === ItemsConst.OPS.MUL && revert)){ + if( + (modifier.operation === ItemsConst.OPS.DIV && !revert) + || (modifier.operation === ItemsConst.OPS.MUL && revert) + ){ ownerProperty = ownerProperty / modifier.value; } - if(modifier.operation === ItemsConst.OPS.INC_P || (modifier.operation === ItemsConst.OPS.DEC_P && revert)){ - ownerProperty += ownerProperty * modifier.value / 100; + if( + (modifier.operation === ItemsConst.OPS.INC_P && !revert) + || (modifier.operation === ItemsConst.OPS.DEC_P && revert) + ){ + if(revert){ + let revertValue = (Math.round(ownerProperty / (100 - modifier.value))) * 100 - ownerProperty; + ownerProperty = ownerProperty + revertValue; + } else { + ownerProperty = ownerProperty + Math.round(ownerProperty * modifier.value / 100); + } } - if(modifier.operation === ItemsConst.OPS.DEC_P || (modifier.operation === ItemsConst.OPS.INC_P && revert)){ - ownerProperty -= ownerProperty * modifier.value / 100; + if( + (modifier.operation === ItemsConst.OPS.DEC_P && !revert) + || (modifier.operation === ItemsConst.OPS.INC_P && revert) + ){ + if(revert){ + let revertValue = ownerProperty - Math.round((ownerProperty / (100 - modifier.value))) * 100; + ownerProperty = ownerProperty - revertValue; + } else { + ownerProperty = ownerProperty - Math.round(ownerProperty * modifier.value / 100); + } } if(modifier.operation === ItemsConst.OPS.SET){ if(revert){ diff --git a/lib/server/storage/models-manager.js b/lib/server/storage/models-manager.js index e1527b3..ef51a0f 100644 --- a/lib/server/storage/models-manager.js +++ b/lib/server/storage/models-manager.js @@ -61,12 +61,12 @@ class ModelsManager async onEquipItem(item) { - return this.models['inventory'].query().patch(item).findById(item.id); + return this.models['inventory'].query().patch({is_active: 1}).findById(item.id); } async onUnequipItem(item) { - return this.models['inventory'].query().patch(item).findById(item.id); + return this.models['inventory'].query().patch({is_active: 0}).findById(item.id); } async onChangedModifiers(item, action) diff --git a/package.json b/package.json index 2e39145..8e9dc5b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@reldens/items-system", - "version": "0.4.2", + "version": "0.5.0", "description": "Reldens - Items System", "source": true, "homepage": "https://github.com/damian-pastorini/reldens-items",