diff --git a/code/datums/action.dm b/code/datums/action.dm
index 7c17b11fd45..78807e22d97 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -330,32 +330,30 @@
/datum/action/item_action/hands_free/activate
name = "Activate"
-
/datum/action/item_action/hands_free/shift_nerves
name = "Shift Nerves"
-
/datum/action/item_action/toggle_research_scanner
name = "Toggle Research Scanner"
button_icon_state = "scan_mode"
+ var/active = FALSE
/datum/action/item_action/toggle_research_scanner/Trigger()
if(IsAvailable())
- owner.research_scanner = !owner.research_scanner
- owner << "Research analyzer is now [owner.research_scanner ? "active" : "deactivated"]."
+ active = !active
+ if(active)
+ owner.research_scanner++
+ else
+ owner.research_scanner--
+ owner << "[target] research scanner has been [active ? "activated" : "deactivated"]."
return 1
/datum/action/item_action/toggle_research_scanner/Remove(mob/M)
- if(owner)
- owner.research_scanner = 0
+ if(owner && active)
+ owner.research_scanner--
+ active = FALSE
..()
-/datum/action/item_action/toggle_research_scanner/ApplyIcon(obj/screen/movable/action_button/current_button)
- current_button.cut_overlays()
- if(button_icon && button_icon_state)
- var/image/img = image(button_icon, current_button, "scan_mode")
- current_button.add_overlay(img)
-
/datum/action/item_action/organ_action
check_flags = AB_CHECK_CONSCIOUS