From b490f02c78584f09965b00d42b8347f56dd673a4 Mon Sep 17 00:00:00 2001
From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com>
Date: Thu, 18 Jun 2020 02:30:58 -0700
Subject: [PATCH] Ports IV bags from TG
Ports the iv bag portion of https://github.com/tgstation/tgstation/pull/44531/files from tg.
---
code/game/machinery/iv_drip.dm | 3 +-
code/game/objects/items/storage/bags.dm | 2 +-
.../kitchen_machinery/smartfridge.dm | 2 +-
.../reagents/reagent_containers/chem_pack.dm | 51 ++++++++++++++++++
.../research/designs/medical_designs.dm | 10 ++++
.../research/techweb/nodes/biotech_nodes.dm | 2 +-
icons/obj/bloodpack.dmi | Bin 1248 -> 1340 bytes
icons/obj/reagentfillings.dmi | Bin 4198 -> 4626 bytes
tgstation.dme | 1 +
9 files changed, 67 insertions(+), 4 deletions(-)
create mode 100644 code/modules/reagents/reagent_containers/chem_pack.dm
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 d687702af5..69ff1bb7f7 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/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..22e444e443 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 = 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."
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 82b4c2e543d8d896b1483ba17c06809357e8c164..2355a81f8f06bda4b7c051ce2d66c1c1d456e861 100644
GIT binary patch
delta 1206
zcmV;n1WEhg3A_rBBms$$C3b(WHaR0T7oS391y?^81s7jWE=dL*vaHqIv)T1a3)0
zK~#90?OIQ0+g2R@JWAI=5An8UqakF6A&=N=Of|?YdxxFciwlilb7AZf9|OsC2OoOq
zVSxp5v94(-C>M>fQ!u=a9a@G=5MuHmD$aBeZiAVWfdvJViA*J`zh&$ev<
z*%EO)f3;e@{utH3_xyiP55P+z3UI(Ve{WPw=@H=jz9kxWT{q$vKHIjfEJz6FKRi6d
zKllp(P=u1kU+r+x~KKf`}J_zLs5der`
z?E^GTTV{;GFbpup004$z1a=rXY2ed``v~Xnb_ay`-S6FU}D7{XLN8SmB@4P_xcUB1JZ@1g{9y-41{)z{vVE-8{
z9+?1f2f}xJ+#?{IuefkMQ9SY^z!<~y^fWBXLbKTf=Nw17uE_Ar0^$7qejk^gJ%R80
zD3{CRN8pv`fN>+7e{OCrxB;eV;@)D36fe;nFs|o)9Ql7qBfxdtUCw#1)HR#Uh(DdO
zqTmMr7E3T6?nBeGNPgFKac{8%egG^G;z|+Vd4oS1^Yil~n{*rpp68)hEE39)%g+x0
zUK%~bDfy)z0nhW`I1U`g0f1O5n$H3^x3&V}*;Kp@Unc`80xFe?QK?i6(cIqNUaa*z
zFSwRcglvC)(cIg&VI8xyAwNE@UP&@eGnA25!6K-!QZK!*;~>|kX@AK9d7
zcA!HCa6gp-fs^`#QK0G*q#pr6f@u!+x^ebp^XVfieFEw0@cR14RtJM7PqP~v_cNOy
zdcB@CGcyCv^KhD_Y7@wlplCAAjst1y6LKnjfa(HNBPT$00jiM`pt=CnIP(Pj2a=X;
U27{N#p#T5?07*qoM6N<$f-$u$hyVZp
delta 1113
zcmV-f1g87E3g8KlBmskwC3b&QtE}Ma=c3@^>&XQGo>VvqTu4Pb000CSNkly
z&WlRvWCWMep`l!eN;vS5rHCtq{y9@ha1u&8$nTPz&enUfr01*jU4DPM`yIdE@B6*?
zPw!sNbzP!EG#TOqzJ&d?k~Sde-8h;5CRnuaysh(NxWLE_W4?^7BF5Rp3h&Y
zRIc2o68oO~83NCQ$l-tEy6!uJVk)abB{kb
zB;;xCcUbu7B3)le1m#)aB=W;NHw=E9`zikYDR1%>OI$u8e~*8;9(mwh_5p6G#MB-H
z3x&ekalRl3c6HmXGduk&{_u+3WYTx1hrZX
zAp`)mS}nFGi8Bg(a(AC({!XVSNYwe3S1*4CK)qgnpc+%V1tez;$8lb;<3=+7#>NJ#
z?KUjG#iK_LD87H97f*X7n0)gR$?I_;nZMm`^BopncYfsu%IrVZi>EDsd;`fhKIs;a
z%$HxjGE_Y6E+B+petsUuacDFexUS35s;jSgjswa3-ENn+A3r3DB1)x_b{9DH7%*uh
z^Dizg#xKCOZEmj=wc-sm2285IPa?lo3kZT>*LB@^s%w8V8h!rJl+_RS09Ywv-`%HB
zDD>qIf`HpAMce~e)`+VlKp6J^Xe=!)4J7INK4BP=&*wGDP|NQgfLk2g#C7s3cY!br
z@qHiP_W@F^BtH&Z+un|a7jx-0`J4)r1SprwwQ{*!ljQdH_EK#ahVipHMX2VNY+4Oc!7pQ!l_!)1cVA(61)z{%hqk#}2wpm2x&IgPd
znL8gaYG}29y3L8_1G2adP!hnx!nQru*R6phZQH}b0`82Yz;Q#l3rG=cySLU&v(Lz9
z2TDyXU~B764PbNgL&w9zvwQcG*20RP%?h*!K}j;rW)a5E2bf+zO#PnVOaRjbn8r*1
f(*>Bu)C=$*+biP_+g{IL00000NkvXXu0mjft~?HI
diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi
index f07928741d30b3536f891fd7b50927d203f71cf5..05337721c7bb58179c3d734b36450efec7239087 100644
GIT binary patch
literal 4626
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