diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 0832f7ee2..ee1b94fe9 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -1525,7 +1525,9 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap) else { uint32 mailOnFull = sWorld->getIntConfig(CONFIG_LFG_MAIL_ITEM_ON_FULL_INVENTORY); - if (mailOnFull == MAIL_ITEM_ON_FULL_INVENTORY_EVERYWHERE || (mailOnFull == MAIL_ITEM_ON_FULL_INVENTORY_LFG_ONLY && isLFGGroup())) + // Only mail when bags are genuinely full. Unique/max-count failures must + // leave the item on the corpse so it can be re-rolled or freely looted. + if (msg == EQUIP_ERR_INVENTORY_FULL && (mailOnFull == MAIL_ITEM_ON_FULL_INVENTORY_EVERYWHERE || (mailOnFull == MAIL_ITEM_ON_FULL_INVENTORY_LFG_ONLY && isLFGGroup()))) { item->is_looted = true; roll->getLoot()->NotifyItemRemoved(roll->itemSlot); @@ -1607,7 +1609,9 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap) else { uint32 mailOnFull = sWorld->getIntConfig(CONFIG_LFG_MAIL_ITEM_ON_FULL_INVENTORY); - if (mailOnFull == MAIL_ITEM_ON_FULL_INVENTORY_EVERYWHERE || (mailOnFull == MAIL_ITEM_ON_FULL_INVENTORY_LFG_ONLY && isLFGGroup())) + // Only mail when bags are genuinely full. Unique/max-count failures must + // leave the item on the corpse so it can be re-rolled or freely looted. + if (msg == EQUIP_ERR_INVENTORY_FULL && (mailOnFull == MAIL_ITEM_ON_FULL_INVENTORY_EVERYWHERE || (mailOnFull == MAIL_ITEM_ON_FULL_INVENTORY_LFG_ONLY && isLFGGroup()))) { item->is_looted = true; roll->getLoot()->NotifyItemRemoved(roll->itemSlot);