diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index e1a9e78f5b3..83ce512ebd9 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -202,6 +202,8 @@
if(user.a_intent == INTENT_HARM)
return
. = TRUE
+ if(operating)
+ return
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
try_to_crowbar(I, user)
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 5991bf0006f..e054ae59ace 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -402,18 +402,19 @@ Class Procs:
/obj/machinery/proc/default_deconstruction_crowbar(user, obj/item/I, ignore_panel = 0)
if(I.tool_behaviour != TOOL_CROWBAR)
return FALSE
- if(!I.use_tool(src, user, 0, volume = I.tool_volume))
+ if(!I.use_tool(src, user, 0, volume = 0))
return FALSE
if((panel_open || ignore_panel) && !(flags & NODECONSTRUCT))
deconstruct(TRUE)
to_chat(user, "You disassemble [src].")
+ I.play_tool_sound(user, I.tool_volume)
return 1
return 0
/obj/machinery/proc/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/I)
if(I.tool_behaviour != TOOL_SCREWDRIVER)
return FALSE
- if(!I.use_tool(src, user, 0, volume = I.tool_volume))
+ if(!I.use_tool(src, user, 0, volume = 0))
return FALSE
if(!(flags & NODECONSTRUCT))
if(!panel_open)
@@ -424,17 +425,19 @@ Class Procs:
panel_open = 0
icon_state = icon_state_closed
to_chat(user, "You close the maintenance hatch of [src].")
+ I.play_tool_sound(user, I.tool_volume)
return 1
return 0
/obj/machinery/proc/default_change_direction_wrench(mob/user, obj/item/I)
if(I.tool_behaviour != TOOL_WRENCH)
return FALSE
- if(!I.use_tool(src, user, 0, volume = I.tool_volume))
+ if(!I.use_tool(src, user, 0, volume = 0))
return FALSE
if(panel_open)
dir = turn(dir,-90)
to_chat(user, "You rotate [src].")
+ I.play_tool_sound(user, I.tool_volume)
return TRUE
return FALSE
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 7a0cd5e8f03..00d9f94a356 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -307,13 +307,12 @@
/obj/machinery/vending/wirecutter_act(mob/user, obj/item/I)
. = TRUE
- if(!I.use_tool(src, user, 0, volume = I.tool_volume))
- return
- wires.Interact(user)
+ if(I.use_tool(src, user, 0, volume = 0))
+ wires.Interact(user)
/obj/machinery/vending/wrench_act(mob/user, obj/item/I)
. = TRUE
- if(!I.use_tool(src, user, 0, volume = I.tool_volume))
+ if(!I.use_tool(src, user, 0, volume = 0))
return
default_unfasten_wrench(user, I, time = 60)
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 355bb7c89b7..0d0a8ff8d36 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -293,7 +293,7 @@ a {
return FALSE
if(I.tool_behaviour != TOOL_WRENCH)
return FALSE
- if(!I.use_tool(src, user, 0, volume = I.tool_volume))
+ if(!I.tool_use_check(user, 0))
return FALSE
if(!(flags & NODECONSTRUCT))
to_chat(user, "Now [anchored ? "un" : ""]securing [name].")