diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index eae6edd3bd4..2f9cc98f164 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -118,17 +118,15 @@
if(usr.incapacitated())
return
-
- eject_occupant()
-
+ eject_occupant(usr)
add_fingerprint(usr)
/obj/machinery/dna_scannernew/Destroy()
- eject_occupant()
+ eject_occupant(null, TRUE)
return ..()
-/obj/machinery/dna_scannernew/proc/eject_occupant()
- go_out()
+/obj/machinery/dna_scannernew/proc/eject_occupant(user, force)
+ go_out(user, force)
for(var/obj/O in src)
if(!istype(O,/obj/item/circuitboard/clonescanner) && \
!istype(O,/obj/item/stock_parts) && \
@@ -271,15 +269,15 @@
occupant.notify_ghost_cloning(source = src)
-/obj/machinery/dna_scannernew/proc/go_out()
+/obj/machinery/dna_scannernew/proc/go_out(mob/user, force)
if(!occupant)
- to_chat(usr, "The scanner is empty!")
+ if(user)
+ to_chat(user, "The scanner is empty!")
return
-
- if(locked)
- to_chat(usr, "The scanner is locked!")
+ if(locked && !force)
+ if(user)
+ to_chat(user, "The scanner is locked!")
return
-
occupant.forceMove(loc)
occupant = null
icon_state = "scanner_open"
@@ -751,7 +749,7 @@
return TRUE
if(href_list["ejectOccupant"])
- connected.eject_occupant()
+ connected.eject_occupant(usr)
return TRUE
// Transfer Buffer Management