anchor.diff:  	current_cycle++
   	if(holder)
   		holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
  -	return
   
   // Called when this reagent is first added to a mob
   /datum/reagent/proc/on_mob_add(mob/living/L, amount)
   	if(!iscarbon(L))
   		return
   	var/mob/living/carbon/M = L
  +	log_reagent("MOB ADD: on_mob_add(): [key_name(M)] at [AREACOORD(T)] - [volume] of [type] with [purity] purity")
   	if (purity == 1)
  -		log_game("CHEM: [L] ckey: [L.key] has ingested [volume]u of [type]")
   		return
   	if(cached_purity == 1)
   		cached_purity = purity
  
positive.code: 			R.name = name//Negative effects are hidden
  			if(R.chemical_flags & REAGENT_INVISIBLE)
  				R.chemical_flags |= (REAGENT_INVISIBLE)
  		log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [inverse_chem]")
  		return
  	else if (impure_chem) //SPLIT
  		var/impureVol = amount * (1 - purity)
  		if(!(chemical_flags & REAGENT_SPLITRETAINVOL))
  			M.reagents.remove_reagent(type, impureVol, FALSE)
  		M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity)
  		log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [type]")
  		log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [impure_chem]")
  	return
  
  /datum/reagent/proc/on_update(atom/A)
  	return
  
negative.code: /datum/reagent/proc/overdose_start(mob/living/M)
  	to_chat(M, "<span class='userdanger'>You feel like you took too much of [name]!</span>")
  	SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name)
  
  /datum/reagent/proc/addiction_act_stage1(mob/living/M)
  	SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_light, name)
  	if(prob(30))
  		to_chat(M, "<span class='notice'>You feel like having some [name] right about now.</span>")
  
  /datum/reagent/proc/addiction_act_stage2(mob/living/M)
  	SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_medium, name)
  	if(prob(30))
  		to_chat(M, "<span class='notice'>You feel like you need [name]. You just can't get enough.</span>")
  
  /datum/reagent/proc/addiction_act_stage3(mob/living/M)
  	SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_severe, name)
  	if(prob(30))
  		to_chat(M, "<span class='danger'>You have an intense craving for [name].</span>")
  
  /datum/reagent/proc/addiction_act_stage4(mob/living/M)
  	SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_critical, name)
  	if(prob(30))
  		to_chat(M, "<span class='boldannounce'>You're not feeling good at all! You really need some [name].</span>")
  
  /proc/pretty_string_from_reagent_list(list/reagent_list)
  	//Convert reagent list to a printable string for logging etc
  