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))