diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index d2ea1d41b7c..098f3a0ced0 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -93,13 +93,18 @@
)
prize_list["Extra"] = list() // Used in child vendors
+/obj/machinery/mineral/equipment_vendor/proc/remove_id()
+ if(inserted_id)
+ inserted_id.forceMove(get_turf(src))
+ inserted_id = null
+ return TRUE
+
/obj/machinery/mineral/equipment_vendor/power_change()
- if(!..())
- return
+ . = ..()
update_icon(UPDATE_ICON_STATE)
- if(inserted_id && !(stat & NOPOWER))
- visible_message("The ID slot indicator light flickers on \the [src] as it spits out a card before powering down.")
- inserted_id.forceMove(loc)
+ if(. && inserted_id && (stat & NOPOWER))
+ visible_message("The ID slot indicator light flickers on [src] as it spits out a card before powering down.")
+ remove_id()
/obj/machinery/mineral/equipment_vendor/update_icon_state()
if(has_power())
@@ -203,8 +208,7 @@
return
if(panel_open)
if(istype(I, /obj/item/crowbar))
- if(inserted_id)
- inserted_id.forceMove(loc) //Prevents deconstructing the ORM from deleting whatever ID was inside it.
+ remove_id()
default_deconstruction_crowbar(user, I)
return TRUE
if(istype(I, /obj/item/mining_voucher))
@@ -268,8 +272,7 @@
qdel(src)
/obj/machinery/mineral/equipment_vendor/Destroy()
- if(inserted_id)
- inserted_id.forceMove(loc)
+ remove_id()
return ..()