diff --git a/src/servers/sapphire_zone/Actor/PlayerInventory.cpp b/src/servers/sapphire_zone/Actor/PlayerInventory.cpp index 2eb5d6f4..166412cf 100644 --- a/src/servers/sapphire_zone/Actor/PlayerInventory.cpp +++ b/src/servers/sapphire_zone/Actor/PlayerInventory.cpp @@ -496,8 +496,7 @@ Core::ItemPtr Core::Entity::Player::addItem( uint32_t catalogId, uint32_t quanti return nullptr; } - if( itemInfo->isEquippable ) - quantity = 1; + quantity = std::min< uint32_t >( quantity, itemInfo->stackSize ); // used for item obtain notification uint32_t originalQuantity = quantity; @@ -525,6 +524,10 @@ Core::ItemPtr Core::Entity::Player::addItem( uint32_t catalogId, uint32_t quanti if( count >= maxStack ) continue; + // check slot is same quality + if( item->isHq() != isHq ) + continue; + // update stack uint32_t newStackSize = count + quantity; uint32_t overflow = 0;