Ports IV bags from TG

Ports the iv bag portion of https://github.com/tgstation/tgstation/pull/44531/files from tg.
This commit is contained in:
shellspeed1
2020-06-18 02:30:58 -07:00
parent 4d0421f9cd
commit b490f02c78
9 changed files with 67 additions and 4 deletions
@@ -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
@@ -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, "<span class='warning'>Uh... whoops! You accidentally spill the content of the bag onto yourself.</span>")
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, "<span class='notice'>You seal the bag.</span>")
/obj/item/reagent_containers/chem_pack/examine()
. = ..()
if(sealed)
. += "<span class='notice'>The bag is sealed shut.</span>"
else
. += "<span class='notice'>Alt-click to seal it.</span>"
obj/item/reagent_containers/chem_pack/attack_self(mob/user)
if(sealed)
return
..()
@@ -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 = 2000)
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."
@@ -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