From f226b2bb336a9dc6d1b433ca7824f2f88074e3b1 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Thu, 27 Jan 2022 02:50:05 -0800 Subject: [PATCH] Autosurgeons can now be used on other people (#64440) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- code/modules/surgery/organs/autosurgeon.dm | 33 ++++++++++++++-------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm index e5fd8afff3f..24ae7bb74b1 100644 --- a/code/modules/surgery/organs/autosurgeon.dm +++ b/code/modules/surgery/organs/autosurgeon.dm @@ -22,10 +22,12 @@ var/organ_type = /obj/item/organ var/starting_organ var/obj/item/organ/storedorgan + var/surgery_speed = 1 /obj/item/autosurgeon/organ/syndicate name = "suspicious implant autosurgeon" icon_state = "syndicate_autoimplanter" + surgery_speed = 0.75 /obj/item/autosurgeon/organ/Initialize(mapload) . = ..() @@ -37,6 +39,14 @@ item.forceMove(src) name = "[initial(name)] ([storedorgan.name])" +/obj/item/autosurgeon/organ/proc/use_autosurgeon() + storedorgan = null + name = initial(name) + if(uses != INFINITE) + uses-- + if(!uses) + desc = "[initial(desc)] Looks like it's been used up." + /obj/item/autosurgeon/organ/attack_self(mob/user)//when the object it used... if(!uses) to_chat(user, span_alert("[src] has already been used. The tools are dull and won't reactivate.")) @@ -47,12 +57,7 @@ storedorgan.Insert(user)//insert stored organ into the user user.visible_message(span_notice("[user] presses a button on [src], and you hear a short mechanical noise."), span_notice("You feel a sharp sting as [src] plunges into your body.")) playsound(get_turf(user), 'sound/weapons/circsawhit.ogg', 50, TRUE) - storedorgan = null - name = initial(name) - if(uses != INFINITE) - uses-- - if(!uses) - desc = "[initial(desc)] Looks like it's been used up." + use_autosurgeon() /obj/item/autosurgeon/organ/attackby(obj/item/weapon, mob/user, params) if(istype(weapon, organ_type)) @@ -69,6 +74,16 @@ else return ..() +/obj/item/autosurgeon/organ/attack(mob/living/target, mob/living/user, params) + add_fingerprint(user) + user.balloon_alert_to_viewers("Prepares to use [src] on [target].", "You begin to prepare to use [src] on [target].") + if(!do_after(user, (8 SECONDS * surgery_speed), target)) + return + user.visible_message(span_notice("[user] presses a button on [src], and you hear a short mechanical noise."), span_notice("You press a button on [src] as it plunges into [target]'s body.")) + to_chat(target, span_notice("You feel a sharp sting as something plunges into your body!")) + playsound(get_turf(user), 'sound/weapons/circsawhit.ogg', 50, vary = TRUE) + use_autosurgeon() + /obj/item/autosurgeon/organ/screwdriver_act(mob/living/user, obj/item/screwtool) if(..()) return TRUE @@ -81,11 +96,7 @@ to_chat(user, span_notice("You remove the [storedorgan] from [src].")) screwtool.play_tool_sound(src) - storedorgan = null - if(uses != INFINITE) - uses-- - if(!uses) - desc = "[initial(desc)] Looks like it's been used up." + use_autosurgeon() return TRUE /obj/item/autosurgeon/organ/cmo