anchor.diff:  	if(cause && prob(40))
   		var/list/blobstopick = list()
   		for(var/obj/effect/blob/OB in range(1, B))
  -			blobstopick += OB
  +			if((istype(OB, /obj/effect/blob/normal) || istype(OB, /obj/effect/blob/shield)) && OB.overmind && OB.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id)
  +				blobstopick += OB //as long as the blob picked is valid; ie, a normal or shield blob that has the same chemical as we do, we can swap with it
   		if(blobstopick.len)
   			var/obj/effect/blob/targeted = pick(blobstopick) //randomize the blob chosen, because otherwise it'd tend to the lower left
  -			if(istype(targeted, /obj/effect/blob/normal) || istype(targeted, /obj/effect/blob/shield))
  -				var/turf/T = get_turf(targeted)
  -				targeted.forceMove(get_turf(B))
  -				B.forceMove(T) //swap the blobs
  +			var/turf/T = get_turf(targeted)
  +			targeted.forceMove(get_turf(B))
  +			B.forceMove(T) //swap the blobs
   	return ..()
   
   //does low burn and a lot of stamina damage, reacts to stamina damage
  
positive.code: 	return ..()
  
  /datum/reagent/blob/replicating_foam/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T)
  	if(prob(50))
  		newB.expand() //do it again!
  
  //does brute damage, shifts away when damaged
  
negative.code: 
  /datum/reagent/blob/electromagnetic_web/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
  	reac_volume = ..()
  	if(prob(reac_volume))
  		M.emp_act(2)
  	if(M)
  		M.apply_damage(0.6*reac_volume, BURN)
  
  