diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index 271f93af5b2..daf6280c094 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -87,14 +87,20 @@
L.Weaken(3) //you can't get away now~
if(grasping.len < max_grasps)
- for(var/mob/living/L in range(grasp_range,src))
- if(L == src || faction_check(L))
- continue
- if(!(L in grasping) && L != target && prob(grasp_chance))
- L << "\the [src] has you entangled!"
- grasping[L] = Beam(L,"vine",'icons/effects/spacevines.dmi',INFINITY, 5,/obj/effect/ebeam/vine)
+ grasping:
+ for(var/mob/living/L in view(grasp_range, src))
+ if(L == src || faction_check(L) || (L in grasping) || L == target)
+ continue
+ for(var/t in getline(user,L))
+ for(var/a in t)
+ var/atom/A = a
+ if(A.density && A != L)
+ break grasping
+ if(prob(grasp_chance))
+ L << "\the [src] has you entangled!"
+ grasping[L] = Beam(L,"vine",'icons/effects/spacevines.dmi',INFINITY, 5,/obj/effect/ebeam/vine)
- break //only take 1 new victim per cycle
+ break //only take 1 new victim per cycle
/mob/living/simple_animal/hostile/venus_human_trap/OpenFire(atom/the_target)