anchor.diff:  		fail_invoke()
   
   
  -//Rite of Enlightenment: Converts a normal crewmember to the cult.
  +
  +//Rite of Offering: Converts or sacrifices a target.
   /obj/effect/rune/convert
  -	cultist_name = "Convert"
  -	cultist_desc = "converts a normal crewmember on top of it to the cult. Does not work on mindshield-implanted crew."
  +	cultist_name = "Offer"
  +	cultist_desc = "offers a noncultist above it to Nar-Sie, either converting them or sacrificing them."
  +	req_cultists_text = "2 for conversion, 3 for living sacrifices and sacrifice targets."
   	invocation = "Mah'weyh pleggh at e'ntrath!"
   	icon_state = "3"
  -	color = rgb(200, 0, 0)
  -	req_cultists = 2
  +	color = "#FFFFFF"
  +	req_cultists = 1
  +	allow_excess_invokers = 1
  +	rune_in_use = FALSE
   
   /obj/effect/rune/convert/invoke(var/list/invokers)
  -	var/list/convertees = list()
  +	if(rune_in_use)
  +		return
  +	var/list/myriad_targets = list()
   	var/turf/T = get_turf(src)
   	for(var/mob/living/M in T)
  -		if(M.stat != DEAD && !iscultist(M) && is_convertable_to_cult(M.mind))
  -			convertees |= M
  -		else if(is_sacrifice_target(M.mind))
  -			for(var/C in invokers)
  -				C << "<span class='cultlarge'>\"I desire this one for myself. <i>SACRIFICE THEM!</i>\"</span>"
  -		else if(is_servant_of_ratvar(M))
  -			M.visible_message("<span class='warning'>[M]'s eyes glow a defiant yellow!</span>", \
  -			"<span class='cultlarge'>\"Stop resisting. You <i>will</i> be mi-\"</span> <span class='large_brass'>\"Give up and you will feel pain unlike anything you've ever felt!\"</span>")
  -			M.Weaken(4)
  -	if(!convertees.len)
  -		fail_invoke()
  -		log_game("Convert rune failed - no eligible convertees")
  -		return
  -	var/mob/living/new_cultist = pick(convertees)
  -	if(new_cultist.null_rod_check())
  +		if(!iscultist(M))
  +			myriad_targets |= M
  +	if(!myriad_targets.len)
  +		fail_invoke()
  +		log_game("Offer rune failed - no eligible targets")
  +		return
  +	rune_in_use = TRUE
  +	visible_message("<span class='warning'>[src] pulses blood red!</span>")
  +	color = "#7D1717"
  +	..()
  +	var/mob/living/L = pick(myriad_targets)
  +	var/is_clock = is_servant_of_ratvar(L)
  +	var/is_convertable = is_convertable_to_cult(L.mind)
  +	if(L.stat != DEAD && (is_clock || is_convertable))
  +		if(is_clock)
  +			L.visible_message("<span class='warning'>[L]'s eyes glow a defiant yellow!</span>", \
  +			"<span class='cultlarge'>\"Stop resisting. You <i>will</i> be mi-\"</span>\n\
  +			<span class='large_brass'>\"Give up and you will feel pain unlike anything you've ever felt!\"</span>")
  +			L.Weaken(4)
  +		else if(is_convertable)
  +			do_convert(L, invokers)
  +	else
  +		do_sacrifice(L, invokers)
  +	color = initial(color)
  +	rune_in_use = FALSE
  +
  +/obj/effect/rune/convert/proc/do_convert(mob/living/convertee, list/invokers)
  +	if(invokers.len < 2)
   		for(var/M in invokers)
  -			M << "<span class='warning'>Something is shielding [new_cultist]'s mind!</span>"
  -		fail_invoke()
  -		log_game("Convert rune failed - convertee had null rod")
  -		return
  -	..()
  -	new_cultist.visible_message("<span class='warning'>[new_cultist] writhes in pain as the markings below them glow a bloody red!</span>", \
  -					  			"<span class='cultlarge'><i>AAAAAAAAAAAAAA-</i></span>")
  -	ticker.mode.add_cultist(new_cultist.mind, 1)
  +			M << "<span class='warning'>You need more invokers to convert [convertee]!</span>"
  +		log_game("Offer rune failed - tried conversion with one invoker")
  +		return 0
  +	if(convertee.null_rod_check())
  +		for(var/M in invokers)
  +			M << "<span class='warning'>Something is shielding [convertee]'s mind!</span>"
  +		log_game("Offer rune failed - convertee had null rod")
  +		return 0
  +	var/brutedamage = convertee.getBruteLoss()
  +	var/burndamage = convertee.getFireLoss()
  +	if(brutedamage || burndamage)
  +		convertee.adjustBruteLoss(-brutedamage)
  +		convertee.adjustFireLoss(-burndamage)
  +	convertee.visible_message("<span class='warning'>[convertee] writhes in pain \
  +	[brutedamage || burndamage ? "even as their wounds heal and close" : "as the markings below them glow a bloody red"]!</span>", \
  + 	"<span class='cultlarge'><i>AAAAAAAAAAAAAA-</i></span>")
  +	ticker.mode.add_cultist(convertee.mind, 1)
   	new /obj/item/weapon/tome(get_turf(src))
  -	new_cultist.mind.special_role = "Cultist"
  -	new_cultist << "<span class='cultitalic'><b>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \
  +	convertee.mind.special_role = "Cultist"
  +	convertee << "<span class='cultitalic'><b>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \
   	and something evil takes root.</b></span>"
  -	new_cultist << "<span class='cultitalic'><b>Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\
  +	convertee << "<span class='cultitalic'><b>Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\
   	</b></span>"
  -
  -//Rite of Tribute: Sacrifices a crew member to Nar-Sie. Places them into a soul shard if they're in their body.
  -/obj/effect/rune/sacrifice
  -	cultist_name = "Sacrifice"
  -	cultist_desc = "sacrifices a crew member to the Geometer. May place them into a soul shard if their spirit remains in their body."
  -	icon_state = "3"
  -	allow_excess_invokers = 1
  -	invocation = "Barhah hra zar'garis!"
  -	color = rgb(255, 255, 255)
  -	rune_in_use = 0
  -
  -/obj/effect/rune/sacrifice/New()
  -	..()
  -	icon_state = "[rand(1,6)]"
  -
  -/obj/effect/rune/sacrifice/invoke(var/list/invokers)
  -	if(rune_in_use)
  -		return
  -	rune_in_use = 1
  -	var/mob/living/user = invokers[1] //the first invoker is always the user
  -	var/turf/T = get_turf(src)
  -	var/list/possible_targets = list()
  -	for(var/mob/living/M in T.contents)
  -		if(M.mind)
  -			if(M.mind in sacrificed)
  -				continue
  -		if(!iscultist(M))
  -			possible_targets.Add(M)
  -	var/mob/offering
  -	if(possible_targets.len > 1) //If there's more than one target, allow choice
  -		offering = input(user, "Choose an offering to sacrifice.", "Unholy Tribute") as null|anything in possible_targets
  -		if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated())
  -			return
  -	else if(possible_targets.len) //Otherwise, if there's a target at all, pick the only one
  -		offering = possible_targets[possible_targets.len]
  -	if(!offering)
  -		rune_in_use = 0
  -		return
  -	/*var/obj/item/weapon/nullrod/N = offering.null_rod_check()
  -	if(N)
  -		user << "<span class='warning'>Something is blocking the Geometer's magic!</span>"
  -		log_game("Sacrifice rune failed - target has \a [N]!")
  -		fail_invoke()
  -		rune_in_use = 0
  -		return*/
  -	if(((ishuman(offering) || isrobot(offering)) && offering.stat != DEAD) || is_sacrifice_target(offering.mind)) //Requires three people to sacrifice living targets
  -		if(invokers.len < 3)
  -			for(var/M in invokers)
  -				M << "<span class='cultitalic'>[offering] is too greatly linked to the world! You need three acolytes!</span>"
  -			fail_invoke()
  -			log_game("Sacrifice rune failed - not enough acolytes and target is living")
  -			rune_in_use = 0
  -			return
  -	visible_message("<span class='warning'>[src] pulses blood red!</span>")
  -	color = rgb(126, 23, 23)
  -	..()
  -	sac(invokers, offering)
  -	color = initial(color)
  -
  -/obj/effect/rune/sacrifice/proc/sac(var/list/invokers, mob/living/T)
  -	var/sacrifice_fulfilled
  -	if(T)
  -		if(istype(T, /mob/living/simple_animal/pet/dog))
  -			for(var/M in invokers)
  -				var/mob/living/L = M
  -				L << "<span class='cultlarge'>\"Even I have standards, such as they are!\"</span>"
  -				if(L.reagents)
  -					L.reagents.add_reagent("hell_water", 2)
  -		if(T.mind)
  -			sacrificed.Add(T.mind)
  -			if(is_sacrifice_target(T.mind))
  -				sacrifice_fulfilled = 1
  -		PoolOrNew(/obj/effect/overlay/temp/cult/sac, src.loc)
  +	return 1
  +
  +/obj/effect/rune/convert/proc/do_sacrifice(mob/living/sacrificial, list/invokers)
  +	if((((ishuman(sacrificial) || isrobot(sacrificial)) && sacrificial.stat != DEAD) || is_sacrifice_target(sacrificial.mind)) && invokers.len < 3)
   		for(var/M in invokers)
  -			if(sacrifice_fulfilled)
  -				M << "<span class='cultlarge'>\"Yes! This is the one I desire! You have done well.\"</span>"
  +			M << "<span class='cultitalic'>[sacrificial] is too greatly linked to the world! You need three acolytes!</span>"
  +		log_game("Offer rune failed - not enough acolytes and target is living or sac target")
  +		return FALSE
  +	var/sacrifice_fulfilled = FALSE
  +
  +	if(sacrificial.mind)
  +		sacrificed += sacrificial.mind
  +		if(is_sacrifice_target(sacrificial.mind))
  +			sacrifice_fulfilled = TRUE
  +		else
  +			sacrificed += sacrificial
  +
  +	PoolOrNew(/obj/effect/overlay/temp/cult/sac, get_turf(src))
  +	for(var/M in invokers)
  +		if(sacrifice_fulfilled)
  +			M << "<span class='cultlarge'>\"Yes! This is the one I desire! You have done well.\"</span>"
  +		else
  +			if(ishuman(sacrificial) || isrobot(sacrificial))
  +				M << "<span class='cultlarge'>\"I accept this sacrifice.\"</span>"
   			else
  -				if(ishuman(T) || isrobot(T))
  -					M << "<span class='cultlarge'>\"I accept this sacrifice.\"</span>"
  -				else
  -					M << "<span class='cultlarge'>\"I accept this meager sacrifice.\"</span>"
  -		if(T.mind)
  -			var/obj/item/device/soulstone/stone = new /obj/item/device/soulstone(get_turf(src))
  -			stone.invisibility = INVISIBILITY_MAXIMUM //so it's not picked up during transfer_soul()
  -			if(!stone.transfer_soul("FORCE", T, usr)) //If it cannot be added
  -				qdel(stone)
  -			if(stone)
  -				stone.invisibility = 0
  -			if(!T)
  -				rune_in_use = 0
  -				return
  -		if(isrobot(T))
  -			playsound(T, 'sound/magic/Disable_Tech.ogg', 100, 1)
  -			T.dust() //To prevent the MMI from remaining
  +				M << "<span class='cultlarge'>\"I accept this meager sacrifice.\"</span>"
  +
  +	var/obj/item/device/soulstone/stone = new /obj/item/device/soulstone(get_turf(src))
  +	if(sacrificial.mind)
  +		stone.invisibility = INVISIBILITY_MAXIMUM //so it's not picked up during transfer_soul()
  +		stone.transfer_soul("FORCE", sacrificial, usr)
  +		stone.invisibility = 0
  +
  +	if(sacrificial)
  +		if(isrobot(sacrificial))
  +			playsound(sacrificial, 'sound/magic/Disable_Tech.ogg', 100, 1)
  +			sacrificial.dust() //To prevent the MMI from remaining
   		else
  -			playsound(T, 'sound/magic/Disintegrate.ogg', 100, 1)
  -			T.gib()
  -	rune_in_use = 0
  +			playsound(sacrificial, 'sound/magic/Disintegrate.ogg', 100, 1)
  +			sacrificial.gib()
  +	return TRUE
   
   //Ritual of Dimensional Rending: Calls forth the avatar of Nar-Sie upon the station.
   /obj/effect/rune/narsie
  
positive.code: 
  	var/invocation = "Aiy ele-mayo!" //This is said by cultists when the rune is invoked.
  	var/req_cultists = 1 //The amount of cultists required around the rune to invoke it. If only 1, any cultist can invoke it.
  	var/rune_in_use = 0 // Used for some runes, this is for when you want a rune to not be usable when in use.
  
  	var/scribe_delay = 50 //how long the rune takes to create
  
negative.code: 	if(iscultist(user) || user.stat == DEAD) //If they're a cultist or a ghost, tell them the effects
  		user << "<b>Name:</b> [cultist_name]"
  		user << "<b>Effects:</b> [capitalize(cultist_desc)]"
  		user << "<b>Required Acolytes:</b> [req_cultists_text ? "[req_cultists_text]":"[req_cultists]"]"
  		if(req_keyword && keyword)
  			user << "<b>Keyword:</b> [keyword]"
  
  