diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 34d28597ee2..c9ef98a6676 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -156,6 +156,14 @@ /obj/item/reagent_containers/food/snacks/egg, /obj/item/reagent_containers/food/snacks/meat) +// Override grouping key to group grown items by plantname instead of just type +/obj/item/storage/bag/produce/get_item_grouping_key(obj/item/I) + if(istype(I, /obj/item/reagent_containers/food/snacks/grown)) + var/obj/item/reagent_containers/food/snacks/grown/G = I + if(G.plantname) + return "[I.type]|[G.plantname]" // Use combination of type and plantname + return I.type + // ----------------------------- // Sheet Snatcher diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 25ffb18b501..503bd7d7b17 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -94,6 +94,11 @@ if (itemCount) item.maptext = "[itemCount]" +// Helper proc to get grouping key for items in display_contents_with_number mode +// Can be overridden by subtypes to customize grouping behavior +/obj/item/storage/proc/get_item_grouping_key(obj/item/I) + return I.type + /obj/item/storage/proc/generateHUD(datum/hud/data) RETURN_TYPE(/atom/movable/hud_element) var/atom/movable/hud_element/main = new("storage") @@ -165,7 +170,7 @@ filtered_contents_last = new //last of x item type in storage filtered_contents_count = new //total number of x item type in storage for(var/obj/item/I in contents) //count items and remember last item for each type - var/item_type = I.type + var/item_type = get_item_grouping_key(I) if (filtered_contents_count[item_type]) filtered_contents_count[item_type]++ else