diff --git a/common/script/index.js b/common/script/index.js index d82a39f04a..ee3790af6f 100644 --- a/common/script/index.js +++ b/common/script/index.js @@ -1392,9 +1392,9 @@ api.wrap = function(user, main) { } else { if (user.preferences.autoEquip) { user.items.gear.equipped[item.type] = item.key; + message = user.fns.handleTwoHanded(item, null, req); } user.items.gear.owned[item.key] = true; - message = user.fns.handleTwoHanded(item, null, req); if (message == null) { message = i18n.t('messageBought', { itemText: item.text(req.language) diff --git a/test/common/user.fns.buy.test.js b/test/common/user.fns.buy.test.js index e04c395533..a4b067f9f4 100644 --- a/test/common/user.fns.buy.test.js +++ b/test/common/user.fns.buy.test.js @@ -101,6 +101,34 @@ describe('user.fns.buy', () => { expect(user.items.gear.equipped).to.not.have.property('armor'); }); + it('removes one-handed weapon and shield if auto-equip is on and a two-hander is bought', () => { + user.stats.gp = 100; + user.preferences.autoEquip = true; + user.ops.buy({params: {key: 'shield_warrior_1'}}); + user.ops.equip({params: {key: 'shield_warrior_1'}}); + user.ops.buy({params: {key: 'weapon_warrior_1'}}); + user.ops.equip({params: {key: 'weapon_warrior_1'}}); + + user.ops.buy({params: {key: 'weapon_wizard_1'}}); + + expect(user.items.gear.equipped).to.have.property('shield', 'shield_base_0'); + expect(user.items.gear.equipped).to.have.property('weapon', 'weapon_wizard_1'); + }); + + it('buys two-handed equipment but does not automatically remove sword or shield', () => { + user.stats.gp = 100; + user.preferences.autoEquip = false; + user.ops.buy({params: {key: 'shield_warrior_1'}}); + user.ops.equip({params: {key: 'shield_warrior_1'}}); + user.ops.buy({params: {key: 'weapon_warrior_1'}}); + user.ops.equip({params: {key: 'weapon_warrior_1'}}); + + user.ops.buy({params: {key: 'weapon_wizard_1'}}); + + expect(user.items.gear.equipped).to.have.property('shield', 'shield_warrior_1'); + expect(user.items.gear.equipped).to.have.property('weapon', 'weapon_warrior_1'); + }); + it('does not buy equipment without enough Gold', () => { user.stats.gp = 20;