diff --git a/baystation12.dme b/baystation12.dme
index abd8aeb6389..425d46bf57a 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -1260,6 +1260,7 @@
#include "code\modules\virus2\antibodies.dm"
#include "code\modules\virus2\curer.dm"
#include "code\modules\virus2\disease2.dm"
+#include "code\modules\virus2\centrifuge.dm"
#include "code\modules\virus2\diseasesplicer.dm"
#include "code\modules\virus2\dishincubator.dm"
#include "code\modules\virus2\effect.dm"
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index b8e86ec0f97..a35eba0f818 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -31,7 +31,8 @@
/obj/machinery/disposal,
/obj/machinery/apiary,
/mob/living/simple_animal/cow,
- /mob/living/simple_animal/hostile/retaliate/goat )
+ /mob/living/simple_animal/hostile/retaliate/goat,
+ /obj/machinery/computer/centrifuge )
examine()
set src in view()
diff --git a/code/modules/virus2/centrifuge.dm b/code/modules/virus2/centrifuge.dm
new file mode 100644
index 00000000000..a0330f796c8
--- /dev/null
+++ b/code/modules/virus2/centrifuge.dm
@@ -0,0 +1,157 @@
+/obj/machinery/computer/centrifuge
+ name = "Isolation Centrifuge"
+ desc = "Used to separate things with different weight. Spin 'em round, round, right round."
+ icon = 'icons/obj/virology.dmi'
+ icon_state = "centrifuge"
+ var/curing
+ var/isolating
+
+ var/obj/item/weapon/reagent_containers/glass/beaker/vial/sample = null
+ var/datum/disease2/disease/virus2 = null
+
+/obj/machinery/computer/centrifuge/attackby(var/obj/I as obj, var/mob/user as mob)
+ if(istype(I, /obj/item/weapon/screwdriver))
+ return ..(I,user)
+
+ if(istype(I,/obj/item/weapon/reagent_containers/glass/beaker/vial))
+ var/mob/living/carbon/C = user
+ if(!sample)
+ sample = I
+ C.drop_item()
+ I.loc = src
+
+ src.attack_hand(user)
+ return
+
+/obj/machinery/computer/centrifuge/update_icon()
+ ..()
+ if(! (stat & (BROKEN|NOPOWER)) && (isolating || curing))
+ icon_state = "centrifuge_moving"
+
+/obj/machinery/computer/centrifuge/attack_hand(var/mob/user as mob)
+ if(..())
+ return
+ user.machine = src
+ var/dat= ""
+ if(curing)
+ dat = "Antibody isolation in progress"
+ else if(isolating)
+ dat = "Pathogen isolation in progress"
+ else
+ dat += "
Blood sample:"
+ dat += "
| " + if(sample) + var/datum/reagent/blood/B = locate(/datum/reagent/blood) in sample.reagents.reagent_list + if(B) + dat += "Sample inserted." + if (B.data["antibodies"]) + dat += " | |
| " + dat += "Antibodies: [antigens2string(B.data["antibodies"])]" + dat += " | Isolate" + + var/list/virus = B.data["virus2"] + for (var/ID in virus) + var/datum/disease2/disease/V = virus[ID] + dat += " |
| pathogen #[V.uniqueID]" + dat += " | Isolate" + else + dat += "Please check container contents." + dat += " |
| Eject container" + else + dat = "Please insert a container." + dat += " |