anchor.diff:  		to_chat(V, "<span class='danger'>The vines [pick("wind", "tangle", "tighten")] around you!</span>")
   		buckle_mob(V, 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))
  -		for(var/datum/spacevine_mutation/SM in mutations)
  -			SM.on_spread(src, stepturf)
  -			stepturf = get_step(src,direction) //in case turf changes, to make sure no runtimes happen
  -		if(!locate(/obj/structure/spacevine, stepturf))
  +	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/E = locate() in mutations //Locates the vine eating trait in our own seed and calls it E.
  +		if(!spot_taken || (E && (spot_taken && !spot_taken.mutations.Find(E)))) //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/SM in mutations)
  +					SM.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)
   
   /obj/structure/spacevine/ex_act(severity, target)
  -	if(istype(target, type)) //if its agressive spread vine dont do anything
  -		return
   	var/i
   	for(var/datum/spacevine_mutation/SM in mutations)
   		i += SM.on_explosion(severity, target, src)
  
positive.code: 			if(has_buckled_mobs())
  				break //only capture one mob at a time
  
  
  /obj/structure/spacevine/proc/entangle(mob/living/V)
  	if(!V || isvineimmune(V))
  		return
  
negative.code: 	hue = "#ff7700"
  	quality = MINOR_NEGATIVE
  
  /// Destroys any vine on spread-target's tile. The checks for if this should be done are in the spread() proc.
  /datum/spacevine_mutation/vine_eating/on_spread(obj/structure/spacevine/holder, turf/target)
  	for(var/obj/structure/spacevine/prey in target)
  		qdel(prey)
  
  /datum/spacevine_mutation/aggressive_spread  //very OP, but im out of other ideas currently
  