anchor.diff:  
   			cur_turf = get_step(cur_turf, cur_dir)
   
  -			if(istype(cur_turf, /turf/simulated/floor/plating/asteroid) || istype(cur_turf, /turf/simulated/mineral))
  -				var/turf/simulated/floor/plating/lava/smooth/lava_turf = new(cur_turf)
  -				lava_turf.Spread(30, 25)
  +			if(!istype(cur_turf, /turf/simulated/wall) //Rivers will flow around walls
  +				var/turf/simulated/river_turf = new turf_type(cur_turf)
  +				river_turf.Spread(30, 25)
   			else
   				detouring = 0
   				cur_dir = get_dir(cur_turf, target_turf)
  
positive.code: 	invisibility = 101
  
  
  /turf/simulated/floor/plating/lava/smooth/proc/Spread(probability = 30, prob_loss = 25)
  	if(probability <= 0)
  		return
  
  	for(var/turf/simulated/F in orange(1, src))
  
  		var/turf/simulated/floor/plating/lava/smooth/L = new(F)
  
  		if(L && prob(probability))
  			L.Spread(probability - prob_loss)
  
negative.code: #define RANDOM_LOWER_X 50
  #define RANDOM_LOWER_Y 50
  
  /proc/spawn_rivers(target_z = 5, nodes = 4, turf_type = /turf/simulated/floor/plating/lava/smooth)
  	var/list/river_nodes = list()
  	var/num_spawned = 0
  	while(num_spawned < nodes)
  