anchor.diff:  	else //if on the floor, glowshroom on-floor sprite
   		icon_state = base_icon_state
   
  -	addtimer(CALLBACK(src, .proc/Spread), delay)
  +	addtimer(CALLBACK(src, .proc/Spread), delay_spread)
  +	addtimer(CALLBACK(src, .proc/Decay), delay_decay, FALSE) // Start decaying the plant
  +
  +/**
  +  * Causes glowshroom spreading across the floor/walls.
  +  */
   
   /obj/structure/glowshroom/proc/Spread()
   	var/turf/ownturf = get_turf(src)
   	var/shrooms_planted = 0
   	for(var/i in 1 to myseed.yield)
  -		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/chance_stats = ((myseed.potency + myseed.endurance * 2) * 0.2) // Chance of generating a new mushroom based on stats
  +		var/chance_generation = (100 / (generation * generation)) // This formula gives you diminishing returns based on generation. 100% with 1st gen, decreasing to 25%, 11%, 6, 4, 2...
  +		if(prob(max(chance_stats, chance_generation))) // Whatever is the higher chance we use it
   			var/list/possibleLocs = list()
   			var/spreadsIntoAdjacent = FALSE
   
  
positive.code: 			if(shroomCount >= placeCount)
  				continue
  
  			var/obj/structure/glowshroom/child = new type(newLoc, myseed, TRUE)
  			child.generation = generation + 1
  			shrooms_planted++
  
  			CHECK_TICK
  		else
  			shrooms_planted++ //if we failed due to generation, don't try to plant one later
  	if(shrooms_planted < myseed.yield) //if we didn't get all possible shrooms planted, try again later
  		myseed.yield -= shrooms_planted
  		addtimer(CALLBACK(src, .proc/Spread), delay)
  
  /obj/structure/glowshroom/proc/CalcDir(turf/location = loc)
  	var/direction = 16
  
negative.code: 	icon = 'icons/obj/lighting.dmi'
  	icon_state = "glowshroom" //replaced in New
  	layer = ABOVE_NORMAL_TURF_LAYER
  	/// Time interval between glowshroom "spreads"
  	var/delay_spread = 2 MINUTES
  	/// Time interval between glowshroom decay checks
  	var/delay_decay = 30 SECONDS
  	/// Boolean to indicate if the shroom is on the floor/wall
  	var/floor = 0
  	/// Mushroom generation number
  	var/generation = 1
  	/// Chance to spread into adjacent tiles (0-100)
  	var/spreadIntoAdjacentChance = 75
  	/// Internal seed of the glowshroom, stats are stored here
  	var/obj/item/seeds/myseed = /obj/item/seeds/glowshroom
  	/// Turfs where the glowshroom cannot spread to
  	var/static/list/blacklisted_glowshroom_turfs = typecacheof(list(
  	/turf/open/lava,
  	/turf/open/floor/plating/beach/water))
  