anchor.diff:   * Used in attack logs for reagents in pills and such
    *
    * Arguments:
  - * * external_list - list of reagent types = amounts
  + * * external_list - assoc list of reagent type = list(REAGENT_TRANSFER_AMOUNT = amounts, REAGENT_PURITY = purity)
    */
   /datum/reagents/proc/log_list(external_list)
   	if((external_list && !length(external_list)) || !length(reagent_list))
   		return "no reagents"
   
  +
  +
   	var/list/data = list()
   	if(external_list)
   		for(var/r in external_list)
  -			data += "[r] ([round(external_list[r], 0.1)]u)"
  +			var/list/qualities = external_list[r]
  +			data += "[r] ([round(qualities[REAGENT_TRANSFER_AMOUNT], 0.1)]u, [qualities[REAGENT_PURITY]] purity)"
   	else
   		for(var/datum/reagent/reagent as anything in reagent_list) //no reagents will be left behind
  -			data += "[reagent.type] ([round(reagent.volume, 0.1)]u)"
  +			data += "[reagent.type] ([round(reagent.volume, 0.1)]u, [reagent.purity] purity)"
   			//Using types because SOME chemicals (I'm looking at you, chlorhydrate-beer) have the same names as other chemicals.
   	return english_list(data)
   
  
positive.code: 		qdel(reagents)
  	reagents = new /datum/reagents(max_vol, flags)
  	reagents.my_atom = src
  
negative.code: 					R.expose_single(reagent, target_atom, methods, part, show_message)
  				reagent.on_transfer(target_atom, methods, transfer_amount * multiplier)
  			remove_reagent(reagent.type, transfer_amount)
  			var/list/reagent_qualities = list(REAGENT_TRANSFER_AMOUNT = transfer_amount, REAGENT_PURITY = reagent.purity)
  			transfer_log[reagent.type] = reagent_qualities
  
  	else
  		var/to_transfer = amount
  