anchor.diff:  //separate dm since hydro is getting bloated already
  +
  +var/list/blacklisted_glowshroom_turfs = typecacheof(list(
  +	/turf/open/floor/plating/lava,
  +	/turf/open/floor/plating/beach/water))
   
   /obj/effect/glowshroom
   	name = "glowshroom"
  +	desc = "Mycena Bregprox, a species of mushroom that glows in the dark."
   	anchored = 1
   	opacity = 0
   	density = 0
  
positive.code: 	else //if on the floor, glowshroom on-floor sprite
  		icon_state = "[base_icon_state]f"
  
  	spawn(delay)
  		Spread()
  
  /obj/effect/glowshroom/proc/Spread()
  	set background = BACKGROUND_ENABLED
  
  	for(var/i=1,i<=yield,i++)
  		if(prob(1/(generation * generation) * 100))//This formula gives you diminishing returns based on generation. 100% with 1st gen, decreasing to 25%, 11%, 6, 4, 2...
  			var/list/possibleLocs = list()
  			var/spreadsIntoAdjacent = 0
  
  			if(prob(spreadIntoAdjacentChance))
  				spreadsIntoAdjacent = 1
  
  			for(var/turf/open/floor/earth in view(3,src))
  				if(spreadsIntoAdjacent || !locate(/obj/effect/glowshroom) in view(1,earth))
  					possibleLocs += earth
  
  			if(!possibleLocs.len)
  				break
  
negative.code: 				continue
  
  			var/obj/effect/glowshroom/child = new type(newLoc)//The baby mushrooms have different stats :3
  			child.potency = max(potency + rand(-3,6), 0)
  			child.yield = max(yield + rand(-1,2), 0)
  			child.delay = max(delay + rand(-30,60), 0)
  			child.endurance = max(endurance + rand(-3,6), 1)
  			child.generation = generation + 1
  
  			CHECK_TICK
  
  /obj/effect/glowshroom/proc/CalcDir(turf/location = loc)
  	var/direction = 16
  
  	for(var/wallDir in cardinal)
  