anchor.diff:  	luminosity = 1
   	var/node_range = NODERANGE
   
  -
   /obj/structure/alien/weeds/node/New()
   	icon = 'icons/obj/smooth_structures/alien/weednode.dmi'
  -	..(loc, src)
  +	..()
  +	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
   
  
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: 				icon = 'icons/obj/smooth_structures/alien/weeds2.dmi'
  			if(3)
  				icon = 'icons/obj/smooth_structures/alien/weeds3.dmi'
  
  /obj/structure/alien/weeds/proc/expand()
  	var/turf/U = get_turf(src)
  	if(is_type_in_typecache(U, blacklisted_turfs))
  		qdel(src)
  		return FALSE
  
  	for(var/turf/T in U.GetAtmosAdjacentTurfs())
  		if(locate(/obj/structure/alien/weeds) in T)
  			continue
  
  		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
  