From f38e0587bed33930d1211e4e7bc8027113b40973 Mon Sep 17 00:00:00 2001 From: Shaun Date: Sat, 16 Apr 2022 21:31:11 +0200 Subject: [PATCH] bug #1921 --- src/server/components/equipment.js | 2 +- src/server/components/inventory.js | 6 ++++-- src/server/components/inventory/getItem.js | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/server/components/equipment.js b/src/server/components/equipment.js index babab8d6..007f1626 100644 --- a/src/server/components/equipment.js +++ b/src/server/components/equipment.js @@ -126,7 +126,7 @@ module.exports = { if ((!obj.mob) || (item.ability)) { if (item.spell) - inventory.learnAbility({ itemId, slot: item.runeSlot }); + inventory.learnAbility({ itemId, slot: item.runeSlot, bypassEqCheck: true }); else obj.syncer.setArray(true, 'inventory', 'getItems', inventory.simplifyItem(item)); } diff --git a/src/server/components/inventory.js b/src/server/components/inventory.js index abecb8a6..196d2542 100644 --- a/src/server/components/inventory.js +++ b/src/server/components/inventory.js @@ -145,10 +145,12 @@ module.exports = { } }, - learnAbility: function ({ itemId, slot }) { + //forceEq is set by the equipment component to force the ability to be learnt since the item is already EQd + // otherwise the first if check would fail + learnAbility: function ({ itemId, slot, bypassEqCheck = false }) { let item = this.findItem(itemId); let statValues = this.obj.stats.values; - if (!item || item.eq) + if (!item || (item.eq && !bypassEqCheck)) return; else if (!item.spell) { item.eq = false; diff --git a/src/server/components/inventory/getItem.js b/src/server/components/inventory/getItem.js index b97e9b3b..ee5d0427 100644 --- a/src/server/components/inventory/getItem.js +++ b/src/server/components/inventory/getItem.js @@ -123,12 +123,12 @@ module.exports = (cpnInv, item, hideMessage, noStack, hideAlert, createBagIfFull cpnInv.items.push(item); if (item.eq) { + delete item.eq; + if (item.ability) cpnInv.learnAbility({ itemId: item.id, slot: item.runeSlot }); - else { - delete item.eq; + else obj.equipment.equip({ itemId: item.id }); - } } else if (item.has('quickSlot')) { obj.equipment.setQuickSlot({ itemId: item.id,