anchor.diff:  	///What reagent should the shower be filled with when initially built.
   	var/reagent_id = /datum/reagent/water
   	///How much reagent capacity should the shower begin with when built.
  -	var/reaction_volume = 200
  +	var/reagent_capacity = 200
  +	///How many units the shower refills every second.
  +	var/refill_rate = 0.5
  +	/// Whether or not the shower's water reclaimer is operating.
  +	var/can_refill = TRUE
  +	/// Whether to allow players to toggle the water reclaimer.
  +	var/can_toggle_refill = TRUE
   
   /obj/machinery/shower/Initialize()
   	. = ..()
  -	create_reagents(reaction_volume)
  -	reagents.add_reagent(reagent_id, reaction_volume)
  +	create_reagents(reagent_capacity)
  +	reagents.add_reagent(reagent_id, reagent_capacity)
   	soundloop = new(list(src), FALSE)
   	AddComponent(/datum/component/plumbing/simple_demand)
   
  
positive.code: #define SHOWER_NORMAL_TEMP 300
  #define SHOWER_BOILING "boiling"
  #define SHOWER_BOILING_TEMP 400
  #define SHOWER_REACTION_MULTIPLIER 0.05
  
  
  /obj/machinery/shower
  
negative.code: 	if(isliving(A))
  		check_heat(A)
  
  /obj/machinery/shower/process(delta_time)
  	if(on && reagents.total_volume)
  		reagents.remove_any(2.5 * delta_time)
  		wash_atom(loc)
  		for(var/am in loc)
  			var/atom/movable/movable_content = am
  			reagents.expose(movable_content, TOUCH, SHOWER_REACTION_MULTIPLIER * delta_time) //There's not many reagents leaving the sink at once! This should make for a 10 unit reaction
  			if(!ismopable(movable_content)) // Mopables will be cleaned anyways by the turf wash above
  				wash_atom(movable_content)
  		return
  
  	on = FALSE
  	soundloop.stop()
  	handle_mist()
  	if(can_refill)
  		reagents.add_reagent(reagent_id, refill_rate * delta_time)
  	update_icon()
  	if(reagents.total_volume == reagents.maximum_volume)
  		return PROCESS_KILL
  
  