diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index c516cfc12f0..d1d98e1c744 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -215,32 +215,28 @@ desired = text2num(params["amount"]) else desired = input("How many items?", "How many items would you like to take out?", 1) as null|num + if(!desired) + return FALSE if(QDELETED(src) || QDELETED(usr) || !usr.Adjacent(src)) // Sanity checkin' in case stupid stuff happens while we wait for input() return FALSE - if(desired == 1 && Adjacent(usr) && !issilicon(usr)) - for(var/obj/item/O in src) - if(O.name == params["name"]) - if(O in component_parts) - CRASH("Attempted removal of [O] component_part from vending machine via vending interface.") - dispense(O, usr) - break - if (visible_contents) - update_appearance() - return TRUE - - for(var/obj/item/O in src) + for(var/obj/item/dispensed_item in src) if(desired <= 0) break - if(O.name == params["name"]) - if(O in component_parts) - CRASH("Attempted removal of [O] component_part from vending machine via vending interface.") - dispense(O, usr) + // Grab the first item in contents which name matches our passed name. + // format_text() is used here to strip \improper and \proper from both names, + // which is required for correct string comparison between them. + if(format_text(dispensed_item.name) == format_text(params["name"])) + if(dispensed_item in component_parts) + CRASH("Attempted removal of [dispensed_item] component_part from smartfridge via smartfridge interface.") + dispense(dispensed_item, usr) desired-- + if (visible_contents) update_appearance() return TRUE + return FALSE