From 8a8e59d4ac0634a4e8a7a147e7ba0884f3a72645 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 17:48:16 -0700 Subject: [PATCH 01/17] Update iv_drip.dm --- code/game/machinery/iv_drip.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index b217c14e..d9e78224 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 = null 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() . = ..() @@ -129,9 +130,7 @@ if(istype(beaker, /obj/item/reagent_containers/blood)) // speed up transfer on blood packs transfer_amount = 10 - var/fraction = min(transfer_amount/beaker.reagents.total_volume, 1) //the fraction that is transfered of the total volume - beaker.reagents.reaction(attached, INJECT, fraction, FALSE) //make reagents reacts, but don't spam messages - beaker.reagents.trans_to(attached, transfer_amount) + beaker.reagents.trans_to(attached, transfer_amount, method = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages update_icon() // Take blood From 0ee13f9734973d61431aa4518d8c9d6c60a33fbd Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 17:57:45 -0700 Subject: [PATCH 02/17] Update bags.dm --- code/game/objects/items/storage/bags.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 4e719625..3dbf1847 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -364,7 +364,7 @@ STR.max_combined_w_class = 200 STR.max_items = 50 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)) + 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/chem_pack)) /* * Biowaste bag (mostly for xenobiologists) From 7a7b776bcbdb65d42368056aeb86f98f9cdd2973 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 17:59:58 -0700 Subject: [PATCH 03/17] Update snacks.dm --- code/modules/food_and_drinks/food/snacks.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 7eea6fb9..c996c65b 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -141,8 +141,7 @@ All foods are distributed among various categories. Use common sense. if(reagents.total_volume) SEND_SIGNAL(src, COMSIG_FOOD_EATEN, M, user) var/fraction = min(bitesize / reagents.total_volume, 1) - reagents.reaction(M, INGEST, fraction) - reagents.trans_to(M, bitesize) + reagents.trans_to(M, bitesize, transfered_by = user, method = INGEST) bitecount++ On_Consume(M) checkLiked(fraction, M) From 7f92e282870ec12a901e2daa44ecac130aa4b0f5 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 18:03:54 -0700 Subject: [PATCH 04/17] Update food_mixtures.dm --- code/modules/food_and_drinks/recipes/food_mixtures.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index d10286d2..0b479ac5 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -161,3 +161,10 @@ new /obj/item/reagent_containers/food/snacks/salad/ricebowl(location) if(holder && holder.my_atom) qdel(holder.my_atom) + +/datum/chemical_reaction/nutriconversion + name = "Nutriment Conversion" + id = "nutriconversion" + results = list(/datum/reagent/consumable/nutriment/peptides = 0.5) + required_reagents = list(/datum/reagent/consumable/nutriment/ = 0.5) + required_catalysts = list(/datum/reagent/medicine/metafactor = 0.5) From 5587b7723c56a2c5df44e6ba4b81ae32136e3290 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 18:05:55 -0700 Subject: [PATCH 05/17] Update food_mixtures.dm --- code/modules/food_and_drinks/recipes/food_mixtures.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index 0b479ac5..f88b170f 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -162,9 +162,4 @@ if(holder && holder.my_atom) qdel(holder.my_atom) -/datum/chemical_reaction/nutriconversion - name = "Nutriment Conversion" - id = "nutriconversion" - results = list(/datum/reagent/consumable/nutriment/peptides = 0.5) - required_reagents = list(/datum/reagent/consumable/nutriment/ = 0.5) - required_catalysts = list(/datum/reagent/medicine/metafactor = 0.5) + From 8425cb1361cc42c993568cb38e5a0b883c7096a5 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 18:07:40 -0700 Subject: [PATCH 06/17] Add files via upload --- .../reagents/reagent_containers/chem_pack.dm | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 code/modules/reagents/reagent_containers/chem_pack.dm 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 00000000..e8a4c843 --- /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 + + reagents.flags = NONE + reagent_flags = DRAWABLE | INJECTABLE //To allow for sabotage or ghetto use. + reagents.flags = reagent_flags + 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 From 245daa69e7d0184662b2e4b0f8eed1330b7a8d9e Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 18:10:49 -0700 Subject: [PATCH 07/17] Update medical_designs.dm --- code/modules/research/designs/medical_designs.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 33568524..011f63df 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -182,6 +182,17 @@ category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/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(MAT_PLASTIC = 2000) + build_path = /obj/item/reagent_containers/chem_pack + category = list("Medical Designs") + /datum/design/blood_bag name = "Empty Blood Bag" desc = "A small sterilized plastic bag for blood." From 03be653845813be293e09966ceb717acefed0ef3 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 18:23:10 -0700 Subject: [PATCH 08/17] Delete reagentfillings.dmi --- icons/obj/reagentfillings.dmi | Bin 3885 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 icons/obj/reagentfillings.dmi diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi deleted file mode 100644 index 1b8dacf36daaffb08e40ef7351b9d349384bf59c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3885 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 Date: Mon, 23 Sep 2019 18:23:32 -0700 Subject: [PATCH 09/17] Add files via upload --- icons/obj/reagentfillings.dmi | Bin 0 -> 4337 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/obj/reagentfillings.dmi diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi new file mode 100644 index 0000000000000000000000000000000000000000..fa74d50e5198ca768d92575ed0847362ff366824 GIT binary patch literal 4337 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 O18{V3wy(7HO!^<7M%st~ literal 0 HcmV?d00001 From 37a0d1fb19b8d55ae7ab72cc19781b8d3d5f529e Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 19:29:47 -0700 Subject: [PATCH 10/17] Delete chem_pack.dm --- .../reagents/reagent_containers/chem_pack.dm | 51 ------------------- 1 file changed, 51 deletions(-) delete mode 100644 code/modules/reagents/reagent_containers/chem_pack.dm diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm deleted file mode 100644 index e8a4c843..00000000 --- a/code/modules/reagents/reagent_containers/chem_pack.dm +++ /dev/null @@ -1,51 +0,0 @@ -/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 - - reagents.flags = NONE - reagent_flags = DRAWABLE | INJECTABLE //To allow for sabotage or ghetto use. - reagents.flags = reagent_flags - 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 From dad1e738c7f640b50bee4c7a0ff27da74f9726c0 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 19:30:11 -0700 Subject: [PATCH 11/17] Add files via upload --- .../reagents/reagent_containers/chem_pack.dm | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 code/modules/reagents/reagent_containers/chem_pack.dm 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 00000000..9a62cf47 --- /dev/null +++ b/code/modules/reagents/reagent_containers/chem_pack.dm @@ -0,0 +1,49 @@ +/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/blood_pack.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 + + reagent_flags = DRAWABLE | INJECTABLE //To allow for sabotage or ghetto use. + 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 From 112c085832a274697429c4d6c920c7aba0e61d0b Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 19:31:06 -0700 Subject: [PATCH 12/17] Delete medical_designs.dm --- .../research/designs/medical_designs.dm | 888 ------------------ 1 file changed, 888 deletions(-) delete mode 100644 code/modules/research/designs/medical_designs.dm diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm deleted file mode 100644 index 011f63df..00000000 --- a/code/modules/research/designs/medical_designs.dm +++ /dev/null @@ -1,888 +0,0 @@ -///////////////////////////////////////// -////////////Medical Tools//////////////// -///////////////////////////////////////// - -/datum/design/mmi - name = "Man-Machine Interface" - desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." - id = "mmi" - build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 1000, MAT_GLASS = 500) - construction_time = 75 - build_path = /obj/item/mmi - category = list("Misc","Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/posibrain - name = "Positronic Brain" - desc = "The latest in Artificial Intelligences." - id = "mmi_posi" - build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 1700, MAT_GLASS = 1350, MAT_GOLD = 500) //Gold, because SWAG. - construction_time = 75 - build_path = /obj/item/mmi/posibrain - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/bluespacebeaker - name = "Bluespace Beaker" - desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." - id = "bluespacebeaker" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 250, MAT_BLUESPACE = 250) - build_path = /obj/item/reagent_containers/glass/beaker/bluespace - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/noreactbeaker - name = "Cryostasis Beaker" - desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." - id = "splitbeaker" - build_type = PROTOLATHE - materials = list(MAT_METAL = 3000) - build_path = /obj/item/reagent_containers/glass/beaker/noreact - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/xlarge_beaker - name = "X-large Beaker" - id = "xlarge_beaker" - build_type = PROTOLATHE - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 3000) - build_path = /obj/item/reagent_containers/glass/beaker/plastic - category = list("Medical Designs") - -/datum/design/meta_beaker - name = "Metamaterial Beaker" - id = "meta_beaker" - build_type = PROTOLATHE - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 3000, MAT_GOLD = 1000, MAT_TITANIUM = 1000) - build_path = /obj/item/reagent_containers/glass/beaker/meta - category = list("Medical Designs") - -/datum/design/bluespacesyringe - name = "Bluespace Syringe" - desc = "An advanced syringe that can hold 60 units of chemicals" - id = "bluespacesyringe" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 2000, MAT_PLASMA = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 500) - build_path = /obj/item/reagent_containers/syringe/bluespace - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/noreactsyringe - name = "Cryo Syringe" - desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units." - id = "noreactsyringe" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 2000, MAT_GOLD = 1000) - build_path = /obj/item/reagent_containers/syringe/noreact - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/piercesyringe - name = "Piercing Syringe" - desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units." - id = "piercesyringe" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 2000, MAT_DIAMOND = 1000) - build_path = /obj/item/reagent_containers/syringe/piercing - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/medicinalsmartdart - name = "Medicinal Smartdart" - desc = "A non-harmful dart that can administer medication from a range. Once it hits a patient using it's smart nanofilter technology only medicines contained within the dart are administered to the patient. Additonally, due to capillary action, injection of chemicals past the overdose limit is prevented." - id = "medicinalsmartdart" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 100, MAT_PLASTIC = 100, MAT_METAL = 100) - build_path = /obj/item/reagent_containers/syringe/dart - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/bluespacesmartdart - name = "bluespace smartdart" - desc = "A non-harmful dart that can administer medication from a range. Once it hits a patient using it's smart nanofilter technology only medicines contained within the dart are administered to the patient. Additonally, due to capillary action, injection of chemicals past the overdose limit is prevented. Has an extended volume capacity thanks to bluespace foam." - id = "bluespacesmartdart" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 250, MAT_PLASTIC = 250, MAT_METAL = 250, MAT_BLUESPACE = 250) - build_path = /obj/item/reagent_containers/syringe/dart/bluespace - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/smartdartgun - name = "dart gun" - desc = "A compressed air gun, designed to fit medicinal darts for application of medicine for those patients just out of reach." - id = "smartdartgun" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 500, MAT_PLASTIC = 1000, MAT_METAL = 500) - build_path = /obj/item/gun/syringe/dart - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/bluespacebodybag - name = "Bluespace Body Bag" - desc = "A bluespace body bag, powered by experimental bluespace technology. It can hold loads of bodies and the largest of creatures." - id = "bluespacebodybag" - build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_PLASMA = 2000, MAT_DIAMOND = 500, MAT_BLUESPACE = 500) - build_path = /obj/item/bodybag/bluespace - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/plasmarefiller - name = "Plasma-Man Jumpsuit Refill" - desc = "A refill pack for the auto-extinguisher on Plasma-man suits." - id = "plasmarefiller" //Why did this have no plasmatech - build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_PLASMA = 1000) - build_path = /obj/item/extinguisher_refill - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_ALL - -/datum/design/crewpinpointer - name = "Crew Pinpointer" - desc = "Allows tracking of someone's location if their suit sensors are turned to tracking beacon." - id = "crewpinpointer" - build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 1500, MAT_GOLD = 200) - build_path = /obj/item/pinpointer/crew - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/holobarrier_med - name = "PENLITE holobarrier projector" - desc = "PENLITE holobarriers, a device that halts individuals with malicious diseases." - build_type = PROTOLATHE - build_path = /obj/item/holosign_creator/medical - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease) - id = "holobarrier_med" - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/healthanalyzer_advanced - name = "Advanced Health Analyzer" - desc = "A hand-held body scanner able to distinguish vital signs of the subject with high accuracy." - id = "healthanalyzer_advanced" - build_path = /obj/item/healthanalyzer/advanced - build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 2000, MAT_GOLD = 1500) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/medicalkit - name = "Empty Medkit" - desc = "A plastic medical kit for storging medical items." - id = "medicalkit" - build_type = PROTOLATHE - materials = list(MAT_PLASTIC = 5000) - build_path = /obj/item/storage/firstaid //So we dont spawn medical items in it - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - - -/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(MAT_PLASTIC = 2000) - build_path = /obj/item/reagent_containers/chem_pack - category = list("Medical Designs") - -/datum/design/blood_bag - name = "Empty Blood Bag" - desc = "A small sterilized plastic bag for blood." - id = "blood_bag" - build_path = /obj/item/reagent_containers/blood - build_type = PROTOLATHE - materials = list(MAT_GLASS = 1500, MAT_PLASTIC = 3500) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cloning_disk - name = "Cloning Data Disk" - desc = "Produce additional disks for storing genetic data." - id = "cloning_disk" - build_type = PROTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50) - build_path = /obj/item/disk/data - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/organbox - name = "Empty Organ Box" - desc = "A large cool box that can hold large amouts of medical tools or organs." - id = "organbox" - build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_SILVER= 3500, MAT_GOLD = 3500, MAT_PLASTIC = 5000) - build_path = /obj/item/storage/belt/organbox - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -//////////////////////////////////////// -//////////Defibrillator Tech//////////// -//////////////////////////////////////// - -/datum/design/defibrillator - name = "Defibrillator" - id = "defibrillator" - build_type = PROTOLATHE - build_path = /obj/item/defibrillator - materials = list(MAT_METAL = 8000, MAT_GLASS = 4000, MAT_SILVER = 3000, MAT_GOLD = 1500) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/defibrillator_mount - name = "Defibrillator Wall Mount" - desc = "An all-in-one mounted frame for holding defibrillators, complete with ID-locked clamps and recharging cables." - id = "defibmount" - build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_GLASS = 1000) - build_path = /obj/item/wallframe/defib_mount - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/defib_heal - name = "Defibrillator Healing disk" - desc = "An upgrade which increases the healing power of the defibrillator" - id = "defib_heal" - build_type = PROTOLATHE - materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000) - build_path = /obj/item/disk/medical/defib_heal - construction_time = 10 - category = list("Misc") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/defib_shock - name = "Defibrillator Anti-Shock Disk" - desc = "A safety upgrade that guarantees only the patient will get shocked" - id = "defib_shock" - build_type = PROTOLATHE - materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000) - build_path = /obj/item/disk/medical/defib_shock - construction_time = 10 - category = list("Misc") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/defib_decay - name = "Defibrillator Body-Decay Extender Disk" - desc = "An upgrade allowing the defibrillator to work on more decayed bodies" - id = "defib_decay" - build_type = PROTOLATHE - materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 16000, MAT_SILVER = 6000, MAT_TITANIUM = 2000) - build_path = /obj/item/disk/medical/defib_decay - construction_time = 10 - category = list("Misc") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/defib_speed - name = "Defibrillator Fast Charge Disk" - desc = "An upgrade to the defibrillator capacitors, which let it charge faster" - id = "defib_speed" - build_type = PROTOLATHE - build_path = /obj/item/disk/medical/defib_speed - materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_GOLD = 26000, MAT_SILVER = 26000) - construction_time = 10 - category = list("Misc") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -///////////////////////////////////////// -//////////Cybernetic Implants//////////// -///////////////////////////////////////// - -/datum/design/cyberimp_welding - name = "Welding Shield Eyes" - desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision." - id = "ci-welding" - build_type = PROTOLATHE | MECHFAB - construction_time = 40 - materials = list(MAT_METAL = 600, MAT_GLASS = 400) - build_path = /obj/item/organ/eyes/robotic/shield - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_gloweyes - name = "Luminescent Eyes" - desc = "A pair of cybernetic eyes that can emit multicolored light" - id = "ci-gloweyes" - build_type = PROTOLATHE | MECHFAB - construction_time = 40 - materials = list(MAT_METAL = 600, MAT_GLASS = 1000) - build_path = /obj/item/organ/eyes/robotic/glow - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_breather - name = "Breathing Tube Implant" - desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked." - id = "ci-breather" - build_type = PROTOLATHE | MECHFAB - construction_time = 35 - materials = list(MAT_METAL = 600, MAT_GLASS = 250) - build_path = /obj/item/organ/cyberimp/mouth/breathing_tube - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_surgical - name = "Surgical Arm Implant" - desc = "A set of surgical tools hidden behind a concealed panel on the user's arm." - id = "ci-surgery" - build_type = PROTOLATHE | MECHFAB - materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) - construction_time = 200 - build_path = /obj/item/organ/cyberimp/arm/surgery - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_toolset - name = "Toolset Arm Implant" - desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm." - id = "ci-toolset" - build_type = PROTOLATHE | MECHFAB - materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) - construction_time = 200 - build_path = /obj/item/organ/cyberimp/arm/toolset - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_medical_hud - name = "Medical HUD Implant" - desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control." - id = "ci-medhud" - build_type = PROTOLATHE | MECHFAB - construction_time = 50 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500) - build_path = /obj/item/organ/cyberimp/eyes/hud/medical - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_security_hud - name = "Security HUD Implant" - desc = "These cybernetic eyes will display a security HUD over everything you see. Wiggle eyes to control." - id = "ci-sechud" - build_type = PROTOLATHE | MECHFAB - construction_time = 50 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 750, MAT_GOLD = 750) - build_path = /obj/item/organ/cyberimp/eyes/hud/security - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_xray - name = "X-ray Eyes" - desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." - id = "ci-xray" - build_type = PROTOLATHE | MECHFAB - construction_time = 60 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 1000) - build_path = /obj/item/organ/eyes/robotic/xray - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_thermals - name = "Thermal Eyes" - desc = "These cybernetic eyes will give you Thermal vision. Vertical slit pupil included." - id = "ci-thermals" - build_type = PROTOLATHE | MECHFAB - construction_time = 60 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000) - build_path = /obj/item/organ/eyes/robotic/thermals - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_antidrop - name = "Anti-Drop Implant" - desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle." - id = "ci-antidrop" - build_type = PROTOLATHE | MECHFAB - construction_time = 60 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 400, MAT_GOLD = 400) - build_path = /obj/item/organ/cyberimp/brain/anti_drop - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_antistun - name = "CNS Rebooter Implant" - desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." - id = "ci-antistun" - build_type = PROTOLATHE | MECHFAB - construction_time = 60 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 1000) - build_path = /obj/item/organ/cyberimp/brain/anti_stun - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_nutriment - name = "Nutriment Pump Implant" - desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving." - id = "ci-nutriment" - build_type = PROTOLATHE | MECHFAB - construction_time = 40 - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500) - build_path = /obj/item/organ/cyberimp/chest/nutriment - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_nutriment_plus - name = "Nutriment Pump Implant PLUS" - desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." - id = "ci-nutrimentplus" - build_type = PROTOLATHE | MECHFAB - construction_time = 50 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750) - build_path = /obj/item/organ/cyberimp/chest/nutriment/plus - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_reviver - name = "Reviver Implant" - desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!" - id = "ci-reviver" - build_type = PROTOLATHE | MECHFAB - construction_time = 60 - materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 300, MAT_URANIUM = 500) - build_path = /obj/item/organ/cyberimp/chest/reviver - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cyberimp_thrusters - name = "Thrusters Set Implant" - desc = "This implant will allow you to use gas from environment or your internals for propulsion in zero-gravity areas." - id = "ci-thrusters" - build_type = PROTOLATHE | MECHFAB - construction_time = 80 - materials = list(MAT_METAL = 4000, MAT_GLASS = 2000, MAT_SILVER = 1000, MAT_DIAMOND = 1000) - build_path = /obj/item/organ/cyberimp/chest/thrusters - category = list("Misc", "Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -///////////////////////////////////////// -////////////Regular Implants///////////// -///////////////////////////////////////// - -/datum/design/implanter - name = "Implanter" - desc = "A sterile automatic implant injector." - id = "implanter" - build_type = PROTOLATHE - materials = list(MAT_METAL = 600, MAT_GLASS = 200) - build_path = /obj/item/implanter - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/implantcase - name = "Implant Case" - desc = "A glass case for containing an implant." - id = "implantcase" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 500) - build_path = /obj/item/implantcase - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/implant_sadtrombone - name = "Sad Trombone Implant Case" - desc = "Makes death amusing." - id = "implant_trombone" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 500, MAT_BANANIUM = 500) - build_path = /obj/item/implantcase/sad_trombone - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_ALL //if you get bananium you get the sad trombones. - -/datum/design/implant_chem - name = "Chemical Implant Case" - desc = "A glass case containing an implant." - id = "implant_chem" - build_type = PROTOLATHE - materials = list(MAT_GLASS = 700) - build_path = /obj/item/implantcase/chem - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/implant_tracking - name = "Tracking Implant Case" - desc = "A glass case containing an implant." - id = "implant_tracking" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) - build_path = /obj/item/implantcase/track - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL - -//Cybernetic organs - -/datum/design/cybernetic_liver - name = "Cybernetic Liver" - desc = "A cybernetic liver" - id = "cybernetic_liver" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) - build_path = /obj/item/organ/liver/cybernetic - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cybernetic_heart - name = "Cybernetic Heart" - desc = "A cybernetic heart" - id = "cybernetic_heart" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) - build_path = /obj/item/organ/heart/cybernetic - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cybernetic_liver_u - name = "Upgraded Cybernetic Liver" - desc = "An upgraded cybernetic liver" - id = "cybernetic_liver_u" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) - build_path = /obj/item/organ/liver/cybernetic/upgraded - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cybernetic_lungs - name = "Cybernetic Lungs" - desc = "A pair of cybernetic lungs." - id = "cybernetic_lungs" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) - build_path = /obj/item/organ/lungs/cybernetic - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cybernetic_lungs_u - name = "Upgraded Cybernetic Lungs" - desc = "A pair of upgraded cybernetic lungs." - id = "cybernetic_lungs_u" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500) - build_path = /obj/item/organ/lungs/cybernetic/upgraded - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cybernetic_tongue - name = "Cybernetic tongue" - desc = "A fancy cybernetic tongue." - id = "cybernetic_tongue" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) - build_path = /obj/item/organ/tongue/cybernetic - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -///////////////////// -//Adv Surgery Tools// -///////////////////// - -/datum/design/drapes - name = "Plastic Drapes" - desc = "A large surgery drape made of plastic." - id = "drapes" - build_type = PROTOLATHE - materials = list(MAT_PLASTIC = 2500) - build_path = /obj/item/surgical_drapes - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/retractor_adv - name = "Advanced Retractor" - desc = "A high-class, premium retractor, featuring precision crafted, silver-plated hook-ends and an electrum handle." - id = "retractor_adv" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 1500, MAT_GOLD = 1000) - build_path = /obj/item/retractor/adv - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/hemostat_adv - name = "Advanced Hemostat" - desc = "An exceptionally fine pair of arterial forceps. These appear to be plated in electrum and feel soft to the touch." - id = "hemostat_adv" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 1000, MAT_GOLD = 1500) - build_path = /obj/item/hemostat/adv - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/cautery_adv - name = "Electrocautery" //This is based on real-life science. - desc = "A high-tech unipolar Electrocauter. This tiny device contains an extremely powerful microbattery that uses arcs of electricity to painlessly sear wounds shut. It seems to recharge with the user's body-heat. Wow!" - id = "cautery_adv" - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 1000, MAT_GOLD = 1500) - build_path = /obj/item/cautery/adv - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/surgicaldrill_adv - name = "Surgical Autodrill" - desc = "With a diamond tip and built-in depth and safety sensors, this drill alerts the user before overpenetrating a patient's skull or tooth. There also appears to be a disable switch." - id = "surgicaldrill_adv" - build_type = PROTOLATHE - materials = list(MAT_METAL = 2500, MAT_GLASS = 2500, MAT_SILVER = 6000, MAT_GOLD = 5500, MAT_DIAMOND = 3500) - build_path = /obj/item/surgicaldrill/adv - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/scalpel_adv - name = "Precision Scalpel" - desc = "A perfectly balanced electrum scalpel with a silicon-coated edge to eliminate wear and tear." - id = "scalpel_adv" - build_type = PROTOLATHE - materials = list(MAT_METAL = 1500, MAT_GLASS = 1500, MAT_SILVER = 4000, MAT_GOLD = 2500) - build_path = /obj/item/scalpel/adv - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/circular_saw_adv - name = "Diamond-Grit Circular Saw" - desc = "For those Assistants with REALLY thick skulls." - id = "circular_saw_adv" - build_type = PROTOLATHE - materials = list(MAT_METAL = 7500, MAT_GLASS = 6000, MAT_SILVER = 6500, MAT_GOLD = 7500, MAT_DIAMOND = 4500) - build_path = /obj/item/circular_saw/adv - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE - -///////////////////////////////////////// -//////////Alien Surgery Tools//////////// -///////////////////////////////////////// - -/datum/design/alienscalpel - name = "Alien Scalpel" - desc = "An advanced scalpel obtained through Abductor technology." - id = "alien_scalpel" - build_path = /obj/item/scalpel/alien - build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/alienhemostat - name = "Alien Hemostat" - desc = "An advanced hemostat obtained through Abductor technology." - id = "alien_hemostat" - build_path = /obj/item/hemostat/alien - build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/alienretractor - name = "Alien Retractor" - desc = "An advanced retractor obtained through Abductor technology." - id = "alien_retractor" - build_path = /obj/item/retractor/alien - build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/aliensaw - name = "Alien Circular Saw" - desc = "An advanced surgical saw obtained through Abductor technology." - id = "alien_saw" - build_path = /obj/item/circular_saw/alien - build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/aliendrill - name = "Alien Drill" - desc = "An advanced drill obtained through Abductor technology." - id = "alien_drill" - build_path = /obj/item/surgicaldrill/alien - build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/aliencautery - name = "Alien Cautery" - desc = "An advanced cautery obtained through Abductor technology." - id = "alien_cautery" - build_path = /obj/item/cautery/alien - build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -///////////////////// -///Surgery Designs/// -///////////////////// - -/datum/design/surgery - name = "Surgery Design" - desc = "what" - id = "surgery_parent" - research_icon = 'icons/obj/surgery.dmi' - research_icon_state = "surgery_any" - var/surgery - -/datum/design/surgery/lobotomy - name = "Lobotomy" - desc = "An invasive surgical procedure which guarantees removal of almost all brain traumas, but might cause another permanent trauma in return." - id = "surgery_lobotomy" - surgery = /datum/surgery/advanced/lobotomy - research_icon_state = "surgery_head" - -/datum/design/surgery/pacify - name = "Pacification" - desc = "A surgical procedure which permanently inhibits the aggression center of the brain, making the patient unwilling to cause direct harm." - id = "surgery_pacify" - surgery = /datum/surgery/advanced/pacify - research_icon_state = "surgery_head" - -/datum/design/surgery/viral_bonding - name = "Viral Bonding" - desc = "A surgical procedure that forces a symbiotic relationship between a virus and its host. The patient must be dosed with spaceacillin, virus food, and formaldehyde." - id = "surgery_viral_bond" - surgery = /datum/surgery/advanced/viral_bonding - research_icon_state = "surgery_chest" - -/datum/design/surgery/reconstruction - name = "Reconstruction" - desc = "A surgical procedure that gradually repairs damage done to a body without the assistance of chemicals. Unlike classic medicine, it is effective on corpses." - id = "surgery_reconstruction" - surgery = /datum/surgery/advanced/reconstruction - research_icon_state = "surgery_chest" - -/datum/design/surgery/revival - name = "Revival" - desc = "An experimental surgical procedure which involves reconstruction and reactivation of the patient's brain even long after death. The body must still be able to sustain life." - id = "surgery_revival" - surgery = /datum/surgery/advanced/revival - research_icon_state = "surgery_head" - -/datum/design/surgery/brainwashing - name = "Brainwashing" - desc = "A surgical procedure which directly implants a directive into the patient's brain, making it their absolute priority. It can be cleared using a mindshield implant." - id = "surgery_brainwashing" - surgery = /datum/surgery/advanced/brainwashing - research_icon_state = "surgery_head" - -/datum/design/surgery/nerve_splicing - name = "Nerve Splicing" - desc = "A surgical procedure which splices the patient's nerves, making them more resistant to stuns." - id = "surgery_nerve_splice" - surgery = /datum/surgery/advanced/bioware/nerve_splicing - research_icon_state = "surgery_chest" - -/datum/design/surgery/nerve_grounding - name = "Nerve Grounding" - desc = "A surgical procedure which makes the patient's nerves act as grounding rods, protecting them from electrical shocks." - id = "surgery_nerve_ground" - surgery = /datum/surgery/advanced/bioware/nerve_grounding - research_icon_state = "surgery_chest" - -/datum/design/surgery/vein_threading - name = "Vein Threading" - desc = "A surgical procedure which severely reduces the amount of blood lost in case of injury." - id = "surgery_vein_thread" - surgery = /datum/surgery/advanced/bioware/vein_threading - research_icon_state = "surgery_chest" - -/datum/design/surgery/necrotic_revival - name = "Necrotic Revival" - desc = "An experimental surgical procedure that stimulates the growth of a Romerol tumor inside the patient's brain. Requires zombie powder or rezadone." - id = "surgery_zombie" - surgery = /datum/surgery/advanced/necrotic_revival - research_icon_state = "surgery_head" - -///////////////////////////////////////// -////////////Medical Prosthetics////////// -///////////////////////////////////////// - -/datum/design/basic_l_arm - name = "Surplus prosthetic left arm" - desc = "Basic outdated and fragile prosthetic left arm." - id = "basic_l_arm" - build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) - construction_time = 20 - build_path = /obj/item/bodypart/l_arm/robot/surplus - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/basic_r_arm - name = "Surplus prosthetic right arm" - desc = "Basic outdated and fragile prosthetic left arm." - id = "basic_r_arm" - build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) - construction_time = 20 - build_path = /obj/item/bodypart/r_arm/robot/surplus - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/basic_l_leg - name = "Surplus prosthetic left leg" - desc = "Basic outdated and fragile prosthetic left leg." - id = "basic_l_leg" - build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) - construction_time = 20 - build_path = /obj/item/bodypart/l_leg/robot/surplus - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/basic_r_leg - name = "Surplus prosthetic right leg" - desc = "Basic outdated and fragile prosthetic right leg." - id = "basic_r_leg" - build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) - construction_time = 20 - build_path = /obj/item/bodypart/r_leg/robot/surplus - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/adv_r_leg - name = "Advanced prosthetic right leg" - desc = "A renforced prosthetic right leg." - id = "adv_r_leg" - build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) - construction_time = 40 - build_path = /obj/item/bodypart/r_leg/robot/surplus_upgraded - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/adv_l_leg - name = "Advanced prosthetic left leg" - desc = "A renforced prosthetic left leg." - id = "adv_l_leg" - build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) - construction_time = 40 - build_path = /obj/item/bodypart/l_leg/robot/surplus_upgraded - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/adv_l_arm - name = "Advanced prosthetic left arm" - desc = "A renforced prosthetic left arm." - id = "adv_l_arm" - build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) - construction_time = 40 - build_path = /obj/item/bodypart/l_arm/robot/surplus_upgraded - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/adv_r_arm - name = "Advanced prosthetic right arm" - desc = "A renforced prosthetic right arm." - id = "adv_r_arm" - build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) - construction_time = 40 - build_path = /obj/item/bodypart/r_arm/robot/surplus_upgraded - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL From 9c89c068fc32530c5556b25b0013d6e33c82c5a9 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 19:31:18 -0700 Subject: [PATCH 13/17] Add files via upload --- .../research/designs/medical_designs.dm | 888 ++++++++++++++++++ 1 file changed, 888 insertions(+) create mode 100644 code/modules/research/designs/medical_designs.dm diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm new file mode 100644 index 00000000..011f63df --- /dev/null +++ b/code/modules/research/designs/medical_designs.dm @@ -0,0 +1,888 @@ +///////////////////////////////////////// +////////////Medical Tools//////////////// +///////////////////////////////////////// + +/datum/design/mmi + name = "Man-Machine Interface" + desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." + id = "mmi" + build_type = PROTOLATHE | MECHFAB + materials = list(MAT_METAL = 1000, MAT_GLASS = 500) + construction_time = 75 + build_path = /obj/item/mmi + category = list("Misc","Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/posibrain + name = "Positronic Brain" + desc = "The latest in Artificial Intelligences." + id = "mmi_posi" + build_type = PROTOLATHE | MECHFAB + materials = list(MAT_METAL = 1700, MAT_GLASS = 1350, MAT_GOLD = 500) //Gold, because SWAG. + construction_time = 75 + build_path = /obj/item/mmi/posibrain + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/bluespacebeaker + name = "Bluespace Beaker" + desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." + id = "bluespacebeaker" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 250, MAT_BLUESPACE = 250) + build_path = /obj/item/reagent_containers/glass/beaker/bluespace + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/noreactbeaker + name = "Cryostasis Beaker" + desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." + id = "splitbeaker" + build_type = PROTOLATHE + materials = list(MAT_METAL = 3000) + build_path = /obj/item/reagent_containers/glass/beaker/noreact + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/xlarge_beaker + name = "X-large Beaker" + id = "xlarge_beaker" + build_type = PROTOLATHE + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 3000) + build_path = /obj/item/reagent_containers/glass/beaker/plastic + category = list("Medical Designs") + +/datum/design/meta_beaker + name = "Metamaterial Beaker" + id = "meta_beaker" + build_type = PROTOLATHE + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 3000, MAT_GOLD = 1000, MAT_TITANIUM = 1000) + build_path = /obj/item/reagent_containers/glass/beaker/meta + category = list("Medical Designs") + +/datum/design/bluespacesyringe + name = "Bluespace Syringe" + desc = "An advanced syringe that can hold 60 units of chemicals" + id = "bluespacesyringe" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 2000, MAT_PLASMA = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 500) + build_path = /obj/item/reagent_containers/syringe/bluespace + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/noreactsyringe + name = "Cryo Syringe" + desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units." + id = "noreactsyringe" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 2000, MAT_GOLD = 1000) + build_path = /obj/item/reagent_containers/syringe/noreact + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/piercesyringe + name = "Piercing Syringe" + desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units." + id = "piercesyringe" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 2000, MAT_DIAMOND = 1000) + build_path = /obj/item/reagent_containers/syringe/piercing + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/medicinalsmartdart + name = "Medicinal Smartdart" + desc = "A non-harmful dart that can administer medication from a range. Once it hits a patient using it's smart nanofilter technology only medicines contained within the dart are administered to the patient. Additonally, due to capillary action, injection of chemicals past the overdose limit is prevented." + id = "medicinalsmartdart" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 100, MAT_PLASTIC = 100, MAT_METAL = 100) + build_path = /obj/item/reagent_containers/syringe/dart + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/bluespacesmartdart + name = "bluespace smartdart" + desc = "A non-harmful dart that can administer medication from a range. Once it hits a patient using it's smart nanofilter technology only medicines contained within the dart are administered to the patient. Additonally, due to capillary action, injection of chemicals past the overdose limit is prevented. Has an extended volume capacity thanks to bluespace foam." + id = "bluespacesmartdart" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 250, MAT_PLASTIC = 250, MAT_METAL = 250, MAT_BLUESPACE = 250) + build_path = /obj/item/reagent_containers/syringe/dart/bluespace + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/smartdartgun + name = "dart gun" + desc = "A compressed air gun, designed to fit medicinal darts for application of medicine for those patients just out of reach." + id = "smartdartgun" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 500, MAT_PLASTIC = 1000, MAT_METAL = 500) + build_path = /obj/item/gun/syringe/dart + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/bluespacebodybag + name = "Bluespace Body Bag" + desc = "A bluespace body bag, powered by experimental bluespace technology. It can hold loads of bodies and the largest of creatures." + id = "bluespacebodybag" + build_type = PROTOLATHE + materials = list(MAT_METAL = 3000, MAT_PLASMA = 2000, MAT_DIAMOND = 500, MAT_BLUESPACE = 500) + build_path = /obj/item/bodybag/bluespace + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/plasmarefiller + name = "Plasma-Man Jumpsuit Refill" + desc = "A refill pack for the auto-extinguisher on Plasma-man suits." + id = "plasmarefiller" //Why did this have no plasmatech + build_type = PROTOLATHE + materials = list(MAT_METAL = 4000, MAT_PLASMA = 1000) + build_path = /obj/item/extinguisher_refill + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_ALL + +/datum/design/crewpinpointer + name = "Crew Pinpointer" + desc = "Allows tracking of someone's location if their suit sensors are turned to tracking beacon." + id = "crewpinpointer" + build_type = PROTOLATHE + materials = list(MAT_METAL = 3000, MAT_GLASS = 1500, MAT_GOLD = 200) + build_path = /obj/item/pinpointer/crew + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/holobarrier_med + name = "PENLITE holobarrier projector" + desc = "PENLITE holobarriers, a device that halts individuals with malicious diseases." + build_type = PROTOLATHE + build_path = /obj/item/holosign_creator/medical + materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease) + id = "holobarrier_med" + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/healthanalyzer_advanced + name = "Advanced Health Analyzer" + desc = "A hand-held body scanner able to distinguish vital signs of the subject with high accuracy." + id = "healthanalyzer_advanced" + build_path = /obj/item/healthanalyzer/advanced + build_type = PROTOLATHE + materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 2000, MAT_GOLD = 1500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/medicalkit + name = "Empty Medkit" + desc = "A plastic medical kit for storging medical items." + id = "medicalkit" + build_type = PROTOLATHE + materials = list(MAT_PLASTIC = 5000) + build_path = /obj/item/storage/firstaid //So we dont spawn medical items in it + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + + +/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(MAT_PLASTIC = 2000) + build_path = /obj/item/reagent_containers/chem_pack + category = list("Medical Designs") + +/datum/design/blood_bag + name = "Empty Blood Bag" + desc = "A small sterilized plastic bag for blood." + id = "blood_bag" + build_path = /obj/item/reagent_containers/blood + build_type = PROTOLATHE + materials = list(MAT_GLASS = 1500, MAT_PLASTIC = 3500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cloning_disk + name = "Cloning Data Disk" + desc = "Produce additional disks for storing genetic data." + id = "cloning_disk" + build_type = PROTOLATHE + materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50) + build_path = /obj/item/disk/data + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/organbox + name = "Empty Organ Box" + desc = "A large cool box that can hold large amouts of medical tools or organs." + id = "organbox" + build_type = PROTOLATHE + materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_SILVER= 3500, MAT_GOLD = 3500, MAT_PLASTIC = 5000) + build_path = /obj/item/storage/belt/organbox + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +//////////////////////////////////////// +//////////Defibrillator Tech//////////// +//////////////////////////////////////// + +/datum/design/defibrillator + name = "Defibrillator" + id = "defibrillator" + build_type = PROTOLATHE + build_path = /obj/item/defibrillator + materials = list(MAT_METAL = 8000, MAT_GLASS = 4000, MAT_SILVER = 3000, MAT_GOLD = 1500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/defibrillator_mount + name = "Defibrillator Wall Mount" + desc = "An all-in-one mounted frame for holding defibrillators, complete with ID-locked clamps and recharging cables." + id = "defibmount" + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_GLASS = 1000) + build_path = /obj/item/wallframe/defib_mount + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/defib_heal + name = "Defibrillator Healing disk" + desc = "An upgrade which increases the healing power of the defibrillator" + id = "defib_heal" + build_type = PROTOLATHE + materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000) + build_path = /obj/item/disk/medical/defib_heal + construction_time = 10 + category = list("Misc") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/defib_shock + name = "Defibrillator Anti-Shock Disk" + desc = "A safety upgrade that guarantees only the patient will get shocked" + id = "defib_shock" + build_type = PROTOLATHE + materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000) + build_path = /obj/item/disk/medical/defib_shock + construction_time = 10 + category = list("Misc") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/defib_decay + name = "Defibrillator Body-Decay Extender Disk" + desc = "An upgrade allowing the defibrillator to work on more decayed bodies" + id = "defib_decay" + build_type = PROTOLATHE + materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 16000, MAT_SILVER = 6000, MAT_TITANIUM = 2000) + build_path = /obj/item/disk/medical/defib_decay + construction_time = 10 + category = list("Misc") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/defib_speed + name = "Defibrillator Fast Charge Disk" + desc = "An upgrade to the defibrillator capacitors, which let it charge faster" + id = "defib_speed" + build_type = PROTOLATHE + build_path = /obj/item/disk/medical/defib_speed + materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_GOLD = 26000, MAT_SILVER = 26000) + construction_time = 10 + category = list("Misc") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +///////////////////////////////////////// +//////////Cybernetic Implants//////////// +///////////////////////////////////////// + +/datum/design/cyberimp_welding + name = "Welding Shield Eyes" + desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision." + id = "ci-welding" + build_type = PROTOLATHE | MECHFAB + construction_time = 40 + materials = list(MAT_METAL = 600, MAT_GLASS = 400) + build_path = /obj/item/organ/eyes/robotic/shield + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_gloweyes + name = "Luminescent Eyes" + desc = "A pair of cybernetic eyes that can emit multicolored light" + id = "ci-gloweyes" + build_type = PROTOLATHE | MECHFAB + construction_time = 40 + materials = list(MAT_METAL = 600, MAT_GLASS = 1000) + build_path = /obj/item/organ/eyes/robotic/glow + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_breather + name = "Breathing Tube Implant" + desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked." + id = "ci-breather" + build_type = PROTOLATHE | MECHFAB + construction_time = 35 + materials = list(MAT_METAL = 600, MAT_GLASS = 250) + build_path = /obj/item/organ/cyberimp/mouth/breathing_tube + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_surgical + name = "Surgical Arm Implant" + desc = "A set of surgical tools hidden behind a concealed panel on the user's arm." + id = "ci-surgery" + build_type = PROTOLATHE | MECHFAB + materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) + construction_time = 200 + build_path = /obj/item/organ/cyberimp/arm/surgery + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_toolset + name = "Toolset Arm Implant" + desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm." + id = "ci-toolset" + build_type = PROTOLATHE | MECHFAB + materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) + construction_time = 200 + build_path = /obj/item/organ/cyberimp/arm/toolset + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_medical_hud + name = "Medical HUD Implant" + desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control." + id = "ci-medhud" + build_type = PROTOLATHE | MECHFAB + construction_time = 50 + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500) + build_path = /obj/item/organ/cyberimp/eyes/hud/medical + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_security_hud + name = "Security HUD Implant" + desc = "These cybernetic eyes will display a security HUD over everything you see. Wiggle eyes to control." + id = "ci-sechud" + build_type = PROTOLATHE | MECHFAB + construction_time = 50 + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 750, MAT_GOLD = 750) + build_path = /obj/item/organ/cyberimp/eyes/hud/security + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_xray + name = "X-ray Eyes" + desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." + id = "ci-xray" + build_type = PROTOLATHE | MECHFAB + construction_time = 60 + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 1000) + build_path = /obj/item/organ/eyes/robotic/xray + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_thermals + name = "Thermal Eyes" + desc = "These cybernetic eyes will give you Thermal vision. Vertical slit pupil included." + id = "ci-thermals" + build_type = PROTOLATHE | MECHFAB + construction_time = 60 + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000) + build_path = /obj/item/organ/eyes/robotic/thermals + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_antidrop + name = "Anti-Drop Implant" + desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle." + id = "ci-antidrop" + build_type = PROTOLATHE | MECHFAB + construction_time = 60 + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 400, MAT_GOLD = 400) + build_path = /obj/item/organ/cyberimp/brain/anti_drop + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_antistun + name = "CNS Rebooter Implant" + desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." + id = "ci-antistun" + build_type = PROTOLATHE | MECHFAB + construction_time = 60 + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 1000) + build_path = /obj/item/organ/cyberimp/brain/anti_stun + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_nutriment + name = "Nutriment Pump Implant" + desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving." + id = "ci-nutriment" + build_type = PROTOLATHE | MECHFAB + construction_time = 40 + materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500) + build_path = /obj/item/organ/cyberimp/chest/nutriment + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_nutriment_plus + name = "Nutriment Pump Implant PLUS" + desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." + id = "ci-nutrimentplus" + build_type = PROTOLATHE | MECHFAB + construction_time = 50 + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750) + build_path = /obj/item/organ/cyberimp/chest/nutriment/plus + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_reviver + name = "Reviver Implant" + desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!" + id = "ci-reviver" + build_type = PROTOLATHE | MECHFAB + construction_time = 60 + materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 300, MAT_URANIUM = 500) + build_path = /obj/item/organ/cyberimp/chest/reviver + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cyberimp_thrusters + name = "Thrusters Set Implant" + desc = "This implant will allow you to use gas from environment or your internals for propulsion in zero-gravity areas." + id = "ci-thrusters" + build_type = PROTOLATHE | MECHFAB + construction_time = 80 + materials = list(MAT_METAL = 4000, MAT_GLASS = 2000, MAT_SILVER = 1000, MAT_DIAMOND = 1000) + build_path = /obj/item/organ/cyberimp/chest/thrusters + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +///////////////////////////////////////// +////////////Regular Implants///////////// +///////////////////////////////////////// + +/datum/design/implanter + name = "Implanter" + desc = "A sterile automatic implant injector." + id = "implanter" + build_type = PROTOLATHE + materials = list(MAT_METAL = 600, MAT_GLASS = 200) + build_path = /obj/item/implanter + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/implantcase + name = "Implant Case" + desc = "A glass case for containing an implant." + id = "implantcase" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 500) + build_path = /obj/item/implantcase + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/implant_sadtrombone + name = "Sad Trombone Implant Case" + desc = "Makes death amusing." + id = "implant_trombone" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 500, MAT_BANANIUM = 500) + build_path = /obj/item/implantcase/sad_trombone + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_ALL //if you get bananium you get the sad trombones. + +/datum/design/implant_chem + name = "Chemical Implant Case" + desc = "A glass case containing an implant." + id = "implant_chem" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 700) + build_path = /obj/item/implantcase/chem + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/implant_tracking + name = "Tracking Implant Case" + desc = "A glass case containing an implant." + id = "implant_tracking" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500) + build_path = /obj/item/implantcase/track + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + +//Cybernetic organs + +/datum/design/cybernetic_liver + name = "Cybernetic Liver" + desc = "A cybernetic liver" + id = "cybernetic_liver" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500) + build_path = /obj/item/organ/liver/cybernetic + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cybernetic_heart + name = "Cybernetic Heart" + desc = "A cybernetic heart" + id = "cybernetic_heart" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500) + build_path = /obj/item/organ/heart/cybernetic + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cybernetic_liver_u + name = "Upgraded Cybernetic Liver" + desc = "An upgraded cybernetic liver" + id = "cybernetic_liver_u" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500) + build_path = /obj/item/organ/liver/cybernetic/upgraded + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cybernetic_lungs + name = "Cybernetic Lungs" + desc = "A pair of cybernetic lungs." + id = "cybernetic_lungs" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500) + build_path = /obj/item/organ/lungs/cybernetic + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cybernetic_lungs_u + name = "Upgraded Cybernetic Lungs" + desc = "A pair of upgraded cybernetic lungs." + id = "cybernetic_lungs_u" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500) + build_path = /obj/item/organ/lungs/cybernetic/upgraded + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cybernetic_tongue + name = "Cybernetic tongue" + desc = "A fancy cybernetic tongue." + id = "cybernetic_tongue" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500) + build_path = /obj/item/organ/tongue/cybernetic + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +///////////////////// +//Adv Surgery Tools// +///////////////////// + +/datum/design/drapes + name = "Plastic Drapes" + desc = "A large surgery drape made of plastic." + id = "drapes" + build_type = PROTOLATHE + materials = list(MAT_PLASTIC = 2500) + build_path = /obj/item/surgical_drapes + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/retractor_adv + name = "Advanced Retractor" + desc = "A high-class, premium retractor, featuring precision crafted, silver-plated hook-ends and an electrum handle." + id = "retractor_adv" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 1500, MAT_GOLD = 1000) + build_path = /obj/item/retractor/adv + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/hemostat_adv + name = "Advanced Hemostat" + desc = "An exceptionally fine pair of arterial forceps. These appear to be plated in electrum and feel soft to the touch." + id = "hemostat_adv" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 1000, MAT_GOLD = 1500) + build_path = /obj/item/hemostat/adv + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/cautery_adv + name = "Electrocautery" //This is based on real-life science. + desc = "A high-tech unipolar Electrocauter. This tiny device contains an extremely powerful microbattery that uses arcs of electricity to painlessly sear wounds shut. It seems to recharge with the user's body-heat. Wow!" + id = "cautery_adv" + build_type = PROTOLATHE + materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 1000, MAT_GOLD = 1500) + build_path = /obj/item/cautery/adv + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/surgicaldrill_adv + name = "Surgical Autodrill" + desc = "With a diamond tip and built-in depth and safety sensors, this drill alerts the user before overpenetrating a patient's skull or tooth. There also appears to be a disable switch." + id = "surgicaldrill_adv" + build_type = PROTOLATHE + materials = list(MAT_METAL = 2500, MAT_GLASS = 2500, MAT_SILVER = 6000, MAT_GOLD = 5500, MAT_DIAMOND = 3500) + build_path = /obj/item/surgicaldrill/adv + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/scalpel_adv + name = "Precision Scalpel" + desc = "A perfectly balanced electrum scalpel with a silicon-coated edge to eliminate wear and tear." + id = "scalpel_adv" + build_type = PROTOLATHE + materials = list(MAT_METAL = 1500, MAT_GLASS = 1500, MAT_SILVER = 4000, MAT_GOLD = 2500) + build_path = /obj/item/scalpel/adv + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/circular_saw_adv + name = "Diamond-Grit Circular Saw" + desc = "For those Assistants with REALLY thick skulls." + id = "circular_saw_adv" + build_type = PROTOLATHE + materials = list(MAT_METAL = 7500, MAT_GLASS = 6000, MAT_SILVER = 6500, MAT_GOLD = 7500, MAT_DIAMOND = 4500) + build_path = /obj/item/circular_saw/adv + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +///////////////////////////////////////// +//////////Alien Surgery Tools//////////// +///////////////////////////////////////// + +/datum/design/alienscalpel + name = "Alien Scalpel" + desc = "An advanced scalpel obtained through Abductor technology." + id = "alien_scalpel" + build_path = /obj/item/scalpel/alien + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/alienhemostat + name = "Alien Hemostat" + desc = "An advanced hemostat obtained through Abductor technology." + id = "alien_hemostat" + build_path = /obj/item/hemostat/alien + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/alienretractor + name = "Alien Retractor" + desc = "An advanced retractor obtained through Abductor technology." + id = "alien_retractor" + build_path = /obj/item/retractor/alien + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/aliensaw + name = "Alien Circular Saw" + desc = "An advanced surgical saw obtained through Abductor technology." + id = "alien_saw" + build_path = /obj/item/circular_saw/alien + build_type = PROTOLATHE + materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/aliendrill + name = "Alien Drill" + desc = "An advanced drill obtained through Abductor technology." + id = "alien_drill" + build_path = /obj/item/surgicaldrill/alien + build_type = PROTOLATHE + materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/aliencautery + name = "Alien Cautery" + desc = "An advanced cautery obtained through Abductor technology." + id = "alien_cautery" + build_path = /obj/item/cautery/alien + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +///////////////////// +///Surgery Designs/// +///////////////////// + +/datum/design/surgery + name = "Surgery Design" + desc = "what" + id = "surgery_parent" + research_icon = 'icons/obj/surgery.dmi' + research_icon_state = "surgery_any" + var/surgery + +/datum/design/surgery/lobotomy + name = "Lobotomy" + desc = "An invasive surgical procedure which guarantees removal of almost all brain traumas, but might cause another permanent trauma in return." + id = "surgery_lobotomy" + surgery = /datum/surgery/advanced/lobotomy + research_icon_state = "surgery_head" + +/datum/design/surgery/pacify + name = "Pacification" + desc = "A surgical procedure which permanently inhibits the aggression center of the brain, making the patient unwilling to cause direct harm." + id = "surgery_pacify" + surgery = /datum/surgery/advanced/pacify + research_icon_state = "surgery_head" + +/datum/design/surgery/viral_bonding + name = "Viral Bonding" + desc = "A surgical procedure that forces a symbiotic relationship between a virus and its host. The patient must be dosed with spaceacillin, virus food, and formaldehyde." + id = "surgery_viral_bond" + surgery = /datum/surgery/advanced/viral_bonding + research_icon_state = "surgery_chest" + +/datum/design/surgery/reconstruction + name = "Reconstruction" + desc = "A surgical procedure that gradually repairs damage done to a body without the assistance of chemicals. Unlike classic medicine, it is effective on corpses." + id = "surgery_reconstruction" + surgery = /datum/surgery/advanced/reconstruction + research_icon_state = "surgery_chest" + +/datum/design/surgery/revival + name = "Revival" + desc = "An experimental surgical procedure which involves reconstruction and reactivation of the patient's brain even long after death. The body must still be able to sustain life." + id = "surgery_revival" + surgery = /datum/surgery/advanced/revival + research_icon_state = "surgery_head" + +/datum/design/surgery/brainwashing + name = "Brainwashing" + desc = "A surgical procedure which directly implants a directive into the patient's brain, making it their absolute priority. It can be cleared using a mindshield implant." + id = "surgery_brainwashing" + surgery = /datum/surgery/advanced/brainwashing + research_icon_state = "surgery_head" + +/datum/design/surgery/nerve_splicing + name = "Nerve Splicing" + desc = "A surgical procedure which splices the patient's nerves, making them more resistant to stuns." + id = "surgery_nerve_splice" + surgery = /datum/surgery/advanced/bioware/nerve_splicing + research_icon_state = "surgery_chest" + +/datum/design/surgery/nerve_grounding + name = "Nerve Grounding" + desc = "A surgical procedure which makes the patient's nerves act as grounding rods, protecting them from electrical shocks." + id = "surgery_nerve_ground" + surgery = /datum/surgery/advanced/bioware/nerve_grounding + research_icon_state = "surgery_chest" + +/datum/design/surgery/vein_threading + name = "Vein Threading" + desc = "A surgical procedure which severely reduces the amount of blood lost in case of injury." + id = "surgery_vein_thread" + surgery = /datum/surgery/advanced/bioware/vein_threading + research_icon_state = "surgery_chest" + +/datum/design/surgery/necrotic_revival + name = "Necrotic Revival" + desc = "An experimental surgical procedure that stimulates the growth of a Romerol tumor inside the patient's brain. Requires zombie powder or rezadone." + id = "surgery_zombie" + surgery = /datum/surgery/advanced/necrotic_revival + research_icon_state = "surgery_head" + +///////////////////////////////////////// +////////////Medical Prosthetics////////// +///////////////////////////////////////// + +/datum/design/basic_l_arm + name = "Surplus prosthetic left arm" + desc = "Basic outdated and fragile prosthetic left arm." + id = "basic_l_arm" + build_type = PROTOLATHE + materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) + construction_time = 20 + build_path = /obj/item/bodypart/l_arm/robot/surplus + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/basic_r_arm + name = "Surplus prosthetic right arm" + desc = "Basic outdated and fragile prosthetic left arm." + id = "basic_r_arm" + build_type = PROTOLATHE + materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) + construction_time = 20 + build_path = /obj/item/bodypart/r_arm/robot/surplus + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/basic_l_leg + name = "Surplus prosthetic left leg" + desc = "Basic outdated and fragile prosthetic left leg." + id = "basic_l_leg" + build_type = PROTOLATHE + materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) + construction_time = 20 + build_path = /obj/item/bodypart/l_leg/robot/surplus + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/basic_r_leg + name = "Surplus prosthetic right leg" + desc = "Basic outdated and fragile prosthetic right leg." + id = "basic_r_leg" + build_type = PROTOLATHE + materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) + construction_time = 20 + build_path = /obj/item/bodypart/r_leg/robot/surplus + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/adv_r_leg + name = "Advanced prosthetic right leg" + desc = "A renforced prosthetic right leg." + id = "adv_r_leg" + build_type = PROTOLATHE + materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) + construction_time = 40 + build_path = /obj/item/bodypart/r_leg/robot/surplus_upgraded + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/adv_l_leg + name = "Advanced prosthetic left leg" + desc = "A renforced prosthetic left leg." + id = "adv_l_leg" + build_type = PROTOLATHE + materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) + construction_time = 40 + build_path = /obj/item/bodypart/l_leg/robot/surplus_upgraded + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/adv_l_arm + name = "Advanced prosthetic left arm" + desc = "A renforced prosthetic left arm." + id = "adv_l_arm" + build_type = PROTOLATHE + materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) + construction_time = 40 + build_path = /obj/item/bodypart/l_arm/robot/surplus_upgraded + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/adv_r_arm + name = "Advanced prosthetic right arm" + desc = "A renforced prosthetic right arm." + id = "adv_r_arm" + build_type = PROTOLATHE + materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) + construction_time = 40 + build_path = /obj/item/bodypart/r_arm/robot/surplus_upgraded + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL From 3d5d4ac328b96b82ce3d7b10c6cf5cd547dd3421 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 19:33:42 -0700 Subject: [PATCH 14/17] Delete iv_drip.dm --- code/game/machinery/iv_drip.dm | 220 --------------------------------- 1 file changed, 220 deletions(-) delete mode 100644 code/game/machinery/iv_drip.dm diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm deleted file mode 100644 index d9e78224..00000000 --- a/code/game/machinery/iv_drip.dm +++ /dev/null @@ -1,220 +0,0 @@ -#define IV_TAKING 0 -#define IV_INJECTING 1 - -/obj/machinery/iv_drip - name = "\improper IV drip" - desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate." - icon = 'icons/obj/iv_drip.dmi' - icon_state = "iv_drip" - anchored = FALSE - mouse_drag_pointer = MOUSE_ACTIVE_POINTER - var/mob/living/carbon/attached = null - var/mode = IV_INJECTING - var/obj/item/reagent_containers/beaker = null - 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/chem_pack)) - -/obj/machinery/iv_drip/Initialize() - . = ..() - update_icon() - -/obj/machinery/iv_drip/Destroy() - attached = null - QDEL_NULL(beaker) - return ..() - -/obj/machinery/iv_drip/update_icon() - if(attached) - if(mode) - icon_state = "injecting" - else - icon_state = "donating" - else - if(mode) - icon_state = "injectidle" - else - icon_state = "donateidle" - - cut_overlays() - - if(beaker) - if(attached) - add_overlay("beakeractive") - else - add_overlay("beakeridle") - if(beaker.reagents.total_volume) - var/mutable_appearance/filling_overlay = mutable_appearance('icons/obj/iv_drip.dmi', "reagent") - - var/percent = round((beaker.reagents.total_volume / beaker.volume) * 100) - switch(percent) - if(0 to 9) - filling_overlay.icon_state = "reagent0" - if(10 to 24) - filling_overlay.icon_state = "reagent10" - if(25 to 49) - filling_overlay.icon_state = "reagent25" - if(50 to 74) - filling_overlay.icon_state = "reagent50" - if(75 to 79) - filling_overlay.icon_state = "reagent75" - if(80 to 90) - filling_overlay.icon_state = "reagent80" - if(91 to INFINITY) - filling_overlay.icon_state = "reagent100" - - filling_overlay.color = mix_color_from_reagents(beaker.reagents.reagent_list) - add_overlay(filling_overlay) - -/obj/machinery/iv_drip/MouseDrop(mob/living/target) - . = ..() - if(!ishuman(usr) || !usr.canUseTopic(src, BE_CLOSE) || !isliving(target)) - return - - if(attached) - visible_message("[attached] is detached from [src].") - attached = null - update_icon() - return - - if(!target.has_dna()) - to_chat(usr, "The drip beeps: Warning, incompatible creature!") - return - - if(Adjacent(target) && usr.Adjacent(target)) - if(beaker) - usr.visible_message("[usr] attaches [src] to [target].", "You attach [src] to [target].") - attached = target - START_PROCESSING(SSmachines, src) - update_icon() - else - to_chat(usr, "There's nothing attached to the IV drip!") - - -/obj/machinery/iv_drip/attackby(obj/item/W, mob/user, params) - if(is_type_in_typecache(W, drip_containers)) - if(beaker) - to_chat(user, "There is already a reagent container loaded!") - return - if(!user.transferItemToLoc(W, src)) - return - beaker = W - to_chat(user, "You attach [W] to [src].") - update_icon() - return - else - return ..() - -/obj/machinery/iv_drip/deconstruct(disassembled = TRUE) - if(!(flags_1 & NODECONSTRUCT_1)) - new /obj/item/stack/sheet/metal(loc) - qdel(src) - -/obj/machinery/iv_drip/process() - if(!attached) - return PROCESS_KILL - - if(!(get_dist(src, attached) <= 1 && isturf(attached.loc))) - to_chat(attached, "The IV drip needle is ripped out of you!") - attached.apply_damage(3, BRUTE, pick(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM)) - attached = null - update_icon() - return PROCESS_KILL - - if(beaker) - // Give blood - if(mode) - if(beaker.reagents.total_volume) - var/transfer_amount = 5 - if(istype(beaker, /obj/item/reagent_containers/blood)) - // speed up transfer on blood packs - transfer_amount = 10 - beaker.reagents.trans_to(attached, transfer_amount, method = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages - update_icon() - - // Take blood - else - var/amount = beaker.reagents.maximum_volume - beaker.reagents.total_volume - amount = min(amount, 4) - // If the beaker is full, ping - if(!amount) - if(prob(5)) - visible_message("[src] pings.") - return - - // If the human is losing too much blood, beep. - if(attached.blood_volume < ( (BLOOD_VOLUME_SAFE*attached.blood_ratio) && prob(5) ) ) - visible_message("[src] beeps loudly.") - playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) - attached.transfer_blood_to(beaker, amount) - update_icon() - -/obj/machinery/iv_drip/attack_hand(mob/user) - . = ..() - if(.) - return - if(!ishuman(user)) - return - if(attached) - visible_message("[attached] is detached from [src]") - attached = null - update_icon() - return - else if(beaker) - eject_beaker(user) - else - toggle_mode() - -/obj/machinery/iv_drip/verb/eject_beaker() - set category = "Object" - set name = "Remove IV Container" - set src in view(1) - - if(!isliving(usr)) - to_chat(usr, "You can't do that!") - return - - if(usr.incapacitated()) - return - - if(beaker) - beaker.forceMove(drop_location()) - beaker = null - update_icon() - -/obj/machinery/iv_drip/verb/toggle_mode() - set category = "Object" - set name = "Toggle Mode" - set src in view(1) - - if(!isliving(usr)) - to_chat(usr, "You can't do that!") - return - - if(usr.incapacitated()) - return - - mode = !mode - to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].") - update_icon() - -/obj/machinery/iv_drip/examine(mob/user) - ..() - if(get_dist(user, src) > 2) - return - - to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].") - - if(beaker) - if(beaker.reagents && beaker.reagents.reagent_list.len) - to_chat(user, "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.") - else - to_chat(user, "Attached is an empty [beaker.name].") - else - to_chat(user, "No chemicals are attached.") - - to_chat(user, "[attached ? attached : "No one"] is attached.") - -#undef IV_TAKING -#undef IV_INJECTING From bc27a58613f8b842bac95a969698aefdbfbe09d6 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 19:33:51 -0700 Subject: [PATCH 15/17] Add files via upload --- code/game/machinery/iv_drip.dm | 220 +++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 code/game/machinery/iv_drip.dm diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm new file mode 100644 index 00000000..9df7d206 --- /dev/null +++ b/code/game/machinery/iv_drip.dm @@ -0,0 +1,220 @@ +#define IV_TAKING 0 +#define IV_INJECTING 1 + +/obj/machinery/iv_drip + name = "\improper IV drip" + desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate." + icon = 'icons/obj/iv_drip.dmi' + icon_state = "iv_drip" + anchored = FALSE + mouse_drag_pointer = MOUSE_ACTIVE_POINTER + var/mob/living/carbon/attached = null + var/mode = IV_INJECTING + var/obj/item/reagent_containers/beaker = null + 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/chem_pack)) + +/obj/machinery/iv_drip/Initialize() + . = ..() + update_icon() + +/obj/machinery/iv_drip/Destroy() + attached = null + QDEL_NULL(beaker) + return ..() + +/obj/machinery/iv_drip/update_icon() + if(attached) + if(mode) + icon_state = "injecting" + else + icon_state = "donating" + else + if(mode) + icon_state = "injectidle" + else + icon_state = "donateidle" + + cut_overlays() + + if(beaker) + if(attached) + add_overlay("beakeractive") + else + add_overlay("beakeridle") + if(beaker.reagents.total_volume) + var/mutable_appearance/filling_overlay = mutable_appearance('icons/obj/iv_drip.dmi', "reagent") + + var/percent = round((beaker.reagents.total_volume / beaker.volume) * 100) + switch(percent) + if(0 to 9) + filling_overlay.icon_state = "reagent0" + if(10 to 24) + filling_overlay.icon_state = "reagent10" + if(25 to 49) + filling_overlay.icon_state = "reagent25" + if(50 to 74) + filling_overlay.icon_state = "reagent50" + if(75 to 79) + filling_overlay.icon_state = "reagent75" + if(80 to 90) + filling_overlay.icon_state = "reagent80" + if(91 to INFINITY) + filling_overlay.icon_state = "reagent100" + + filling_overlay.color = mix_color_from_reagents(beaker.reagents.reagent_list) + add_overlay(filling_overlay) + +/obj/machinery/iv_drip/MouseDrop(mob/living/target) + . = ..() + if(!ishuman(usr) || !usr.canUseTopic(src, BE_CLOSE) || !isliving(target)) + return + + if(attached) + visible_message("[attached] is detached from [src].") + attached = null + update_icon() + return + + if(!target.has_dna()) + to_chat(usr, "The drip beeps: Warning, incompatible creature!") + return + + if(Adjacent(target) && usr.Adjacent(target)) + if(beaker) + usr.visible_message("[usr] attaches [src] to [target].", "You attach [src] to [target].") + attached = target + START_PROCESSING(SSmachines, src) + update_icon() + else + to_chat(usr, "There's nothing attached to the IV drip!") + + +/obj/machinery/iv_drip/attackby(obj/item/W, mob/user, params) + if(is_type_in_typecache(W, drip_containers)) + if(beaker) + to_chat(user, "There is already a reagent container loaded!") + return + if(!user.transferItemToLoc(W, src)) + return + beaker = W + to_chat(user, "You attach [W] to [src].") + update_icon() + return + else + return ..() + +/obj/machinery/iv_drip/deconstruct(disassembled = TRUE) + if(!(flags_1 & NODECONSTRUCT_1)) + new /obj/item/stack/sheet/metal(loc) + qdel(src) + +/obj/machinery/iv_drip/process() + if(!attached) + return PROCESS_KILL + + if(!(get_dist(src, attached) <= 1 && isturf(attached.loc))) + to_chat(attached, "The IV drip needle is ripped out of you!") + attached.apply_damage(3, BRUTE, pick(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM)) + attached = null + update_icon() + return PROCESS_KILL + + if(beaker) + // Give blood + if(mode) + if(beaker.reagents.total_volume) + var/transfer_amount = 5 + if(istype(beaker, /obj/item/reagent_containers/blood)) + // speed up transfer on blood packs + transfer_amount = 10 + beaker.reagents.trans_to(attached, transfer_amount, method = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages + update_icon() + + // Take blood + else + var/amount = beaker.reagents.maximum_volume - beaker.reagents.total_volume + amount = min(amount, 4) + // If the beaker is full, ping + if(!amount) + if(prob(5)) + visible_message("[src] pings.") + return + + // If the human is losing too much blood, beep. + if(attached.blood_volume < ( (BLOOD_VOLUME_SAFE*attached.blood_ratio) && prob(5) ) ) + visible_message("[src] beeps loudly.") + playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) + attached.transfer_blood_to(beaker, amount) + update_icon() + +/obj/machinery/iv_drip/attack_hand(mob/user) + . = ..() + if(.) + return + if(!ishuman(user)) + return + if(attached) + visible_message("[attached] is detached from [src]") + attached = null + update_icon() + return + else if(beaker) + eject_beaker(user) + else + toggle_mode() + +/obj/machinery/iv_drip/verb/eject_beaker() + set category = "Object" + set name = "Remove IV Container" + set src in view(1) + + if(!isliving(usr)) + to_chat(usr, "You can't do that!") + return + + if(usr.incapacitated()) + return + + if(beaker) + beaker.forceMove(drop_location()) + beaker = null + update_icon() + +/obj/machinery/iv_drip/verb/toggle_mode() + set category = "Object" + set name = "Toggle Mode" + set src in view(1) + + if(!isliving(usr)) + to_chat(usr, "You can't do that!") + return + + if(usr.incapacitated()) + return + + mode = !mode + to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].") + update_icon() + +/obj/machinery/iv_drip/examine(mob/user) + ..() + if(get_dist(user, src) > 2) + return + + to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].") + + if(beaker) + if(beaker.reagents && beaker.reagents.reagent_list.len) + to_chat(user, "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.") + else + to_chat(user, "Attached is an empty [beaker.name].") + else + to_chat(user, "No chemicals are attached.") + + to_chat(user, "[attached ? attached : "No one"] is attached.") + +#undef IV_TAKING +#undef IV_INJECTING From 90e627bbdd62caa11f0d0cb1dff12a84d0a9cb1b Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 23 Sep 2019 19:35:40 -0700 Subject: [PATCH 17/17] Add files via upload --- icons/obj/blood_pack.dmi | Bin 0 -> 1186 bytes icons/obj/bloodpack.dmi | Bin 950 -> 1186 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/obj/blood_pack.dmi diff --git a/icons/obj/blood_pack.dmi b/icons/obj/blood_pack.dmi new file mode 100644 index 0000000000000000000000000000000000000000..efcf670da5907902c145fbcd86fe177306e2e2d1 GIT binary patch literal 1186 zcmV;T1YP@yP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex7wuvIWN;^NFm z%}mcIfpCgT5=&AQY!#G}a`N+23KEmEmAE)lGK-28Y!wW-IMa#}b5kK~xXPl$yp;Uh zc;YoAXQbxhQ>d)q>gS^1;_Jx;0OM>n!GvtEkN^M!*hxe|RCt{2nm=e8R~*MbDkV)f zt8Ls;W89%g#ZqID6ug-?bZV9h#0RYcrISa4=MEY&bm&ln7khO~;Jhe=PDb!39U2ND zD&oLLmLjec`sYlC;3SlGuljZ^{zLEyyyE0@c58e3`oZ*FeZXJ=>U z9#IA0LjSiv!u}HOO(6s-B9wHV1H!~D%Npowx7$FrLY(y9Xf&=pq!IN!{o4ng3sJ&F zO8LPso5~{~2m&We-1EGF{;;pzZaZ0s5chw0c*wu}13(Rzi*H@zAq}3wrIVv!7)kemVN@6At*8d&kFb^MJoN#OGP*PniAm5`9-m1m(NH zS;?n4FAYCW{SqC2!Ml9RJXemBf56mH^1z4e1Kd`zsl5nRDwXBa`aI9u)wQR~Xa99y z`2Ee&5-wK(c=qFWd<0ys)qdUH-d4H`Xgvp1DwSm+1h#D>gaE*{?WjFVoKf)k{e9y8 zyWJx}g6{XcdF4w0R#sMesy4MpK>V)ZIL-@g*2MjA=E!Jbv7x`i7o8?I*$b zl@E#k&WgDIPN%~UT;*=}cYdPI{u4cW+5&`EAb!QiJp$tX$_v+0+0&i^LI|d(r*RyI zR;z`SlH;eYf#I12asT~(pZA|UA_xL%wVL)6IQJSbZsPvu=H{Xcu(h?toyDq_y;N(! zxaRvf{A-N>&+~Srl+mrO)oKm&k0z`^f)W$XSvl}cs6zvp?}S*#)tU_ryKk^sJc z^rA68KR+}{*LCrIpK`gZ5r&$7c>uCHe2DA#SDpgC@8h~IuImCMwqf#FaARX55?)Lt zxAF5-P!gbCuiN!{-42u6+uKWQeczAH)d@n?f0*1mx02f%8yma2{SYK@d6m%845pem}25bKp}wX08CQ|U^)QPOuPWO ztPdC^S^^BI4{#uVLgc1CAS;yCfRptBr)__SeU@b)Xh{jCny}@u4#M``auDwBczFRA$%;g%O zJq7ZZSZlBtW<|u0obu&XQG z<7_s;glw>o000BnNklljZ^{zLEyyyE0@c58e3`oZ*FeZXJ=>U9#IA0LjSiv!u}HOO(6s-B9wHV z1H!~D%Npowx7$FrLY(y9Xf&=pq!IN!{o4nBo(oaJMN0X>Fq_IFAP52{Ox*Llf&Q?s z-EKQsh!FRGczDRa`~yG@my2&*^Z}Wh^IK<~!=}(yb^b&nnNd)D)z*)(sIWG-APyG@df5E$a%RE2m)%gn)Vbp_Zl#6;{NC6=AsL*wY9~a#j2LQRBOPv=KDDOYmETU^LC|wl+mrO z)oKm&k0z`^f)W$XSvl}cs6zvp?}S*#)tU_ryKk^sJc^rA68KR+}{*LCrIpK`gZ z5r&$7c>uCHe2DA#SDpgC@8h~IuImCMwqf#FaARX55?)LtxAF5-P!gbCuiN!{-42u6 z+uKWQeczAH)d@n?f0*1mx02g`8yg$Dy8g8n!7$0Bb{vFBCbenoX?+lR6`A;tqJ;pa z129b?faw5CGw}i#-x&%&aF}A^M?fKf=>SYq2w*w@(@eYoxvUQuC0YUusSj`j9y@x%_abUtE;OBAu_KI z$O7#Vu(Pu>aJ;_0KDvm;OzOSCa1_Mbym79*L3qAfE2Yfk8lXJ|@|fgVO#Hh*A%N)s zOrs<~xHYaqmRsamkem8|tkBvW?)7@k%*+hF?{iwKTN_~d`5|}p0i(uveL(I;z^g_f nfaw5CQwU%>0Mkso0RICN9oGBrA5h;=00000NkvXXu0mjf{X7;R delta 831 zcmV-F1Hk;E3AP827Y-l@1^@s6qMd$(0001fktK0|f*O<+T>V@WTzoyb0M^JV=gZML zIRF3x^GQTORA_zOA76QQV^%^ogFfC zaBy(Q(yT2Mu1iFmO5j5rEJA6d9OURC;Y9Gy1&5Nhhz{+Y?d5FlJDVKXJj;7`@9{qG z`+Vqs_+_)Hb0{;R{(-wib0N08T;%S%|kpyrY z$M8Q(CX;%USW)?xmX_31DwW(-+sDz?{=GjW8l4WX=I@;rV>N#aAwufzAqX zoIjV#O>L3$eEZ*R;ExaqOoR}(+Qkgr0gmH;7;fQ~WwrQSU%6a1Iw69ezu9c^lOF(N zG3me3&lWlMVeoi2v_mKXT=Jm8UAVq{K7ZySIF4gfpG?p8O^FjLhAk?bu*L*p?87PijVSM6uck!;9WoBI?owq?5Oxn1`dk{Zc_tT2@_L#5mXd^ zW%h4A%d*yF04eb{c;Eg@pwsD-{^M z!S3!hnM-o*LhA<3+LZN^Vf}>McOM7+#e*SvB&dt3Y9LFJ>%}P&!e_jK+4L^T6o%RNx zR4TDLk&%iQX$|PseD4OoR0mj=wI+n{wz@*0(BeOvv|1q=z(j`9Mh!(#TKFx0%VKpR zgJ{60MBGpU*!JOv#_;fP+agWV#I|jc$)rRY;rK-ZM5cX<%kYPu0=8{qnkJ@c0t8yO z_)cJ^SoDO~27;~sy)XzRfU2sxs;atM-1_=@ptWt=dsilju>5Xu*A|2AOtH8o%P+kM zx