From ae786f28a26a539f36d4a3266b4682963edd9501 Mon Sep 17 00:00:00 2001 From: Tyler Nychka Date: Sat, 28 Apr 2018 11:34:08 -0400 Subject: [PATCH] Fix locked class-specific gear after death fixes #10025 (#10212) * Fix locked class-specific gear after death fixes #10025 * Update to allow items next in tier but not owned * Updated logic * Added tests --- test/common/libs/shops.js | 72 +++++++++++++++++++++++++++++ website/common/script/libs/shops.js | 4 +- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/test/common/libs/shops.js b/test/common/libs/shops.js index c04fad0bd6..1da334dae0 100644 --- a/test/common/libs/shops.js +++ b/test/common/libs/shops.js @@ -59,6 +59,78 @@ describe('shops', () => { expect(specialCategory.items.find((item) => item.key === 'weapon_special_critical')); expect(specialCategory.items.find((item) => item.key === 'weapon_armoire_basicCrossbow'));// eslint-disable-line camelcase }); + + it('does not show gear when it is all owned', () => { + let userWithItems = generateUser({ + stats: { + class: 'wizard', + }, + items: { + gear: { + owned: { + weapon_wizard_0: true, // eslint-disable-line camelcase + weapon_wizard_1: true, // eslint-disable-line camelcase + weapon_wizard_2: true, // eslint-disable-line camelcase + weapon_wizard_3: true, // eslint-disable-line camelcase + weapon_wizard_4: true, // eslint-disable-line camelcase + weapon_wizard_5: true, // eslint-disable-line camelcase + weapon_wizard_6: true, // eslint-disable-line camelcase + armor_wizard_1: true, // eslint-disable-line camelcase + armor_wizard_2: true, // eslint-disable-line camelcase + armor_wizard_3: true, // eslint-disable-line camelcase + armor_wizard_4: true, // eslint-disable-line camelcase + armor_wizard_5: true, // eslint-disable-line camelcase + head_wizard_1: true, // eslint-disable-line camelcase + head_wizard_2: true, // eslint-disable-line camelcase + head_wizard_3: true, // eslint-disable-line camelcase + head_wizard_4: true, // eslint-disable-line camelcase + head_wizard_5: true, // eslint-disable-line camelcase + }, + }, + }, + }); + + + let shopWizardItems = shared.shops.getMarketGearCategories(userWithItems).find(x => x.identifier === 'wizard').items.filter(x => x.klass === 'wizard' && (x.owned === false || x.owned === undefined)); + expect(shopWizardItems.length).to.eql(0); + }); + + it('shows available gear not yet purchased and previously owned', () => { + let userWithItems = generateUser({ + stats: { + class: 'wizard', + }, + items: { + gear: { + owned: { + weapon_wizard_0: true, // eslint-disable-line camelcase + weapon_wizard_1: true, // eslint-disable-line camelcase + weapon_wizard_2: true, // eslint-disable-line camelcase + weapon_wizard_3: true, // eslint-disable-line camelcase + weapon_wizard_4: true, // eslint-disable-line camelcase + armor_wizard_1: true, // eslint-disable-line camelcase + armor_wizard_2: true, // eslint-disable-line camelcase + armor_wizard_3: false, // eslint-disable-line camelcase + armor_wizard_4: false, // eslint-disable-line camelcase + head_wizard_1: true, // eslint-disable-line camelcase + head_wizard_2: false, // eslint-disable-line camelcase + head_wizard_3: true, // eslint-disable-line camelcase + head_wizard_4: false, // eslint-disable-line camelcase + head_wizard_5: true, // eslint-disable-line camelcase + }, + }, + }, + }); + + + let shopWizardItems = shared.shops.getMarketGearCategories(userWithItems).find(x => x.identifier === 'wizard').items.filter(x => x.klass === 'wizard' && (x.owned === false || x.owned === undefined)); + expect(shopWizardItems.find(item => item.key === 'weapon_wizard_5').locked).to.eql(false); + expect(shopWizardItems.find(item => item.key === 'weapon_wizard_6').locked).to.eql(true); + expect(shopWizardItems.find(item => item.key === 'armor_wizard_3').locked).to.eql(false); + expect(shopWizardItems.find(item => item.key === 'armor_wizard_4').locked).to.eql(true); + expect(shopWizardItems.find(item => item.key === 'head_wizard_2').locked).to.eql(false); + expect(shopWizardItems.find(item => item.key === 'head_wizard_4').locked).to.eql(true); + }); }); describe('questShop', () => { diff --git a/website/common/script/libs/shops.js b/website/common/script/libs/shops.js index 252d65450f..68243c98ee 100644 --- a/website/common/script/libs/shops.js +++ b/website/common/script/libs/shops.js @@ -135,8 +135,8 @@ shops.checkMarketGearLocked = function checkMarketGearLocked (user, items) { let itemOwned = user.items.gear.owned[gear.key]; - if (itemOwned === false) { - gear.locked = false; + if (itemOwned === false && !availableGear.includes(gear.path)) { + gear.locked = true; } gear.owned = itemOwned;