diff --git a/test/common/ops/buy/buyGear.js b/test/common/ops/buy/buyGear.js index afc881f6a7..f627d48f57 100644 --- a/test/common/ops/buy/buyGear.js +++ b/test/common/ops/buy/buyGear.js @@ -138,5 +138,27 @@ describe('shared.ops.buyGear', () => { done(); } }); + + it('does not buyGear equipment if user does not own prior item in sequence', (done) => { + user.stats.gp = 200; + + try { + buyGear(user, {params: {key: 'armor_warrior_2'}}); + } catch (err) { + expect(err).to.be.an.instanceof(NotAuthorized); + expect(err.message).to.equal(i18n.t('previousGearNotOwned')); + expect(user.items.gear.owned).to.not.have.property('armor_warrior_2'); + done(); + } + }); + + it('does buyGear equipment if item is a numbered special item user qualifies for', () => { + user.stats.gp = 200; + user.items.gear.owned.head_special_2 = false; + + buyGear(user, {params: {key: 'head_special_2'}}); + + expect(user.items.gear.owned).to.have.property('head_special_2', true); + }); }); }); diff --git a/website/common/script/ops/buyGear.js b/website/common/script/ops/buyGear.js index 7ef868b1e1..cab4be405e 100644 --- a/website/common/script/ops/buyGear.js +++ b/website/common/script/ops/buyGear.js @@ -37,10 +37,10 @@ module.exports = function buyGear (user, req = {}, analytics) { let itemIndex = Number(item.index); - if (Number.isInteger(itemIndex)) { + if (Number.isInteger(itemIndex) && content.classes.includes(item.klass)) { let previousLevelGear = key.replace(/[0-9]/, itemIndex - 1); let hasPreviousLevelGear = user.items.gear.owned[previousLevelGear]; - let checkIndexToType = itemIndex > (item.type === 'weapon' ? 0 : 1); + let checkIndexToType = itemIndex > (item.type === 'weapon' || item.type === 'shield' && item.klass === 'rogue' ? 0 : 1); if (checkIndexToType && !hasPreviousLevelGear) { throw new NotAuthorized(i18n.t('previousGearNotOwned', req.language)); @@ -52,7 +52,6 @@ module.exports = function buyGear (user, req = {}, analytics) { message = handleTwoHanded(user, item, undefined, req); } - removePinnedGearAddPossibleNewOnes(user, `gear.flat.${item.key}`, item.key); if (item.last) ultimateGear(user);