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)