From 3eed211d9159a95a871da914a15e810caacda4ae Mon Sep 17 00:00:00 2001 From: Remie Richards Date: Tue, 21 Jun 2016 01:18:53 +0100 Subject: [PATCH] Venus human trap changes * Venus human traps now obey the laws of physics when it comes to finding targets * Venus human traps will continue to grab hold of you even if you're through a wall SO LONG AS YOU WERE ORIGINALLY A VALID TARGET (headcannon: it can still feel you and grasp hold of you with it's vine) --- .../simple_animal/hostile/venus_human_trap.dm | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) 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)