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"