diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 9b27cdecbdc..0a8a74b8e95 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -46,7 +46,7 @@
return TRUE
/atom/movable/Destroy()
- unbuckle_mob()
+ unbuckle_all_mobs()
return ..()
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index e3d38b87740..62b3d9b1bba 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -236,7 +236,7 @@
..()
/obj/item/weapon/wirecutters/attack(mob/living/carbon/C as mob, mob/user as mob)
- if(user.a_intent == I_HELP && (C.handcuffed) && (istype(C.handcuffed, /obj/item/weapon/handcuffs/cable)))
+ if(istype(C) && user.a_intent == I_HELP && (C.handcuffed) && (istype(C.handcuffed, /obj/item/weapon/handcuffs/cable)))
usr.visible_message("\The [usr] cuts \the [C]'s restraints with \the [src]!",\
"You cut \the [C]'s restraints with \the [src]!",\
"You hear cable being cut.")
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 39520be29d3..772af61eb74 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -20,6 +20,8 @@
/mob/living/Destroy()
dsoverlay.loc = null //I'll take my coat with me
dsoverlay = null
+ if(buckled)
+ buckled.unbuckle_mob(src, TRUE)
return ..()
//mob verbs are faster than object verbs. See mob/verb/examine.
diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm
index 953010c33ea..d52a5da531f 100644
--- a/code/modules/mob/living/silicon/robot/robot_items.dm
+++ b/code/modules/mob/living/silicon/robot/robot_items.dm
@@ -24,7 +24,7 @@
if(response == "Analyze")
if(loaded_item)
var/confirm = alert(user, "This will destroy the item inside forever. Are you sure?","Confirm Analyze","Yes","No")
- if(confirm == "Yes") //This is pretty copypasta-y
+ if(confirm == "Yes" && !QDELETED(loaded_item)) //This is pretty copypasta-y
user << "You activate the analyzer's microlaser, analyzing \the [loaded_item] and breaking it down."
flick("portable_analyzer_scan", src)
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
diff --git a/code/modules/multiz/zshadow.dm b/code/modules/multiz/zshadow.dm
index 173aa3ce8fd..10af55f5a3b 100644
--- a/code/modules/multiz/zshadow.dm
+++ b/code/modules/multiz/zshadow.dm
@@ -33,6 +33,10 @@
. = ..()
/mob/zshadow/examine(mob/user, distance, infix, suffix)
+ if(!owner)
+ // The only time we should have a null owner is if we are in nullspace. Help figure out why we were examined.
+ crash_with("[src] ([type]) @ [log_info_line()] was examined by [user] @ [global.log_info_line(user)]")
+ return
return owner.examine(user, distance, infix, suffix)
// Relay some stuff they hear
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index 6ab1be0a9f6..23ac5ace63e 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -164,7 +164,7 @@
usr.put_in_hands(W)
pages.Remove(pages[page])
- usr << "You remove the [W.name] from the bundle."
+ to_chat(usr, "You remove the [W.name] from the bundle.")
if(pages.len <= 1)
var/obj/item/weapon/paper/P = src[1]
@@ -178,11 +178,11 @@
page = pages.len
update_icon()
- else
- usr << "You need to hold it in hands!"
- if (src.loc && istype(src.loc, /mob) ||istype(src.loc.loc, /mob))
+
src.attack_self(usr)
updateUsrDialog()
+ else
+ to_chat(usr, "You need to hold it in hands!")
/obj/item/weapon/paper_bundle/verb/rename()
set name = "Rename bundle"