diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index f94dcadc64db..4a164a93bdf8 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -866,6 +866,7 @@ . = ..() if(wrapped) var/mutable_appearance/wrapped_appearance = mutable_appearance(wrapped.icon, wrapped.icon_state) + wrapped_appearance.overlays = wrapped.overlays.Copy() // Shrinking it to 0.8 makes it a bit ugly, but this makes it obvious it is a held item. wrapped_appearance.transform = matrix(0.8,0,0,0,0.8,0) . += wrapped_appearance @@ -896,6 +897,15 @@ /obj/item/stack/conveyor ) +/obj/item/borg/gripper/medical + name = "medical gripper" + desc = "A simple grasping tool for interacting with various medical related items." + can_hold = list( + /obj/item/reagent_containers/glass/bottle, // Bottles & Vials + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/blood // Blood Bags. + ) + /obj/item/borg/gripper/service name = "service gripper" desc = "A simple grasping tool for interacting with various service related items and food." diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index f10b587bfc66..4b6d076fd3c5 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -739,6 +739,36 @@ for(var/obj/item/reagent_containers/borghypo/H in R.module.emag_modules) H.bypass_protection = initial(H.bypass_protection) +/// Gives medical cyborgs a gripper to use. Enables medical cyborgs to do all remaining aspects of medical (chemistry & blood giving) without the help of a human. +/obj/item/borg/upgrade/medigripper + name = "medical cyborg gripper" + desc = "An upgrade for medical cyborgs which grants them a gripper to hold and interact with medical related items." + icon_state = "cyborg_upgrade3" + require_module = TRUE + module_types = list(/obj/item/robot_module/medical) + module_flags = BORG_MODULE_MEDICAL + +/obj/item/borg/upgrade/medigripper/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(!.) + return FALSE + var/obj/item/borg/gripper/medical/gripper = locate() in R.module.modules + if(gripper) + to_chat(user, span_warning("This cyborg is already equipped with a medical gripper!")) + return FALSE + + gripper = new(R.module) + R.module.basic_modules += gripper + R.module.add_module(gripper, FALSE, TRUE) + +/obj/item/borg/upgrade/medigripper/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if(!.) + return FALSE + + for(var/obj/item/borg/gripper/medical/gripper in R.module.modules) + R.module.remove_module(gripper, TRUE) + /obj/item/borg/upgrade/defib name = "medical cyborg defibrillator" desc = "An upgrade to the Medical module, installing a built-in \ diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 99e5ed6d1ad3..de26cd334346 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -886,6 +886,16 @@ construction_time = 80 category = list("Cyborg Upgrade Modules") +/datum/design/borg_upgrade_medigripper + name = "Cyborg Upgrade (Medical Gripper)" + id = "borg_upgrade_medigripper" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/medigripper + /// Arbitary price. Took the price of Plasma Cutter Upgrade, replaced plasma with gold, and replaced gold with silver. + materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000, /datum/material/gold = 2000, /datum/material/silver = 500) + construction_time = 8 SECONDS + category = list("Cyborg Upgrade Modules") + /datum/design/borg_upgrade_defibrillator name = "Cyborg Upgrade (Defibrillator)" id = "borg_upgrade_defibrillator" diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 4e4f17259ad0..a6f83a17d28a 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -351,7 +351,7 @@ display_name = "Cyborg Upgrades: Medical" description = "Medical upgrades for cyborgs." prereq_ids = list("adv_biotech") - design_ids = list("borg_upgrade_defibrillator", "borg_upgrade_piercinghypospray", "borg_upgrade_expandedsynthesiser") + design_ids = list("borg_upgrade_defibrillator", "borg_upgrade_piercinghypospray", "borg_upgrade_expandedsynthesiser", "borg_upgrade_medigripper") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) /datum/techweb_node/cyborg_upg_surgkit