diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index e895e2f3ad2..69753a3252c 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -191,21 +191,14 @@
qdel(src)
return
- direction_loop:
- for(var/dirn in cardinal)
- var/turf/T = get_step(src, dirn)
+ if(!linked_node || get_dist(linked_node, src) > linked_node.node_range)
+ return
- if (!istype(T) || T.density || locate(/obj/structure/alien/weeds) in T || istype(T, /turf/space))
- continue
+ for(var/turf/T in U.GetAtmosAdjacentTurfs())
+ if(locate(/obj/structure/alien/weeds) in T || istype(T, /turf/space))
+ continue
- if(!linked_node || get_dist(linked_node, src) > linked_node.node_range)
- return
-
- for(var/obj/O in T)
- if(O.density)
- continue direction_loop
-
- new /obj/structure/alien/weeds(T, linked_node)
+ new /obj/structure/alien/weeds(T, linked_node)
/obj/structure/alien/weeds/ex_act(severity)
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index a6dff1764df..a2a7cbc706a 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -393,6 +393,13 @@ var/global/list/rockTurfEdgeCache
gets_drilled()
..()
+/turf/simulated/mineral/attack_alien(var/mob/living/carbon/alien/M)
+ M << "You start digging into the rock..."
+ playsound(src, 'sound/effects/break_stone.ogg', 50, 1)
+ if(do_after(M, 40, target = src))
+ M << "You tunnel into the rock."
+ gets_drilled()
+
/turf/simulated/mineral/Bumped(AM as mob|obj)
. = ..()
if(istype(AM,/mob/living/carbon/human))