anchor.diff:  			if(beaker && dispensable_reagents.Find(reagent))
   				var/datum/reagents/R = beaker.reagents
   				var/free = R.maximum_volume - R.total_volume
  -				var/actual = min(amount, energy * 10, free)
  +				var/actual = min(amount, (cell.charge * powerefficiency)*10, free)
   
   				R.add_reagent(reagent, actual)
   				energy = max(energy - actual / 10, 0)
  
positive.code: 
  /obj/machinery/chem_dispenser/constructable/RefreshParts()
  	var/time = 0
  	var/temp_energy = 0
  	var/i
  	for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
  		temp_energy += M.rating
  	temp_energy--
  	max_energy = temp_energy * 5  //max energy = (bin1.rating + bin2.rating - 1) * 5, 5 on lowest 25 on highest
  	for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
  		time += C.rating
  	for(var/obj/item/weapon/stock_parts/cell/P in component_parts)
  		time += round(P.maxcharge, 10000) / 10000
  	recharge_delay /= time/2         //delay between recharges, double the usual time on lowest 50% less than usual on highest
  	for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
  		for(i=1, i<=M.rating, i++)
  
negative.code: 		recharged -= 1
  
  /obj/machinery/chem_dispenser/proc/recharge()
  	var/usedpower = cell.give( 1 / powerefficiency) //Should always be a gain of one on the UI.
  	if(usedpower)
  		use_power(2500)
  
  /obj/machinery/chem_dispenser/emag_act(mob/user)
  