anchor.diff:  	return ..()
   
   /obj/machinery/chem_dispenser/process()
  -	if(recharged < 0)
  -		recharge()
  -		recharged = recharge_delay
  -	else
  -		recharged -= 1
  +	if (recharge_counter >= 4)
  +		if(!is_operational())
  +			return
  +		var/usedpower = cell.give(recharge_amount)
  +		if(usedpower)
  +			use_power(250*recharge_amount)
  +		recharge_counter = 0
  +		return
  +	recharge_counter++
   
   /obj/machinery/chem_dispenser/proc/display_beaker()
   	..()
  
positive.code: 
  
  /obj/machinery/chem_dispenser/RefreshParts()
  	var/time = 0
  	var/newpowereff = 0.0666666
  	for(var/obj/item/stock_parts/cell/P in component_parts)
  		cell = P
  	for(var/obj/item/stock_parts/matter_bin/M in component_parts)
  		newpowereff += 0.0166666666*M.rating
  	for(var/obj/item/stock_parts/capacitor/C in component_parts)
  		time += C.rating
  	recharge_delay = 30/(time/2)         //delay between recharges, double the usual time on lowest 50% less than usual on highest
  	for(var/obj/item/stock_parts/manipulator/M in component_parts)
  		if (M.rating > macrotier)
  			macrotier = M.rating
  
negative.code: 	var/obj/item/stock_parts/cell/cell
  	var/powerefficiency = 0.1
  	var/amount = 30
  	var/recharge_amount = 10
  	var/recharge_counter = 0
  	var/mutable_appearance/beaker_overlay
  	var/working_state = "dispenser_working"
  	var/nopower_state = "dispenser_nopower"
  