diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 82fbab128c1a..63bfe6eeb396 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -420,3 +420,47 @@ R.hasExpanded = TRUE R.update_transform() return TRUE + +/obj/item/borg/upgrade/rped + name = "engineering cyborg RPED" + desc = "A rapid part exchange device for the engineering cyborg." + icon = 'icons/obj/storage.dmi' + icon_state = "borgrped" + require_module = TRUE + module_type = /obj/item/robot_module/engineering + +/obj/item/borg/upgrade/rped/action(mob/living/silicon/robot/R) + if(..()) + return + + var/obj/item/storage/part_replacer/cyborg/RPED = locate() in R + if(RPED) + to_chat(usr, "This unit is already equipped with a RPED module.") + return FALSE + + RPED = new(R.module) + R.module.basic_modules += RPED + R.module.add_module(RPED, FALSE, TRUE) + return TRUE + +/obj/item/borg/upgrade/pinpointer + name = "medical cyborg crew pinpointer" + desc = "A crew pinpointer module for the medical cyborg." + icon = 'icons/obj/device.dmi' + icon_state = "pinpointer_crew" + require_module = TRUE + module_type = /obj/item/robot_module/medical + +/obj/item/borg/upgrade/pinpointer/action(mob/living/silicon/robot/R) + if(..()) + return + + var/obj/item/pinpointer/crew/PP = locate() in R + if(PP) + to_chat(usr, "This unit is already equipped with a pinpointer module.") + return FALSE + + PP = new(R.module) + R.module.basic_modules += PP + R.module.add_module(PP, FALSE, TRUE) + return TRUE diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index c18d618a0af4..dfb60da246dd 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -714,6 +714,24 @@ construction_time = 50 category = list("Misc") +/datum/design/borg_upgrade_rped + name = "Cyborg Upgrade (RPED)" + id = "borg_upgrade_rped" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/rped + materials = list(MAT_METAL = 10000, MAT_GLASS = 5000) + construction_time = 120 + category = list("Cyborg Upgrade Modules") + +/datum/design/borg_upgrade_pinpointer + name = "Cyborg Upgrade (Crew pinpointer)" + id = "borg_upgrade_pinpointer" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/pinpointer + materials = list(MAT_METAL = 1000, MAT_GLASS = 500) + construction_time = 120 + category = list("Cyborg Upgrade Modules") + //Misc /datum/design/mecha_tracking name = "Exosuit Tracking Beacon" diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 0e2e788b8f36..7c247d0b67c5 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -63,6 +63,14 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi else playsound(src, pshoom_or_beepboopblorpzingshadashwoosh, 40, 1) +/obj/item/storage/part_replacer/cyborg + name = "rapid part exchange device" + desc = "Special mechanical module made to store, sort, and apply standard machine parts." + icon_state = "borgrped" + item_state = "RPED" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + //Sorts stock parts inside an RPED by their rating. //Only use /obj/item/stock_parts/ with this sort proc! /proc/cmp_rped_sort(obj/item/stock_parts/A, obj/item/stock_parts/B) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index cba6bf86767c..4b5a23143974 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -214,7 +214,7 @@ display_name = "Cyborg Upgrades: Utility" description = "Utility upgrades for cybogs." prereq_ids = list("engineering", "cyborg") - design_ids = list("borg_upgrade_holding", "borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand") + design_ids = list("borg_upgrade_holding", "borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_rped") research_cost = 2500 export_price = 5000 @@ -223,7 +223,7 @@ display_name = "Cyborg Upgrades: Medical" description = "Medical upgrades for cyborgs." prereq_ids = list("adv_biotech", "cyborg") - design_ids = list("borg_upgrade_defibrillator", "borg_upgrade_piercinghypospray", "borg_upgrade_highstrengthsynthesiser", "borg_upgrade_expandedsynthesiser") + design_ids = list("borg_upgrade_defibrillator", "borg_upgrade_piercinghypospray", "borg_upgrade_highstrengthsynthesiser", "borg_upgrade_expandedsynthesiser", "borg_upgrade_pinpointer") research_cost = 2500 export_price = 5000 diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index dadf8430413d..18b6c45586f5 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ