anchor.diff:  		to_chat(user, "<span class='revenwarning'>It is shifting and distorted. It would be wise to destroy this.</span>")
   
   /obj/item/weapon/ectoplasm/revenant/proc/reform()
  -	if(QDELETED(src) || inert)
  +	if(QDELETED(src) || QDELETED(revenant) || inert)
   		return
   	var/key_of_revenant
   	message_admins("Revenant ectoplasm was left undestroyed for 1 minute and is reforming into a new revenant.")
   	loc = get_turf(src) //In case it's in a backpack or someone's hand
  -	var/mob/living/simple_animal/revenant/R = new(get_turf(src))
  +	revenant.forceMove(loc)
   	if(client_to_revive)
   		for(var/mob/M in GLOB.dead_mob_list)
   			if(M.client == client_to_revive) //Only recreates the mob if the mob the client is in is dead
  -				R.client = client_to_revive
  +				revenant.client = client_to_revive
   				key_of_revenant = client_to_revive.key
   	if(!key_of_revenant)
   		message_admins("The new revenant's old client either could not be found or is in a new, living mob - grabbing a random candidate instead...")
  -		var/list/candidates = get_candidates(ROLE_REVENANT)
  +		var/list/candidates = pollCandidatesForMob("Do you want to be [revenant.name] (reforming)?", "revenant", null, ROLE_REVENANT, 50, revenant)
   		if(!candidates.len)
  -			qdel(R)
  +			qdel(revenant)
   			message_admins("No candidates were found for the new revenant. Oh well!")
   			inert = TRUE
   			visible_message("<span class='revenwarning'>[src] settles down and seems lifeless.</span>")
   			return
   		var/client/C = pick(candidates)
  +		revenant.client = C
   		key_of_revenant = C.key
   		if(!key_of_revenant)
  -			qdel(R)
  +			qdel(revenant)
   			message_admins("No ckey was found for the new revenant. Oh well!")
   			inert = TRUE
   			visible_message("<span class='revenwarning'>[src] settles down and seems lifeless.</span>")
   			return
  -	var/datum/mind/player_mind = new /datum/mind(key_of_revenant)
  -	R.essence_regen_cap = essence
  -	R.essence = R.essence_regen_cap
  -	player_mind.active = 1
  -	player_mind.transfer_to(R)
  -	player_mind.assigned_role = "revenant"
  -	player_mind.special_role = "Revenant"
  -	SSticker.mode.traitors |= player_mind
  +
   	message_admins("[key_of_revenant] has been [client_to_revive ? "re":""]made into a revenant by reforming ectoplasm.")
   	log_game("[key_of_revenant] was [client_to_revive ? "re":""]made as a revenant by reforming ectoplasm.")
   	visible_message("<span class='revenboldnotice'>[src] suddenly rises into the air before fading away.</span>")
  +
  +	revenant.essence = essence
  +	revenant.essence_regen_cap = essence
  +	revenant.death_reset()
  +	revenant.key = key_of_revenant
  +	revenant = null
   	qdel(src)
   
  +/obj/item/weapon/ectoplasm/revenant/Destroy()
  +	if(!QDELETED(revenant))
  +		qdel(revenant)
  +	..()
   
   //objectives
   /datum/objective/revenant
  
positive.code: 
  //Life, Stat, Hud Updates, and Say
  /mob/living/simple_animal/revenant/Life()
  	if(revealed && essence <= 0)
  		death()
  	if(unreveal_time && world.time >= unreveal_time)
  
negative.code: 	death()
  
  /mob/living/simple_animal/revenant/death()
  	if(!revealed || stasis) //Revenants cannot die if they aren't revealed //or are already dead
  		return 0
  	to_chat(src, "<span class='revendanger'>NO! No... it's too late, you can feel your essence [pick("breaking apart", "drifting away")]...</span>")
  	notransform = TRUE
  	revealed = TRUE
  