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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