anchor.diff:  				icon = 'icons/obj/smooth_structures/alien/weeds2.dmi'
   			if(3)
   				icon = 'icons/obj/smooth_structures/alien/weeds3.dmi'
  -	linked_node = node
  -	if(isspaceturf(loc))
  +
  +/obj/structure/alien/weeds/proc/expand()
  +	var/turf/U = get_turf(src)
  +	if(is_type_in_typecache(U, blacklisted_turfs))
   		qdel(src)
  -		return
  -	addtimer(src, "Life", rand(150, 200))
  -
  -/obj/structure/alien/weeds/Destroy()
  -	linked_node = null
  -	return ..()
  -
  -/obj/structure/alien/weeds/proc/Life()
  -	set background = BACKGROUND_ENABLED
  -	var/turf/U = get_turf(src)
  -
  -	if(isspaceturf(U))
  -		qdel(src)
  -		return
  -
  -	if(!linked_node || get_dist(linked_node, src) > linked_node.node_range)
  -		return
  +		return FALSE
   
   	for(var/turf/T in U.GetAtmosAdjacentTurfs())
  -
  -		if (locate(/obj/structure/alien/weeds) in T || isspaceturf(T))
  +		if(locate(/obj/structure/alien/weeds) in T)
   			continue
   
  -		new /obj/structure/alien/weeds(T, linked_node)
  -
  -
  -/obj/structure/alien/weeds/ex_act(severity, target)
  -	qdel(src)
  -
  +		if(is_type_in_typecache(T, blacklisted_turfs))
  +			continue
  +
  +		new /obj/structure/alien/weeds(T)
  +	return TRUE
   
   /obj/structure/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
   	if(exposed_temperature > 300)
   		take_damage(5, BURN, 0, 0)
  -
   
   //Weed nodes
   /obj/structure/alien/weeds/node
  
positive.code: 	icon_state = "weeds"
  	obj_integrity = 15
  	max_integrity = 15
  	var/obj/structure/alien/weeds/node/linked_node = null
  	canSmoothWith = list(/obj/structure/alien/weeds, /turf/closed/wall)
  	smooth = SMOOTH_MORE
  
  
  /obj/structure/alien/weeds/New(pos, node)
  	pixel_x = -4
  	pixel_y = -4 //so the sprites line up right in the map editor
  	..()
  	if(!luminosity) //weed nodes have luminosity, but normal weeds don't!
  		switch(rand(1,3))
  			if(1)
  				icon = 'icons/obj/smooth_structures/alien/weeds1.dmi'
  
negative.code: 	luminosity = 1
  	var/node_range = NODERANGE
  
  /obj/structure/alien/weeds/node/New()
  	icon = 'icons/obj/smooth_structures/alien/weednode.dmi'
  	..()
  	var/obj/structure/alien/weeds/W = locate(/obj/structure/alien/weeds)
  	if(W)
  		qdel(W)
  	START_PROCESSING(SSobj, src)
  
  /obj/structure/alien/weeds/node/Destroy()
  	STOP_PROCESSING(SSobj, src)
  	return ..()
  
  /obj/structure/alien/weeds/node/process()
  	for(var/obj/structure/alien/weeds/W in range(node_range, src))
  		if(W.last_expand <= world.time)
  			if(W.expand())
  				W.last_expand = world.time + rand(growth_cooldown_low, growth_cooldown_high)
  
  #undef NODERANGE
  
  