anchor.diff:  			master.growth_queue -= src
   		..()
   
  -	attackby(obj/item/weapon/W as obj, mob/user as mob)
  -		if (!W || !user || !W.type) return
  -		switch(W.type)
  -			if(/obj/item/weapon/circular_saw) del src
  -			if(/obj/item/weapon/kitchen/utensil/knife) del src
  -			if(/obj/item/weapon/scalpel) del src
  -			if(/obj/item/weapon/twohanded/fireaxe) del src
  -			if(/obj/item/weapon/hatchet) del src
  -			if(/obj/item/weapon/melee/energy) del src
  -
  -			//less effective weapons
  -			if(/obj/item/weapon/wirecutters)
  -				if(prob(25)) del src
  -			if(/obj/item/weapon/shard)
  -				if(prob(25)) del src
  -
  -			else //weapons with subtypes
  -				if(istype(W, /obj/item/weapon/melee/energy/sword)) del src
  -				else if(istype(W, /obj/item/weapon/weldingtool))
  -					var/obj/item/weapon/weldingtool/WT = W
  -					if(WT.remove_fuel(0, user)) del src
  -			//TODO: add plant-b-gone
  -		..()
  -
  -	attack_hand(mob/user as mob)
  -		for(var/mob/M in src.loc)
  -			if(M.buckled == src)
  -				if(prob(50))
  -					if(M == user)
  -						user << "\red You break free from the vines!"
  -					else
  -						user << "\red You rip away at the vines and free [M]!"
  -						M << "\red [user] frees you from the vines!"
  -					M.buckled = null
  +
  +/obj/effect/spacevine/attackby(obj/item/weapon/W as obj, mob/user as mob)
  +	if (!W || !user || !W.type) return
  +	switch(W.type)
  +		if(/obj/item/weapon/circular_saw) del src
  +		if(/obj/item/weapon/kitchen/utensil/knife) del src
  +		if(/obj/item/weapon/scalpel) del src
  +		if(/obj/item/weapon/twohanded/fireaxe) del src
  +		if(/obj/item/weapon/hatchet) del src
  +		if(/obj/item/weapon/melee/energy) del src
  +
  +		//less effective weapons
  +		if(/obj/item/weapon/wirecutters)
  +			if(prob(25)) del src
  +		if(/obj/item/weapon/shard)
  +			if(prob(25)) del src
  +
  +		else //weapons with subtypes
  +			if(istype(W, /obj/item/weapon/melee/energy/sword)) del src
  +			else if(istype(W, /obj/item/weapon/weldingtool))
  +				var/obj/item/weapon/weldingtool/WT = W
  +				if(WT.remove_fuel(0, user)) del src
  +			else
  +				manual_unbuckle(user)
  +				return
  +		//TODO: add plant-b-gone
  +	..()
  +
  +
  +/obj/effect/spacevine/attack_hand(mob/user as mob)
  +	manual_unbuckle(user)
  +
  +
  +/obj/effect/spacevine/attack_paw(mob/user as mob)
  +	manual_unbuckle(user)
  +
  +/obj/effect/spacevine/proc/unbuckle()
  +	if(buckled_mob)
  +		if(buckled_mob.buckled == src)	//this is probably unneccesary, but it doesn't hurt
  +			buckled_mob.buckled = null
  +			buckled_mob.anchored = initial(buckled_mob.anchored)
  +			buckled_mob.update_canmove()
  +		buckled_mob = null
  +	return
  +
  +/obj/effect/spacevine/proc/manual_unbuckle(mob/user as mob)
  +	if(buckled_mob)
  +		if(prob(50))
  +			if(buckled_mob.buckled == src)
  +				if(buckled_mob != user)
  +					buckled_mob.visible_message(\
  +						"<span class='notice'>[user.name] frees [buckled_mob.name] from the vines.</span>",\
  +						"<span class='notice'>[user.name] frees you from the vines.</span>",\
  +						"<span class='warning'>You hear shredding and ripping.</span>")
   				else
  -					user << "\red You rip away at the vines..."
  -				break //only process one captured mob.
  -
  -	attack_paw(mob/user as mob)
  -		return src.attack_hand(user)
  +					buckled_mob.visible_message(\
  +						"<span class='notice'>[buckled_mob.name] struggles free of the vines.</span>",\
  +						"<span class='notice'>You untangle the vines from around yourself.</span>",\
  +						"<span class='warning'>You hear shredding and ripping.</span>")
  +			unbuckle()
  +		else
  +			var/text = pick("rips","tears","pulls")
  +			user.visible_message(\
  +				"<span class='notice'>[user.name] [text] at the vines.</span>",\
  +				"<span class='notice'>You [text] at the vines.</span>",\
  +				"<span class='warning'>You hear shredding and ripping.</span>")
  +	return
   
   /obj/effect/spacevine_controller
   	var/list/obj/effect/spacevine/vines = list()
  
positive.code: 				if(prob(20))
  					SV.grow()
  			else //If tile is fully grown
  				SV.grab()
  
  			//if(prob(25))
  			SV.spread()
  
negative.code: 	pass_flags = PASSTABLE | PASSGRILLE
  	var/energy = 0
  	var/obj/effect/spacevine_controller/master = null
  	var/mob/living/buckled_mob
  
  	New()
  		return
  