From fbb34fe482babf7a8d56ed7a08f40e48aa31b181 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Fri, 25 Sep 2020 16:13:26 -0400 Subject: [PATCH] Gives engi/medical borgs an abductor tool upgrade from the exosuit fabricator (#14341) * Gives engi/med borgs abductor upgrades * Removes unneeded line * Henks and Aquilars suggestion Co-authored-by: Qwertytoforty --- .../objects/items/robot/robot_upgrades.dm | 76 +++++++++++++++++++ .../mob/living/silicon/robot/robot_modules.dm | 2 +- .../designs/mechfabricator_designs.dm | 20 +++++ 3 files changed, 97 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 067411ed647..fe15d146aa4 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -183,6 +183,82 @@ return TRUE +/obj/item/borg/upgrade/abductor_engi + name = "engineering cyborg abductor upgrade" + desc = "An experimental upgrade that replaces an engineering cyborgs tools with the abductor version." + icon_state = "abductor_mod" + origin_tech = "engineering=6;materials=6;abductor=3" + require_module = TRUE + module_type = /obj/item/robot_module/engineering + +/obj/item/borg/upgrade/abductor_engi/action(mob/living/silicon/robot/R) + if(..()) + return + + for(var/obj/item/weldingtool/largetank/cyborg/W in R.module.modules) + qdel(W) + for(var/obj/item/screwdriver/cyborg/S in R.module.modules) + qdel(S) + for(var/obj/item/wrench/cyborg/E in R.module.modules) + qdel(E) + for(var/obj/item/crowbar/cyborg/C in R.module.modules) + qdel(C) + for(var/obj/item/wirecutters/cyborg/I in R.module.modules) + qdel(I) + for(var/obj/item/multitool/cyborg/M in R.module.modules) + qdel(M) + + R.module.modules += new /obj/item/weldingtool/abductor(R.module) + R.module.modules += new /obj/item/wrench/abductor(R.module) + R.module.modules += new /obj/item/screwdriver/abductor(R.module) + R.module.modules += new /obj/item/crowbar/abductor(R.module) + R.module.modules += new /obj/item/wirecutters/abductor(R.module) + R.module.modules += new /obj/item/multitool/abductor(R.module) + R.module.rebuild() + + return TRUE + +/obj/item/borg/upgrade/abductor_medi + name = "medical cyborg abductor upgrade" + desc = "An experimental upgrade that replaces a medical cyborgs tools with the abductor version." + icon_state = "abductor_mod" + origin_tech = "biotech=6;materials=6;abductor=3" + require_module = TRUE + module_type = /obj/item/robot_module/medical + +/obj/item/borg/upgrade/abductor_medi/action(mob/living/silicon/robot/R) + if(..()) + return + + for(var/obj/item/scalpel/laser/laser1/L in R.module.modules) + qdel(L) + for(var/obj/item/hemostat/H in R.module.modules) + qdel(H) + for(var/obj/item/retractor/E in R.module.modules) + qdel(E) + for(var/obj/item/bonegel/B in R.module.modules) + qdel(B) + for(var/obj/item/FixOVein/F in R.module.modules) + qdel(F) + for(var/obj/item/bonesetter/S in R.module.modules) + qdel(S) + for(var/obj/item/circular_saw/C in R.module.modules) + qdel(C) + for(var/obj/item/surgicaldrill/D in R.module.modules) + qdel(D) + + R.module.modules += new /obj/item/scalpel/laser/laser3(R.module) //no abductor laser scalpel, so next best thing. + R.module.modules += new /obj/item/hemostat/alien(R.module) + R.module.modules += new /obj/item/retractor/alien(R.module) + R.module.modules += new /obj/item/bonegel/alien(R.module) + R.module.modules += new /obj/item/FixOVein/alien(R.module) + R.module.modules += new /obj/item/bonesetter/alien(R.module) + R.module.modules += new /obj/item/circular_saw/alien(R.module) + R.module.modules += new /obj/item/surgicaldrill/alien(R.module) + R.module.rebuild() + + return TRUE + /obj/item/borg/upgrade/syndicate name = "safety override module" desc = "Unlocks the hidden, deadlier functions of a cyborg." diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index ff967354131..25d9a0decb8 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -74,7 +74,7 @@ var/list/temp_list = modules modules = list() for(var/obj/O in temp_list) - if(O) + if(!QDELETED(O)) //so items getting deleted don't stay in module list and haunt you modules += O /obj/item/robot_module/proc/add_languages(mob/living/silicon/robot/R) diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 7bd5b3e9c93..22a5c7494bb 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -1081,6 +1081,26 @@ construction_time = 120 category = list("Cyborg Upgrade Modules") +/datum/design/borg_upgrade_abductor_engi + name = "Cyborg Upgrade (Abdcutor Engineering Equipment)" + id = "borg_upgade_abductor_engi" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/abductor_engi + req_tech = list("engineering" = 7, "materials" = 7, "abductor" = 4) + materials = list(MAT_METAL = 25000, MAT_SILVER = 12500, MAT_PLASMA = 5000, MAT_TITANIUM = 10000, MAT_DIAMOND = 10000) //Base abductor engineering tools * 4 + construction_time = 120 + category = list("Cyborg Upgrade Modules") + +/datum/design/borg_upgrade_abductor_medi + name = "Cyborg Upgrade (Abdcutor Medical Equipment)" + id = "borg_upgade_abductor_medi" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/abductor_medi + req_tech = list("biotech" = 7, "materials" = 7, "abductor" = 4) + materials = list(MAT_METAL = 18000, MAT_GLASS = 1500, MAT_SILVER = 13000, MAT_GOLD = 1000, MAT_PLASMA = 4000, MAT_TITANIUM = 12000, MAT_DIAMOND = 1000) //Base abductor engineering tools *8 + IMS cost + construction_time = 120 + category = list("Cyborg Upgrade Modules") + /datum/design/borg_upgrade_lavaproof name = "Cyborg Upgrade (Lavaproof Chassis)" id = "borg_upgrade_lavaproof"