anchor.diff:  	if(prob(25))
   		holder.entangle(crosser)
   
  -
   // SPACE VINES (Note that this code is very similar to Biomass code)
   /obj/structure/spacevine
  -	name = "space vines"
  +	name = "space vine"
   	desc = "An extremely expansionistic species of vine."
   	icon = 'icons/effects/spacevines.dmi'
   	icon_state = "Light1"
  
positive.code: 	if(isvineimmune(mover))
  		return TRUE
  
  /proc/isvineimmune(atom/A)
  	if(isliving(A))
  		var/mob/living/M = A
  		if(("vines" in M.faction) || ("plants" in M.faction))
  			return TRUE
  	return FALSE
  
negative.code: 		src.icon_state = pick("Hvy1", "Hvy2", "Hvy3")
  		energy = 2
  
  	for(var/datum/spacevine_mutation/mutation in mutations)
  		mutation.on_grow(src)
  
  /// Buckles mobs trying to pass through it
  /obj/structure/spacevine/proc/entangle_mob()
  	if(!has_buckled_mobs() && prob(25))
  		for(var/mob/living/victim in src.loc)
  			entangle(victim)
  			if(has_buckled_mobs())
  				break //only capture one mob at a time
  
  /obj/structure/spacevine/proc/entangle(mob/living/victim)
  	if(!victim || isvineimmune(victim))
  		return
  	for(var/datum/spacevine_mutation/mutation in mutations)
  		mutation.on_buckle(src, victim)
  	if((victim.stat != DEAD) && (victim.buckled != src)) //not dead or captured
  		to_chat(victim, span_userdanger("The vines [pick("wind", "tangle", "tighten")] around you!"))
  		buckle_mob(victim, 1)
  
  /// Finds a target tile to spread to. If checks pass it will spread to it and also proc on_spread on target.
  /obj/structure/spacevine/proc/spread()
  	var/direction = pick(GLOB.cardinals)
  	var/turf/stepturf = get_step(src, direction)
  	if(!isspaceturf(stepturf) && stepturf.Enter(src))
  		var/obj/structure/spacevine/spot_taken = locate() in stepturf //Locates any vine on target turf. Calls that vine "spot_taken".
  		var/datum/spacevine_mutation/vine_eating/eating = locate() in mutations //Locates the vine eating trait in our own seed and calls it E.
  		if(!spot_taken || (eating && (spot_taken && !spot_taken.mutations?.Find(eating)))) //Proceed if there isn't a vine on the target turf, OR we have vine eater AND target vine is from our seed and doesn't. Vines from other seeds are eaten regardless.
  			if(master)
  				for(var/datum/spacevine_mutation/mutation in mutations)
  					mutation.on_spread(src, stepturf) //Only do the on_spread proc if it actually spreads.
  					stepturf = get_step(src,direction) //in case turf changes, to make sure no runtimes happen
  				master.spawn_spacevine_piece(stepturf, src)
  
  /// Destroying an explosive vine sets off a chain reaction
  /obj/structure/spacevine/ex_act(severity, target)
  	var/index
  	for(var/datum/spacevine_mutation/mutation in mutations)
  		index += mutation.on_explosion(severity, target, src)
  	if(!index && prob(34 * severity))
  		qdel(src)
  
  /obj/structure/spacevine/should_atmos_process(datum/gas_mixture/air, exposed_temperature)
  