anchor.diff:  					if(R.overdosed)
   						R.overdose_process(M)
   					if(is_type_in_list(R,addiction_list))
  -						for(var/datum/reagent/addicted_reagent in addiction_list)
  -							if(istype(R, addicted_reagent))
  -								addicted_reagent.addiction_stage = -15 // you're satisfied for a good while.
  +						for(var/addiction in addiction_list)
  +							var/datum/reagent/A = addiction
  +							if(istype(R, A))
  +								A.addiction_stage = -15 // you're satisfied for a good while.
   				R.on_mob_life(M)
   
   	if(can_overdose)
   		if(addiction_tick == 6)
   			addiction_tick = 1
  -			for(var/A in addiction_list)
  -				var/datum/reagent/R = A
  +			for(var/addiction in addiction_list)
  +				var/datum/reagent/R = addiction
   				if(M && R)
   					if(R.addiction_stage <= 0)
   						R.addiction_stage++
  
positive.code: 	return 0
  
  /datum/reagents/proc/get_reagent_amount(reagent)
  	for(var/A in reagent_list)
  		var/datum/reagent/R = A
  		if (R.id == reagent)
  			return R.volume
  
  	return 0
  
  /datum/reagents/proc/get_reagents()
  	var/res = ""
  	for(var/datum/reagent/A in reagent_list)
  		if (res != "")
  			res += ","
  		res += A.name
  
  	return res
  
  /datum/reagents/proc/remove_all_type(reagent_type, amount, strict = 0, safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included.
  	if(!isnum(amount)) return 1
  
  	var/has_removed_reagent = 0
  
  	for(var/datum/reagent/R in reagent_list)
  		var/matches = 0
  		// Switch between how we check the reagent type
  		if(strict)
  
negative.code: 	// Technically we should probably copy all data lists, but
  	// that could possibly eat up a lot of memory needlessly
  	// if most data lists are read-only.
  	if(trans_data["viruses"])
  		var/list/v = trans_data["viruses"]
  		trans_data["viruses"] = v.Copy()
  
  