diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 8b45f1d001..1dd1e54ddb 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -159,6 +159,10 @@
var/obj/item/organ/external/hand = H.organs_by_name[check_hand]
if(istype(hand) && hand.is_usable())
return TRUE
+ var/mob/living/simple_mob/S = M
+ if(istype(S) && S.has_hands) //Are they a mob? And do they have hands?
+ return TRUE
+
return FALSE
diff --git a/code/game/objects/items/devices/scanners/gas.dm b/code/game/objects/items/devices/scanners/gas.dm
index ca35911448..9fbc319d6d 100644
--- a/code/game/objects/items/devices/scanners/gas.dm
+++ b/code/game/objects/items/devices/scanners/gas.dm
@@ -23,7 +23,7 @@
/obj/item/device/analyzer/attack_self(mob/user as mob)
if (user.stat)
return
- if (!(ishuman(user) || ticker) && ticker.mode.name != "monkey")
+ if (!user.IsAdvancedToolUser())
to_chat(usr, "You don't have the dexterity to do this!")
return
diff --git a/code/game/objects/items/devices/scanners/health.dm b/code/game/objects/items/devices/scanners/health.dm
index 98aa6ec2db..02b33bdec5 100644
--- a/code/game/objects/items/devices/scanners/health.dm
+++ b/code/game/objects/items/devices/scanners/health.dm
@@ -41,7 +41,7 @@
dat += "Body Temperature: ???"
user.show_message("[dat]", 1)
return
- if (!(ishuman(user) || ticker) && ticker.mode.name != "monkey")
+ if (!user.IsAdvancedToolUser())
to_chat(user, "You don't have the dexterity to do this!")
return
diff --git a/code/game/objects/items/devices/scanners/mass_spectrometer.dm b/code/game/objects/items/devices/scanners/mass_spectrometer.dm
index fee41eb880..5c044fc535 100644
--- a/code/game/objects/items/devices/scanners/mass_spectrometer.dm
+++ b/code/game/objects/items/devices/scanners/mass_spectrometer.dm
@@ -30,7 +30,7 @@
/obj/item/device/mass_spectrometer/attack_self(mob/user as mob)
if (user.stat)
return
- if (!(ishuman(user) || ticker) && ticker.mode.name != "monkey")
+ if (!user.IsAdvancedToolUser())
to_chat(user, "You don't have the dexterity to do this!")
return
if(reagents.total_volume)
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index f065ec3ea1..9676919792 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -20,8 +20,7 @@
to_chat(user, "\The [src] cannot be applied to [M]!")
return 1
- if ( ! (istype(user, /mob/living/carbon/human) || \
- istype(user, /mob/living/silicon)) )
+ if (!M.IsAdvancedToolUser())
to_chat(user, "You don't have the dexterity to do this!")
return 1
@@ -129,7 +128,7 @@
if(used >= available)
to_chat(user, "You run out of [src]!")
break
-
+
if (W.current_stage <= W.max_bleeding_stage)
user.visible_message("\The [user] bandages \a [W.desc] on [M]'s [affecting.name].", \
"You bandage \a [W.desc] on [M]'s [affecting.name]." )
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 02c25c736d..26f3200242 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -19,7 +19,7 @@
user.setClickCooldown(user.get_attack_speed(src))
user.do_attack_animation(M)
- if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
+ if (!user.IsAdvancedToolUser())
to_chat(user, "You don't have the dexterity to do this!")
return
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index f0eb2eca18..e36d5ba8c0 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -352,7 +352,7 @@ var/list/mining_overlay_cache = list()
//Not even going to touch this pile of spaghetti
/turf/simulated/mineral/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
+ if (!user.IsAdvancedToolUser())
to_chat(user, "You don't have the dexterity to do this!")
return
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 8d0002f0da..0252396b2c 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -570,6 +570,7 @@
if(one_handed_penalty)
if(!src.is_held_twohanded(user))
+ to_chat(user, "IS HELD TWOHANDED PENALTY.")
switch(one_handed_penalty)
if(1 to 15)
if(prob(50)) //don't need to tell them every single time
@@ -581,6 +582,7 @@
if(46 to INFINITY)
to_chat(user, "You struggle to keep \the [src] on target with just one hand!")
else if(!user.can_wield_item(src))
+ to_chat(user, "CAN WIELD ITEM PENALTY.")
switch(one_handed_penalty)
if(1 to 15)
if(prob(50)) //don't need to tell them every single time