From 38a9731e3e673755dfca5a1240b32d1f37708fd2 Mon Sep 17 00:00:00 2001 From: MaintClown Date: Thu, 10 Jun 2021 18:43:12 -0400 Subject: [PATCH] Analyzers now work as operating computers. --- code/game/objects/items/devices/scanners.dm | 19 +++++++++++++++++++ code/modules/surgery/surgery.dm | 7 +++++++ 2 files changed, 26 insertions(+) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 137e9b8574fa..1c19a96cd32b 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -427,6 +427,25 @@ GENE SCANNER icon_state = "health_adv" desc = "A hand-held body scanner able to distinguish vital signs of the subject with high accuracy." advanced = TRUE + var/list/advanced_surgeries = list() + +/obj/item/healthanalyzer/advanced/afterattack(obj/item/O, mob/user, proximity) + . = ..() + if(!proximity) + return + if(istype(O, /obj/item/disk/surgery)) + to_chat(user, "You load the surgery protocol from [O] into [src].") + var/obj/item/disk/surgery/D = O + if(do_after(user, 10, target = O)) + advanced_surgeries |= D.surgeries + return TRUE + if(istype(O, /obj/machinery/computer/operating)) + to_chat(user, "You copy surgery protocols from [O] into [src].") + var/obj/machinery/computer/operating/OC = O + if(do_after(user, 10, target = O)) + advanced_surgeries |= OC.advanced_surgeries + return TRUE + return /obj/item/analyzer desc = "A hand-held environmental scanner which reports current gas levels. Alt-Click to use the built in barometer function." diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 913e094def3c..d5ca4814c197 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -63,6 +63,13 @@ return FALSE if(type in SP.advanced_surgeries) return TRUE + else + var/mob/living/carbon/human/R = user + var/obj/item/healthanalyzer/advanced/adv = locate() in R.GetAllContents() + if(!adv || (replaced_by in adv.advanced_surgeries)) + return FALSE + if(type in adv.advanced_surgeries) + return TRUE var/turf/T = get_turf(target)