diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
deleted file mode 100644
index d9e78224..00000000
--- a/code/game/machinery/iv_drip.dm
+++ /dev/null
@@ -1,220 +0,0 @@
-#define IV_TAKING 0
-#define IV_INJECTING 1
-
-/obj/machinery/iv_drip
- name = "\improper IV drip"
- desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate."
- icon = 'icons/obj/iv_drip.dmi'
- icon_state = "iv_drip"
- anchored = FALSE
- mouse_drag_pointer = MOUSE_ACTIVE_POINTER
- var/mob/living/carbon/attached = null
- var/mode = IV_INJECTING
- var/obj/item/reagent_containers/beaker = null
- var/static/list/drip_containers = typecacheof(list(/obj/item/reagent_containers/blood,
- /obj/item/reagent_containers/food,
- /obj/item/reagent_containers/glass.
- /obj/item/reagent_containers/chem_pack))
-
-/obj/machinery/iv_drip/Initialize()
- . = ..()
- update_icon()
-
-/obj/machinery/iv_drip/Destroy()
- attached = null
- QDEL_NULL(beaker)
- return ..()
-
-/obj/machinery/iv_drip/update_icon()
- if(attached)
- if(mode)
- icon_state = "injecting"
- else
- icon_state = "donating"
- else
- if(mode)
- icon_state = "injectidle"
- else
- icon_state = "donateidle"
-
- cut_overlays()
-
- if(beaker)
- if(attached)
- add_overlay("beakeractive")
- else
- add_overlay("beakeridle")
- if(beaker.reagents.total_volume)
- var/mutable_appearance/filling_overlay = mutable_appearance('icons/obj/iv_drip.dmi', "reagent")
-
- var/percent = round((beaker.reagents.total_volume / beaker.volume) * 100)
- switch(percent)
- if(0 to 9)
- filling_overlay.icon_state = "reagent0"
- if(10 to 24)
- filling_overlay.icon_state = "reagent10"
- if(25 to 49)
- filling_overlay.icon_state = "reagent25"
- if(50 to 74)
- filling_overlay.icon_state = "reagent50"
- if(75 to 79)
- filling_overlay.icon_state = "reagent75"
- if(80 to 90)
- filling_overlay.icon_state = "reagent80"
- if(91 to INFINITY)
- filling_overlay.icon_state = "reagent100"
-
- filling_overlay.color = mix_color_from_reagents(beaker.reagents.reagent_list)
- add_overlay(filling_overlay)
-
-/obj/machinery/iv_drip/MouseDrop(mob/living/target)
- . = ..()
- if(!ishuman(usr) || !usr.canUseTopic(src, BE_CLOSE) || !isliving(target))
- return
-
- if(attached)
- visible_message("[attached] is detached from [src].")
- attached = null
- update_icon()
- return
-
- if(!target.has_dna())
- to_chat(usr, "The drip beeps: Warning, incompatible creature!")
- return
-
- if(Adjacent(target) && usr.Adjacent(target))
- if(beaker)
- usr.visible_message("[usr] attaches [src] to [target].", "You attach [src] to [target].")
- attached = target
- START_PROCESSING(SSmachines, src)
- update_icon()
- else
- to_chat(usr, "There's nothing attached to the IV drip!")
-
-
-/obj/machinery/iv_drip/attackby(obj/item/W, mob/user, params)
- if(is_type_in_typecache(W, drip_containers))
- if(beaker)
- to_chat(user, "There is already a reagent container loaded!")
- return
- if(!user.transferItemToLoc(W, src))
- return
- beaker = W
- to_chat(user, "You attach [W] to [src].")
- update_icon()
- return
- else
- return ..()
-
-/obj/machinery/iv_drip/deconstruct(disassembled = TRUE)
- if(!(flags_1 & NODECONSTRUCT_1))
- new /obj/item/stack/sheet/metal(loc)
- qdel(src)
-
-/obj/machinery/iv_drip/process()
- if(!attached)
- return PROCESS_KILL
-
- if(!(get_dist(src, attached) <= 1 && isturf(attached.loc)))
- to_chat(attached, "The IV drip needle is ripped out of you!")
- attached.apply_damage(3, BRUTE, pick(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM))
- attached = null
- update_icon()
- return PROCESS_KILL
-
- if(beaker)
- // Give blood
- if(mode)
- if(beaker.reagents.total_volume)
- var/transfer_amount = 5
- if(istype(beaker, /obj/item/reagent_containers/blood))
- // speed up transfer on blood packs
- transfer_amount = 10
- beaker.reagents.trans_to(attached, transfer_amount, method = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages
- update_icon()
-
- // Take blood
- else
- var/amount = beaker.reagents.maximum_volume - beaker.reagents.total_volume
- amount = min(amount, 4)
- // If the beaker is full, ping
- if(!amount)
- if(prob(5))
- visible_message("[src] pings.")
- return
-
- // If the human is losing too much blood, beep.
- if(attached.blood_volume < ( (BLOOD_VOLUME_SAFE*attached.blood_ratio) && prob(5) ) )
- visible_message("[src] beeps loudly.")
- playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
- attached.transfer_blood_to(beaker, amount)
- update_icon()
-
-/obj/machinery/iv_drip/attack_hand(mob/user)
- . = ..()
- if(.)
- return
- if(!ishuman(user))
- return
- if(attached)
- visible_message("[attached] is detached from [src]")
- attached = null
- update_icon()
- return
- else if(beaker)
- eject_beaker(user)
- else
- toggle_mode()
-
-/obj/machinery/iv_drip/verb/eject_beaker()
- set category = "Object"
- set name = "Remove IV Container"
- set src in view(1)
-
- if(!isliving(usr))
- to_chat(usr, "You can't do that!")
- return
-
- if(usr.incapacitated())
- return
-
- if(beaker)
- beaker.forceMove(drop_location())
- beaker = null
- update_icon()
-
-/obj/machinery/iv_drip/verb/toggle_mode()
- set category = "Object"
- set name = "Toggle Mode"
- set src in view(1)
-
- if(!isliving(usr))
- to_chat(usr, "You can't do that!")
- return
-
- if(usr.incapacitated())
- return
-
- mode = !mode
- to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].")
- update_icon()
-
-/obj/machinery/iv_drip/examine(mob/user)
- ..()
- if(get_dist(user, src) > 2)
- return
-
- to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].")
-
- if(beaker)
- if(beaker.reagents && beaker.reagents.reagent_list.len)
- to_chat(user, "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.")
- else
- to_chat(user, "Attached is an empty [beaker.name].")
- else
- to_chat(user, "No chemicals are attached.")
-
- to_chat(user, "[attached ? attached : "No one"] is attached.")
-
-#undef IV_TAKING
-#undef IV_INJECTING