anchor.diff:  
   /obj/effect/proc_holder/spell/targeted/collective_mind/cast(list/targets)
   	for(var/mob/living/user in targets)
  +		if(!shadowling_check(usr))
  +			charge_counter = charge_max
  +			return
   		var/thralls = 0
   		var/victory_threshold = 15
   		var/mob/M
  
positive.code: /obj/effect/proc_holder/spell/targeted/glare
  	name = "Glare"
  	desc = "Stuns and mutes a target for a decent duration."
  	panel = "Shadowling Abilities"
  
negative.code: 		thrallToRevive.emote("gasp")
  		playsound(thrallToRevive, "bodyfall", 50, 1)
  
  
  // THRALL ABILITIES BEYOND THIS POINT //
  
  
  /obj/effect/proc_holder/spell/targeted/lesser_glare //Thrall version of Glare - same effects but for 3 seconds
  	name = "Lesser Glare"
  	desc = "Stuns and mutes a target for a short duration."
  	panel = "Thrall Abilities"
  	charge_max = 450
  	clothes_req = 0
  
  /obj/effect/proc_holder/spell/targeted/lesser_glare/cast(list/targets)
  	for(var/mob/living/carbon/human/target in targets)
  		if(!ishuman(target) || !target)
  			charge_counter = charge_max
  			return
  		if(target.stat)
  			charge_counter = charge_max
  			return
  		if(is_shadow_or_thrall(target))
  			usr << "<span class='danger'>You don't see why you would want to paralyze an ally.</span>"
  			charge_counter = charge_max
  			return
  		var/mob/living/carbon/human/M = target
  		usr.visible_message("<span class='warning'><b>[usr]'s eyes flash a bright red!</b></span>")
  		target.visible_message("<span class='danger'>[target] freezes in place, their eyes clouding...</span>")
  		if(in_range(target, usr))
  			target << "<span class='userdanger'>Your gaze is forcibly drawn into [usr]'s eyes, and you are starstruck by the heavenly lights...</span>"
  		else //Only alludes to the shadowling if the target is close by
  			target << "<span class='userdanger'>Red lights suddenly dance in your vision, and you are starstruck by their heavenly beauty...</span>"
  		target.Stun(3) //Roughly 30% as long as the normal one
  		M.silent += 3
  
  
  /obj/effect/proc_holder/spell/targeted/lesser_shadow_walk //Thrall version of Shadow Walk, only works in darkness, doesn't grant phasing, but gives near-invisibility
  	name = "Guise"
  	desc = "Wraps your form in shadows, making you harder to see."
  	panel = "Thrall Abilities"
  	charge_max = 1200
  	clothes_req = 0
  	range = -1
  	include_user = 1
  
  /obj/effect/proc_holder/spell/targeted/lesser_shadow_walk/cast(list/targets)
  	for(var/mob/living/user in targets)
  		var/lumcount = 0
  		var/turf/T = user.loc
  		lumcount = T.get_lumcount()
  		if(lumcount > LIGHT_DAM_THRESHOLD)
  			user << "<span class='warning'>It's too bright to do that!</span>"
  			charge_counter = charge_max
  			return
  		user.visible_message("<span class='warning'>[user] suddenly fades away!</span>", "<span class='shadowling'>You veil yourself in darkness, making you harder to see.</span>")
  		user.alpha = 20
  		sleep(40)
  		user.visible_message("<span class='warning'>[user] appears from nowhere!</span>", "<span class='shadowling'>Your shadowy guise slips away.</span>")
  		user.alpha = initial(user.alpha)
  
  
  /obj/effect/proc_holder/spell/targeted/thrall_vision //Toggleable night vision for thralls
  	name = "Darksight"
  	desc = "Gives you night vision."
  	panel = "Thrall Abilities"
  	charge_max = 0
  	range = -1
  	include_user = 1
  	clothes_req = 0
  	var/active = 0
  
  /obj/effect/proc_holder/spell/targeted/thrall_vision/cast(list/targets)
  	for(var/mob/living/user in targets)
  		if(!istype(user) || !ishuman(user)) return
  		var/mob/living/carbon/human/H = user
  		active = !active
  		if(active)
  			user << "<span class='notice'>You shift the nerves in your eyes, allowing you to see in the dark.</span>"
  			H.see_in_dark = 8
  			H.dna.species.invis_sight = SEE_INVISIBLE_MINIMUM
  		else
  			user << "<span class='notice'>You return your vision to normal.</span>"
  			H.see_in_dark = 0
  			H.dna.species.invis_sight = initial(H.dna.species.invis_sight)
  
  
  /obj/effect/proc_holder/spell/targeted/lesser_shadowling_hivemind //Lets a thrall talk with their allies
  	name = "Lesser Commune"
  	desc = "Allows you to silently communicate with all other shadowlings and thralls."
  	panel = "Thrall Abilities"
  	charge_max = 50
  	clothes_req = 0
  	range = -1
  	include_user = 1
  
  /obj/effect/proc_holder/spell/targeted/lesser_shadowling_hivemind/cast(list/targets)
  	for(var/mob/living/user in targets)
  		if(!is_shadow_or_thrall(user))
  			user << "<span class='warning'><b>As you attempt to commune with the others, an agonizing spike of pain drives itself into your head!</b></span>"
  			user.apply_damage(10, BRUTE, "head")
  			return
  		var/text = stripped_input(user, "What do you want to say your masters and fellow thralls?.", "Lesser Commune", "")
  		if(!text)
  			return
  		for(var/mob/M in mob_list)
  			if(is_shadow_or_thrall(M) || (M in dead_mob_list))
  				M << "<span class='shadowling'><b>\[Thrall\]</b><i> [usr.real_name]</i>: [text]</span>"
  
  
  // ASCENDANT ABILITIES BEYOND THIS POINT //
  
  
  /obj/effect/proc_holder/spell/targeted/annihilate //Gibs someone instantly.
  	name = "Annihilate"
  	desc = "Gibs someone instantly."
  	panel = "Ascendant"
  	range = 7
  	charge_max = 0
  	clothes_req = 0
  	sound = 'sound/magic/Staff_Chaos.ogg'
  
  /obj/effect/proc_holder/spell/targeted/annihilate/cast(list/targets)
  	var/mob/living/simple_animal/ascendant_shadowling/SHA = usr
  