diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index a72d9b44fc..b8ea92c791 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -613,13 +613,28 @@
var/mob/M = AM
if(ismob(AM))
- if(!can_pull_mobs || can_pull_mobs == MOB_PULL_NONE || (mob_size >= M.mob_size && can_pull_mobs == MOB_PULL_SMALLER) || (mob_size < M.mob_size && can_pull_mobs != MOB_PULL_LARGER))
+
+ if(!can_pull_mobs || !can_pull_size)
src << "It won't budge!"
return
+
+ if((mob_size < M.mob_size) && (can_pull_mobs != MOB_PULL_LARGER))
+ src << "It won't budge!"
+ return
+
+ if((mob_size == M.mob_size) && (can_pull_mobs == MOB_PULL_SMALLER))
+ src << "It won't budge!"
+ return
+
+ // If your size is larger than theirs and you have some
+ // kind of mob pull value AT ALL, you will be able to pull
+ // them, so don't bother checking that explicitly.
+
if(!iscarbon(src))
M.LAssailant = null
else
M.LAssailant = usr
+
else if(isobj(AM))
var/obj/I = AM
if(!can_pull_size || can_pull_size < I.w_class)