diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 6e7035805d6..e22e411e616 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -168,12 +168,16 @@ GLOBAL_LIST_EMPTY(PDAs)
overlay.icon_state = "pai_off_overlay"
add_overlay(new /mutable_appearance(overlay))
-/obj/item/pda/MouseDrop(obj/over_object, src_location, over_location)
+/obj/item/pda/MouseDrop(mob/over, src_location, over_location)
var/mob/M = usr
- if((!istype(over_object, /obj/screen)) && usr.canUseTopic(src))
+ if((M == over) && usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return attack_self(M)
return ..()
+/obj/item/pda/attack_self_tk(mob/user)
+ to_chat(user, "The PDA's capacitive touch screen doesn't seem to respond!")
+ return
+
/obj/item/pda/interact(mob/user)
if(!user.IsAdvancedToolUser())
to_chat(user, "You don't have the dexterity to do this!")
@@ -379,7 +383,7 @@ GLOBAL_LIST_EMPTY(PDAs)
var/mob/living/U = usr
//Looking for master was kind of pointless since PDAs don't appear to have one.
- if(usr.canUseTopic(src) && !href_list["close"])
+ if(usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) && !href_list["close"])
add_fingerprint(U)
U.set_machine(src)
@@ -583,7 +587,7 @@ GLOBAL_LIST_EMPTY(PDAs)
/obj/item/pda/proc/remove_id()
- if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE))
+ if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
if (id)
@@ -747,7 +751,7 @@ GLOBAL_LIST_EMPTY(PDAs)
/obj/item/pda/proc/remove_pen()
- if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE))
+ if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
if(inserted_item)