diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index a4b159b734..8c9452ea49 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -24,8 +24,16 @@ REAGENT SCANNER
origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 1)
var/mode = 1;
+/obj/item/device/healthanalyzer/do_surgery(mob/living/M, mob/living/user)
+ if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
+ return ..()
+ scan_mob(M, user) //default surgery behaviour is just to scan as usual
+ return 1
-/obj/item/device/healthanalyzer/attack(mob/living/M as mob, mob/living/user as mob)
+/obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/user)
+ scan_mob(M, user)
+
+/obj/item/device/healthanalyzer/proc/scan_mob(mob/living/M, mob/living/user)
if ((CLUMSY in user.mutations) && prob(50))
user << text("You try to analyze the floor's vitals!")
for(var/mob/O in viewers(M, null))
@@ -168,8 +176,7 @@ REAGENT SCANNER
else
user.show_message("Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]")
user.show_message("Subject's pulse: [H.get_pulse(GETPULSE_TOOL)] bpm.")
- src.add_fingerprint(user)
- return
+
/obj/item/device/healthanalyzer/verb/toggle_mode()
set name = "Switch Verbosity"
diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm
index d196bc4ea7..61c6668c33 100644
--- a/code/game/objects/items/weapons/autopsy.dm
+++ b/code/game/objects/items/weapons/autopsy.dm
@@ -162,19 +162,16 @@
if(istype(usr,/mob/living/carbon))
usr.put_in_hands(src)
-/obj/item/weapon/autopsy_scanner/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
+/obj/item/weapon/autopsy_scanner/do_surgery(mob/living/carbon/human/M, mob/living/user)
if(!istype(M))
- return
-
- if(!can_operate(M))
- return
+ return 0
if(target_name != M.name)
target_name = M.name
src.wdata = list()
src.chemtraces = list()
src.timeofdeath = null
- user << "A new patient has been registered.. Purging data for previous patient."
+ user << "A new patient has been registered. Purging data for previous patient."
src.timeofdeath = M.timeofdeath
@@ -183,10 +180,9 @@
usr << "You can't scan this body part."
return
if(!S.open)
- usr << "You have to cut the limb open first!"
+ usr << "You have to cut [S] open first!"
return
- for(var/mob/O in viewers(M))
- O.show_message("\The [user] scans the wounds on [M.name]'s [S.name] with \the [src]", 1)
+ M.visible_message("\The [user] scans the wounds on [M]'s [S.name] with [src]")
src.add_data(S)
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index 36a8b40fef..ba671cdb50 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -12,8 +12,15 @@
slot_flags = SLOT_EARS
volume = 5
-/obj/item/weapon/reagent_containers/dropper/afterattack(var/obj/target, var/mob/user, var/flag)
- if(!target.reagents || !flag) return
+
+/obj/item/weapon/reagent_containers/dropper/do_surgery(mob/living/carbon/M, mob/living/user)
+ if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
+ return ..()
+ afterattack(M, user, 1)
+ return 1
+
+/obj/item/weapon/reagent_containers/dropper/afterattack(var/obj/target, var/mob/user, var/proximity)
+ if(!target.reagents || !proximity) return
if(reagents.total_volume)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 4eb927444e..d131cdf9c9 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -69,8 +69,15 @@
flags |= OPENCONTAINER
update_icon()
-/obj/item/weapon/reagent_containers/glass/afterattack(var/obj/target, var/mob/user, var/flag)
- if(!is_open_container() || !flag)
+/obj/item/weapon/reagent_containers/glass/do_surgery(mob/living/carbon/M, mob/living/user)
+ if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
+ return ..()
+ afterattack(M, user, 1)
+ return 1
+
+/obj/item/weapon/reagent_containers/glass/afterattack(var/obj/target, var/mob/user, var/proximity)
+
+ if(!is_open_container() || !proximity)
return
for(var/type in can_be_placed_into)
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 884afc5ed8..771ce4cc27 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -20,6 +20,12 @@
// reagents.add_reagent("tricordrazine", 30)
// return
+/obj/item/weapon/reagent_containers/hypospray/do_surgery(mob/living/carbon/M, mob/living/user)
+ if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
+ return ..()
+ attack(M, user)
+ return 1
+
/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob)
if(!reagents.total_volume)
user << "[src] is empty."
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 09ae98eb90..87b5311be2 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -52,6 +52,14 @@
/obj/item/weapon/reagent_containers/syringe/attackby(obj/item/I as obj, mob/user as mob)
return
+/obj/item/weapon/reagent_containers/syringe/do_surgery(mob/living/carbon/M, mob/living/user)
+ if(user.a_intent == I_HURT)
+ return 0
+ if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
+ return ..()
+ afterattack(M, user, 1)
+ return 1
+
/obj/item/weapon/reagent_containers/syringe/afterattack(obj/target, mob/user, proximity)
if(!proximity || !target.reagents)
return
@@ -66,7 +74,6 @@
syringestab(target, user)
return
-
switch(mode)
if(SYRINGE_DRAW)
diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm
index 82c6ad543c..d0ba959111 100644
--- a/code/modules/surgery/other.dm
+++ b/code/modules/surgery/other.dm
@@ -149,6 +149,7 @@
if(container.reagents.has_reagent("peridaxon"))
affected.status &= ~ORGAN_DEAD
+ affected.owner.update_body(1)
user.visible_message("\blue [user] applies [trans] units of the solution to affected tissue in [target]'s [affected.name]", \
"\blue You apply [trans] units of the solution to affected tissue in [target]'s [affected.name] with \the [tool].")