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)