diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index ad5df7cea0..cd9e9dc83f 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -13,7 +13,8 @@
var/obj/item/reagent_containers/beaker
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/glass,
+ /obj/item/reagent_containers/chem_pack))
/obj/machinery/iv_drip/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index 315b342ea7..ee515d321f 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -391,7 +391,7 @@
STR.storage_flags = STORAGE_FLAGS_VOLUME_DEFAULT
STR.max_volume = STORAGE_VOLUME_CHEMISTRY_BAG
STR.insert_preposition = "in"
- STR.can_hold = typecacheof(list(/obj/item/reagent_containers/pill, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/syringe/dart))
+ STR.can_hold = typecacheof(list(/obj/item/reagent_containers/pill, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/syringe/dart, /obj/item/reagent_containers/chem_pack))
/*
* Biowaste bag (mostly for xenobiologists)
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 684f8709ac..4a396c9210 100755
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -180,7 +180,8 @@
/obj/item/implantcase,
/obj/item/implant,
/obj/item/implanter,
- /obj/item/pinpointer/crew
+ /obj/item/pinpointer/crew,
+ /obj/item/reagent_containers/chem_pack
))
/obj/item/storage/belt/medical/surgery_belt_adv
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index e082c15741..37b6baaa0b 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -418,7 +418,8 @@
/obj/item/circuitboard/computer/crew,
/obj/item/stack/sheet/glass,
/obj/item/stack/sheet/mineral/silver,
- /obj/item/organ_storage
+ /obj/item/organ_storage,
+ /obj/item/reagent_containers/chem_pack
))
//hijacking the minature first aids for hypospray boxes. <3
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index 67a636eb9c..891a6abec2 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -463,7 +463,7 @@
return TRUE
if(!O.reagents || !O.reagents.reagent_list.len) // other empty containers not accepted
return FALSE
- if(istype(O, /obj/item/reagent_containers/syringe) || istype(O, /obj/item/reagent_containers/glass/bottle) || istype(O, /obj/item/reagent_containers/glass/beaker) || istype(O, /obj/item/reagent_containers/spray) || istype(O, /obj/item/reagent_containers/medspray))
+ if(istype(O, /obj/item/reagent_containers/syringe) || istype(O, /obj/item/reagent_containers/glass/bottle) || istype(O, /obj/item/reagent_containers/glass/beaker) || istype(O, /obj/item/reagent_containers/spray) || istype(O, /obj/item/reagent_containers/medspray) || istype(O, /obj/item/reagent_containers/chem_pack))
return TRUE
return FALSE
diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm
new file mode 100644
index 0000000000..35ec588ec5
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/chem_pack.dm
@@ -0,0 +1,51 @@
+/obj/item/reagent_containers/chem_pack
+ name = "intravenous medicine bag"
+ desc = "A plastic pressure bag, or 'chem pack', for IV administration of drugs. It is fitted with a thermosealing strip."
+ icon = 'icons/obj/bloodpack.dmi'
+ icon_state = "chempack"
+ volume = 100
+ reagent_flags = OPENCONTAINER
+ spillable = TRUE
+ obj_flags = UNIQUE_RENAME
+ resistance_flags = ACID_PROOF
+ var/sealed = FALSE
+
+/obj/item/reagent_containers/chem_pack/on_reagent_change(changetype)
+ update_icon()
+
+/obj/item/reagent_containers/chem_pack/update_icon()
+ cut_overlays()
+
+ var/v = min(round(reagents.total_volume / volume * 10), 10)
+ if(v > 0)
+ var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "chempack1")
+ filling.icon_state = "chempack[v]"
+ filling.color = mix_color_from_reagents(reagents.reagent_list)
+ add_overlay(filling)
+
+/obj/item/reagent_containers/chem_pack/AltClick(mob/living/user)
+ if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERY) && !sealed)
+ if(iscarbon(user) && (HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)))
+ to_chat(user, "Uh... whoops! You accidentally spill the content of the bag onto yourself.")
+ SplashReagents(user)
+ return
+ else
+ DISABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER)
+ ENABLE_BITFIELD(reagents.reagents_holder_flags, DRAWABLE |INJECTABLE )
+ spillable = FALSE
+ sealed = TRUE
+ to_chat(user, "You seal the bag.")
+
+
+/obj/item/reagent_containers/chem_pack/examine()
+ . = ..()
+ if(sealed)
+ . += "The bag is sealed shut."
+ else
+ . += "Alt-click to seal it."
+
+
+obj/item/reagent_containers/chem_pack/attack_self(mob/user)
+ if(sealed)
+ return
+ ..()
\ No newline at end of file
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index 69bf039428..e1e55f3476 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -212,6 +212,16 @@
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
+/datum/design/chem_pack
+ name = "Intravenous Medicine Bag"
+ desc = "A plastic pressure bag for IV administration of drugs."
+ id = "chem_pack"
+ build_type = PROTOLATHE
+ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
+ materials = list(/datum/material/plastic = 1500)
+ build_path = /obj/item/reagent_containers/chem_pack
+ category = list("Medical Designs")
+
/datum/design/cloning_disk
name = "Cloning Data Disk"
desc = "Produce additional disks for storing genetic data."
diff --git a/code/modules/research/techweb/nodes/biotech_nodes.dm b/code/modules/research/techweb/nodes/biotech_nodes.dm
index 8f7d978a99..977f8685d6 100644
--- a/code/modules/research/techweb/nodes/biotech_nodes.dm
+++ b/code/modules/research/techweb/nodes/biotech_nodes.dm
@@ -5,7 +5,7 @@
display_name = "Biological Technology"
description = "What makes us tick." //the MC, silly!
prereq_ids = list("base")
- design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen", "telescopiciv", "medspray","genescanner")
+ design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen", "telescopiciv", "medspray","genescanner","chem_pack")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
/datum/techweb_node/adv_biotech
diff --git a/icons/obj/bloodpack.dmi b/icons/obj/bloodpack.dmi
index 82b4c2e543..2355a81f8f 100644
Binary files a/icons/obj/bloodpack.dmi and b/icons/obj/bloodpack.dmi differ
diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi
index f07928741d..05337721c7 100644
Binary files a/icons/obj/reagentfillings.dmi and b/icons/obj/reagentfillings.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index a1ff669a07..5e9d6e1320 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2992,6 +2992,7 @@
#include "code\modules\reagents\reagent_containers\blood_pack.dm"
#include "code\modules\reagents\reagent_containers\borghydro.dm"
#include "code\modules\reagents\reagent_containers\bottle.dm"
+#include "code\modules\reagents\reagent_containers\chem_pack.dm"
#include "code\modules\reagents\reagent_containers\dropper.dm"
#include "code\modules\reagents\reagent_containers\glass.dm"
#include "code\modules\reagents\reagent_containers\hypospray.dm"