anchor.diff:  	if(!target_mob)
   		fail_invoke()
   		return 0
  -	if(saccing)
  -		if(!in_range(target_mob, src))
  -			user << "<span class='cultitalic'>The sacrificial target has been moved!</span>"
  -			fail_invoke()
  -			log_game("Raise Dead rune failed - catalyst corpse moved")
  -			return 0
  -		if(target_mob.stat != DEAD)
  -			user << "<span class='cultitalic'>The sacrificial target must be dead!</span>"
  -			fail_invoke()
  -			log_game("Raise Dead rune failed - catalyst corpse is not dead")
  -			return 0
  -	else if(!(target_mob in T.contents))
  -		user << "<span class='cultitalic'>The corpse to revive has been moved!</span>"
  +		if(!(target_mob in T.contents))
  +	user << "<span class='cultitalic'>The corpse to revive has been moved!</span>"
   		fail_invoke()
   		log_game("Raise Dead rune failed - revival target moved")
   		return 0
  +	var/mob/dead/observer/ghost = target_mob.get_ghost(TRUE)
  +	if(!ghost)
  +		user << "<span class='cultitalic'>The corpse to revive has no spirit!</span>"
  +		fail_invoke()
  +		log_game("Raise Dead rune failed - revival target has no ghost")
  +		return 0
  +	if(!sacrificed.len || sacrificed.len <= revives_used)
  +		user << "<span class='warning'>You have sacrificed too few people to revive a cultist!</span>"
  +		fail_invoke()
  +		log_game("Raise Dead rune failed - too few sacrificed")
  +		return 0
   	return 1
   
   /obj/effect/rune/raise_dead/fail_invoke()
   	..()
   	for(var/mob/living/M in range(1,src))
  -		if(M.stat == DEAD)
  +		if(iscultist(M) && M.stat == DEAD)
   			M.visible_message("<span class='warning'>[M] twitches.</span>")
   
   
  
positive.code: /var/list/sacrificed = list()
  var/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed)
  
  /*
  
negative.code: 		for(var/M in invokers)
  			var/mob/living/L = M
  			L.say(invocation)
  		do_invoke_glow()
  	
  /obj/effect/rune/proc/do_invoke_glow()
  	var/oldtransform = transform
  	spawn(0) //animate is a delay, we want to avoid being delayed
  		animate(src, transform = matrix()*2, alpha = 0, time = 5) //fade out
  		animate(transform = oldtransform, alpha = 255, time = 0)
  		
  /obj/effect/rune/proc/fail_invoke()
  	//This proc contains the effects of a rune if it is not invoked correctly due to  not having enough cultists. By default, it's just a basic fizzle.
  	visible_message("<span class='warning'>The markings pulse with a \
  		small flash of red light, then fall dark.</span>")
  	spawn(0) //animate is a delay, we want to avoid being delayed
  