diff --git a/code/ryzom/client/src/item_group_manager.cpp b/code/ryzom/client/src/item_group_manager.cpp index c1c49414e..8c18a6e37 100644 --- a/code/ryzom/client/src/item_group_manager.cpp +++ b/code/ryzom/client/src/item_group_manager.cpp @@ -530,7 +530,6 @@ bool CItemGroupManager::equipGroup(std::string name, bool pullBefore) {ITEM_TYPE::BRACELET, false}, {ITEM_TYPE::EARING, false}, {ITEM_TYPE::RING, false}, - {ITEM_TYPE::DAGGER, false}, }; std::vector duals; std::vector items = matchingItems(group, INVENTORIES::TInventory::bag); @@ -538,9 +537,10 @@ bool CItemGroupManager::equipGroup(std::string name, bool pullBefore) { CInventoryItem item = items[i]; ITEM_TYPE::TItemType itemType = item.pCS->asItemSheet()->ItemType; - // Special case for dagger (and all other items that can be equipped both right AND left hand, currently it's only dagger) - // We don't equip the one intended for left hand right away (it will be done in duals items later), let right hand be normally equipped - if(itemType == ITEM_TYPE::DAGGER && item.slot == SLOT_EQUIPMENT::HANDL) + // We'll equip items in left hand later (the right hand will be normally equipped) + // This way, if we switch from 2 hands to 2 * 1 hands, both hands will be equipped correctly (first right, which will remove the 2 hands, then left) + // If we don't, we might try to equip the left hand first, which will do nothing because we have a 2 hands equipped + if(item.slot == SLOT_EQUIPMENT::HANDL) { duals.push_back(item); continue; @@ -578,6 +578,8 @@ bool CItemGroupManager::equipGroup(std::string name, bool pullBefore) case ITEM_TYPE::RING: dstPath += ":EQUIP:" + NLMISC::toString((int)SLOT_EQUIPMENT::FINGERR);;break; case ITEM_TYPE::DAGGER: + case ITEM_TYPE::BUCKLER: + case ITEM_TYPE::SHIELD: dstPath += ":HAND:1"; break; default: break;