diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm
index cf1b005ebc9..95652fca993 100644
--- a/code/datums/components/storage/storage.dm
+++ b/code/datums/components/storage/storage.dm
@@ -91,6 +91,7 @@
RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, .proc/preattack_intercept)
RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/attack_self)
RegisterSignal(parent, COMSIG_ITEM_PICKUP, .proc/signal_on_pickup)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/update_actions)
RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/close_all)
RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_move)
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 7271d7d4a03..5af6bfb9cbd 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -146,13 +146,7 @@
to_chat(user, "You [open ? "close":"open"] [src].")
toggle_lock(user)
else if(open && !showpiece)
- if(showpiece_type && !istype(W, showpiece_type))
- to_chat(user, "This doesn't belong in this kind of display.")
- return TRUE
- if(user.transferItemToLoc(W, src))
- showpiece = W
- to_chat(user, "You put [W] on display.")
- update_icon()
+ insert_showpiece(W, user)
else if(glass_fix && broken && istype(W, /obj/item/stack/sheet/glass))
var/obj/item/stack/sheet/glass/G = W
if(G.get_amount() < 2)
@@ -167,6 +161,15 @@
else
return ..()
+/obj/structure/displaycase/proc/insert_showpiece(obj/item/wack, mob/user)
+ if(showpiece_type && !istype(wack, showpiece_type))
+ to_chat(user, "This doesn't belong in this kind of display.")
+ return TRUE
+ if(user.transferItemToLoc(wack, src))
+ showpiece = wack
+ to_chat(user, "You put [wack] on display.")
+ update_icon()
+
/obj/structure/displaycase/proc/toggle_lock(mob/user)
open = !open
update_icon()
@@ -384,7 +387,6 @@
density = FALSE
max_integrity = 100
req_access = null
- showpiece_type = /obj/item/reagent_containers/food
alert = FALSE //No, we're not calling the fire department because someone stole your cookie.
glass_fix = FALSE //Fixable with tools instead.
///The price of the item being sold. Altered by grab intent ID use.
@@ -577,3 +579,9 @@
/obj/structure/displaycase/forsale/kitchen
desc = "A display case with an ID-card swiper. Use your ID to purchase the contents. Meant for the bartender and chef."
req_one_access = list(ACCESS_KITCHEN, ACCESS_BAR)
+
+/obj/structure/displaycase/forsale/insert_showpiece(obj/item/wack, mob/user)
+ if(!IS_EDIBLE(wack))
+ to_chat(user, "\The [src] smartly rejects [wack], as it only accepts food and drinks.")
+ return TRUE
+ . = ..()
diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm
index c417f472307..ce66d11fd55 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm
@@ -69,11 +69,11 @@
qdel(DG)
glasses++
to_chat(user, "[src] accepts the drinking glass, sterilizing it.")
- else if(istype(O, /obj/item/reagent_containers/food/snacks))
+ else if(IS_EDIBLE(O))
if(isFull())
to_chat(user, "[src] is at full capacity.")
else
- var/obj/item/reagent_containers/food/snacks/S = O
+ var/obj/item/S = O
if(!user.transferItemToLoc(S, src))
return
if(stored_food[sanitize(S.name)])
@@ -88,11 +88,13 @@
to_chat(user, "[src] accepts a sheet of glass.")
else if(istype(O, /obj/item/storage/bag/tray))
var/obj/item/storage/bag/tray/T = O
- for(var/obj/item/reagent_containers/food/snacks/S in T.contents)
+ for(var/obj/item/S in T.contents)
if(isFull())
to_chat(user, "[src] is at full capacity.")
break
else
+ if(!IS_EDIBLE(S))
+ continue
if(SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src))
if(stored_food[sanitize(S.name)])
stored_food[sanitize(S.name)]++
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index 48164a5c218..17f96d13162 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -165,7 +165,9 @@
if(istype(O, /obj/item/storage/bag/tray))
var/obj/item/storage/T = O
var/loaded = 0
- for(var/obj/item/reagent_containers/food/snacks/S in T.contents)
+ for(var/obj/S in T.contents)
+ if(!IS_EDIBLE(S))
+ continue
if(ingredients.len >= max_n_of_items)
to_chat(user, "\The [src] is full, you can't put anything in!")
return TRUE
diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
index ad8a7e1216b..48025db8bb6 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
@@ -62,7 +62,9 @@
if(istype(O, /obj/item/storage/bag/tray))
var/obj/item/storage/T = O
var/loaded = 0
- for(var/obj/item/reagent_containers/food/snacks/S in T.contents)
+ for(var/obj/S in T.contents)
+ if(!IS_EDIBLE(S))
+ continue
var/datum/food_processor_process/P = select_recipe(S)
if(P)
if(SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src))