diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index 49340e999c9..5ffbce661a6 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -26016,7 +26016,7 @@
},
/area/security/permabrig)
"blf" = (
-/obj/structure/foodcart,
+/obj/machinery/smartfridge/foodcart,
/obj/effect/decal/warning_stripes/yellow,
/obj/machinery/firealarm{
dir = 1;
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index ad41c5fb5fd..ce9bba6d8ad 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -43751,7 +43751,7 @@
name = "\improper Secure Lab"
})
"bPO" = (
-/obj/structure/foodcart,
+/obj/machinery/smartfridge/foodcart,
/turf/simulated/floor/plasteel{
icon_state = "showroomfloor"
},
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index d1cb0d1e5ea..d0a78eba5d1 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -30207,7 +30207,7 @@
},
/area/chapel/main)
"bpL" = (
-/obj/structure/foodcart,
+/obj/machinery/smartfridge/foodcart,
/turf/simulated/floor/plasteel{
icon_state = "cafeteria"
},
diff --git a/code/game/objects/structures/foodcart.dm b/code/game/objects/structures/foodcart.dm
deleted file mode 100644
index 0253ad66952..00000000000
--- a/code/game/objects/structures/foodcart.dm
+++ /dev/null
@@ -1,180 +0,0 @@
-/obj/structure/foodcart
- name = "food cart"
- desc = "A cart for transporting food and drinks."
- icon = 'icons/obj/foodcart.dmi'
- icon_state = "cart"
- face_while_pulling = FALSE
- anchored = 0
- density = 1
- //Food slots
- var/list/food_slots[6]
- //var/obj/item/reagent_containers/food/snacks/food1 = null
- //var/obj/item/reagent_containers/food/snacks/food2 = null
- //var/obj/item/reagent_containers/food/snacks/food3 = null
- //var/obj/item/reagent_containers/food/snacks/food4 = null
- //var/obj/item/reagent_containers/food/snacks/food5 = null
- //var/obj/item/reagent_containers/food/snacks/food6 = null
- //Drink slots
- var/list/drink_slots[6]
- //var/obj/item/reagent_containers/food/drinks/drink1 = null
- //var/obj/item/reagent_containers/food/drinks/drink2 = null
- //var/obj/item/reagent_containers/food/drinks/drink3 = null
- //var/obj/item/reagent_containers/food/drinks/drink4 = null
- //var/obj/item/reagent_containers/food/drinks/drink5 = null
- //var/obj/item/reagent_containers/food/drinks/drink6 = null
-
-/obj/structure/foodcart/proc/put_in_cart(obj/item/I, mob/user)
- user.drop_item()
- I.loc = src
- updateUsrDialog()
- to_chat(user, "You put [I] into [src].")
- return
-
-/obj/structure/foodcart/attackby(obj/item/I, mob/user, params)
- var/fail_msg = "There are no open spaces for this in [src]."
- if(!I.is_robot_module())
- if(istype(I, /obj/item/reagent_containers/food/snacks))
- var/success = 0
- for(var/s=1,s<=6,s++)
- if(!food_slots[s])
- put_in_cart(I, user)
- food_slots[s]=I
- update_icon()
- success = 1
- break
- if(!success)
- to_chat(user, fail_msg)
- else if(istype(I, /obj/item/reagent_containers/food/drinks))
- var/success = 0
- for(var/s=1,s<=6,s++)
- if(!drink_slots[s])
- put_in_cart(I, user)
- drink_slots[s]=I
- update_icon()
- success = 1
- break
- if(!success)
- to_chat(user, fail_msg)
- else if(istype(I, /obj/item/wrench))
- if(!anchored && !isinspace())
- playsound(src.loc, I.usesound, 50, 1)
- user.visible_message( \
- "[user] tightens \the [src]'s casters.", \
- " You have tightened \the [src]'s casters.", \
- "You hear ratchet.")
- anchored = 1
- else if(anchored)
- playsound(src.loc, I.usesound, 50, 1)
- user.visible_message( \
- "[user] loosens \the [src]'s casters.", \
- " You have loosened \the [src]'s casters.", \
- "You hear ratchet.")
- anchored = 0
- else
- to_chat(usr, "You cannot interface your modules [src]!")
-
-/obj/structure/foodcart/attack_hand(mob/user)
- user.set_machine(src)
- var/dat
- if(food_slots[1])
- dat += "[food_slots[1]]
"
- if(food_slots[2])
- dat += "[food_slots[2]]
"
- if(food_slots[3])
- dat += "[food_slots[3]]
"
- if(food_slots[4])
- dat += "[food_slots[4]]
"
- if(food_slots[5])
- dat += "[food_slots[5]]
"
- if(food_slots[6])
- dat += "[food_slots[6]]
"
- if(drink_slots[1])
- dat += "[drink_slots[1]]
"
- if(drink_slots[2])
- dat += "[drink_slots[2]]
"
- if(drink_slots[3])
- dat += "[drink_slots[3]]
"
- if(drink_slots[4])
- dat += "[drink_slots[4]]
"
- if(drink_slots[5])
- dat += "[drink_slots[5]]
"
- if(drink_slots[6])
- dat += "[drink_slots[6]]
"
- var/datum/browser/popup = new(user, "foodcart", name, 240, 160)
- popup.set_content(dat)
- popup.open()
-
-/obj/structure/foodcart/Topic(href, href_list)
- if(!in_range(src, usr))
- return
- if(!isliving(usr))
- return
- var/mob/living/user = usr
- if(href_list["f1"])
- if(food_slots[1])
- user.put_in_hands(food_slots[1])
- to_chat(user, "You take [food_slots[1]] from [src].")
- food_slots[1] = null
- if(href_list["f2"])
- if(food_slots[2])
- user.put_in_hands(food_slots[2])
- to_chat(user, "You take [food_slots[2]] from [src].")
- food_slots[2] = null
- if(href_list["f3"])
- if(food_slots[3])
- user.put_in_hands(food_slots[3])
- to_chat(user, "You take [food_slots[3]] from [src].")
- food_slots[3] = null
- if(href_list["f4"])
- if(food_slots[4])
- user.put_in_hands(food_slots[4])
- to_chat(user, "You take [food_slots[4]] from [src].")
- food_slots[4] = null
- if(href_list["f5"])
- if(food_slots[5])
- user.put_in_hands(food_slots[5])
- to_chat(user, "You take [food_slots[5]] from [src].")
- food_slots[5] = null
- if(href_list["f6"])
- if(food_slots[6])
- user.put_in_hands(food_slots[6])
- to_chat(user, "You take [food_slots[6]] from [src].")
- food_slots[6] = null
- if(href_list["d1"])
- if(drink_slots[1])
- user.put_in_hands(drink_slots[1])
- to_chat(user, "You take [drink_slots[1]] from [src].")
- drink_slots[1] = null
- if(href_list["d2"])
- if(drink_slots[2])
- user.put_in_hands(drink_slots[2])
- to_chat(user, "You take [drink_slots[2]] from [src].")
- drink_slots[2] = null
- if(href_list["d3"])
- if(drink_slots[3])
- user.put_in_hands(drink_slots[3])
- to_chat(user, "You take [drink_slots[3]] from [src].")
- drink_slots[3] = null
- if(href_list["d4"])
- if(drink_slots[4])
- user.put_in_hands(drink_slots[4])
- to_chat(user, "You take [drink_slots[4]] from [src].")
- drink_slots[4] = null
- if(href_list["d5"])
- if(drink_slots[5])
- user.put_in_hands(drink_slots[5])
- to_chat(user, "You take [drink_slots[5]] from [src].")
- drink_slots[5] = null
- if(href_list["d6"])
- if(drink_slots[6])
- user.put_in_hands(drink_slots[6])
- to_chat(user, "You take [drink_slots[6]] from [src].")
- drink_slots[6] = null
-
- update_icon() //Not really needed without overlays, but keeping just in case
- updateUsrDialog()
-
-/obj/structure/foodcart/deconstruct(disassembled = TRUE)
- if(!(flags & NODECONSTRUCT))
- new /obj/item/stack/sheet/metal(loc, 4)
- qdel(src)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index 4c712b9ece6..04a7334c4b3 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -396,6 +396,44 @@
/obj/item/seeds
))
+/**
+ * # Food and Drink Cart
+ *
+ * Variant of the [Smart Fridge][/obj/machinery/smartfridge] that holds food and drinks in a mobile form
+ */
+/obj/machinery/smartfridge/foodcart
+ name = "\improper Food and Drink Cart"
+ desc = "A portable cart for hawking your food and drink wares around the station"
+ icon = 'icons/obj/foodcart.dmi'
+ icon_state = "cart"
+ anchored = FALSE
+ use_power = NO_POWER_USE
+ visible_contents = FALSE
+ face_while_pulling = FALSE
+
+
+/obj/machinery/smartfridge/foodcart/Initialize(mapload)
+ . = ..()
+ accepted_items_typecache = typecacheof(list(
+ /obj/item/reagent_containers/food/snacks,
+ /obj/item/reagent_containers/food/drinks,
+ /obj/item/reagent_containers/food/condiment,
+ ))
+
+/obj/machinery/smartfridge/foodcart/screwdriver_act(mob/living/user, obj/item/I)
+ return
+
+/obj/machinery/smartfridge/foodcart/crowbar_act(mob/living/user, obj/item/I)
+ return
+
+/obj/machinery/smartfridge/foodcart/exchange_parts()
+ return
+
+/obj/machinery/smartfridge/foodcart/deconstruct(disassembled = TRUE)
+ if(!(flags & NODECONSTRUCT))
+ new /obj/item/stack/sheet/metal(loc, 4)
+ qdel(src)
+
/**
* # Circuit Boards Storage
*
diff --git a/icons/obj/foodcart.dmi b/icons/obj/foodcart.dmi
index 360c14f574a..9067c57d8a4 100644
Binary files a/icons/obj/foodcart.dmi and b/icons/obj/foodcart.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 44f2ddc96ac..fd158726a4c 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1063,7 +1063,6 @@
#include "code\game\objects\structures\fence.dm"
#include "code\game\objects\structures\flora.dm"
#include "code\game\objects\structures\fluff.dm"
-#include "code\game\objects\structures\foodcart.dm"
#include "code\game\objects\structures\girders.dm"
#include "code\game\objects\structures\grille.dm"
#include "code\game\objects\structures\guillotine.dm"