anchor.diff:  	holder.alpha = 125
   
   /datum/spacevine_mutation/oxy_eater
  -	name = "oxygen consuming"
  -	hue = "#ffff88"
  +	name = "Oxygen consuming"
  +	hue = "#28B5B5"
   	severity = 3
   	quality = NEGATIVE
   
   /datum/spacevine_mutation/oxy_eater/process_mutation(obj/structure/spacevine/holder)
  -	var/turf/open/floor/T = holder.loc
  -	if(istype(T))
  -		var/datum/gas_mixture/GM = T.air
  -		if(!GM.gases[/datum/gas/oxygen])
  +	var/turf/open/floor/turf = holder.loc
  +	if(istype(turf))
  +		var/datum/gas_mixture/gas_mix = turf.air
  +		if(!gas_mix.gases[/datum/gas/oxygen])
   			return
  -		GM.gases[/datum/gas/oxygen][MOLES] = max(GM.gases[/datum/gas/oxygen][MOLES] - severity * holder.energy, 0)
  -		GM.garbage_collect()
  +		gas_mix.gases[/datum/gas/oxygen][MOLES] = max(gas_mix.gases[/datum/gas/oxygen][MOLES] - severity * holder.energy, 0)
  +		gas_mix.garbage_collect()
   
   /datum/spacevine_mutation/nitro_eater
  -	name = "nitrogen consuming"
  -	hue = "#8888ff"
  +	name = "Nitrogen consuming"
  +	hue = "#FF7B54"
   	severity = 3
   	quality = NEGATIVE
   
   /datum/spacevine_mutation/nitro_eater/process_mutation(obj/structure/spacevine/holder)
  -	var/turf/open/floor/T = holder.loc
  -	if(istype(T))
  -		var/datum/gas_mixture/GM = T.air
  -		if(!GM.gases[/datum/gas/nitrogen])
  +	var/turf/open/floor/turf = holder.loc
  +	if(istype(turf))
  +		var/datum/gas_mixture/gas_mix = turf.air
  +		if(!gas_mix.gases[/datum/gas/nitrogen])
   			return
  -		GM.gases[/datum/gas/nitrogen][MOLES] = max(GM.gases[/datum/gas/nitrogen][MOLES] - severity * holder.energy, 0)
  -		GM.garbage_collect()
  +		gas_mix.gases[/datum/gas/nitrogen][MOLES] = max(gas_mix.gases[/datum/gas/nitrogen][MOLES] - severity * holder.energy, 0)
  +		gas_mix.garbage_collect()
   
   /datum/spacevine_mutation/carbondioxide_eater
   	name = "CO2 consuming"
  -	hue = "#00ffff"
  +	hue = "#798777"
   	severity = 3
   	quality = POSITIVE
   
   /datum/spacevine_mutation/carbondioxide_eater/process_mutation(obj/structure/spacevine/holder)
  -	var/turf/open/floor/T = holder.loc
  -	if(istype(T))
  -		var/datum/gas_mixture/GM = T.air
  -		if(!GM.gases[/datum/gas/carbon_dioxide])
  +	var/turf/open/floor/turf = holder.loc
  +	if(istype(turf))
  +		var/datum/gas_mixture/gas_mix = turf.air
  +		if(!gas_mix.gases[/datum/gas/carbon_dioxide])
   			return
  -		GM.gases[/datum/gas/carbon_dioxide][MOLES] = max(GM.gases[/datum/gas/carbon_dioxide][MOLES] - severity * holder.energy, 0)
  -		GM.garbage_collect()
  +		gas_mix.gases[/datum/gas/carbon_dioxide][MOLES] = max(gas_mix.gases[/datum/gas/carbon_dioxide][MOLES] - severity * holder.energy, 0)
  +		gas_mix.garbage_collect()
   
   /datum/spacevine_mutation/plasma_eater
  -	name = "plasma consuming"
  -	hue = "#ffbbff"
  +	name = "Plasma consuming"
  +	hue = "#9074b6"
   	severity = 3
   	quality = POSITIVE
   
   /datum/spacevine_mutation/plasma_eater/process_mutation(obj/structure/spacevine/holder)
  -	var/turf/open/floor/T = holder.loc
  -	if(istype(T))
  -		var/datum/gas_mixture/GM = T.air
  -		if(!GM.gases[/datum/gas/plasma])
  +	var/turf/open/floor/turf = holder.loc
  +	if(istype(turf))
  +		var/datum/gas_mixture/gas_mix = turf.air
  +		if(!gas_mix.gases[/datum/gas/plasma])
   			return
  -		GM.gases[/datum/gas/plasma][MOLES] = max(GM.gases[/datum/gas/plasma][MOLES] - severity * holder.energy, 0)
  -		GM.garbage_collect()
  +		gas_mix.gases[/datum/gas/plasma][MOLES] = max(gas_mix.gases[/datum/gas/plasma][MOLES] - severity * holder.energy, 0)
  +		gas_mix.garbage_collect()
   
   /datum/spacevine_mutation/thorns
  -	name = "thorny"
  -	hue = "#666666"
  +	name = "Thorny"
  +	hue = "#9ECCA4"
   	severity = 10
   	quality = NEGATIVE
   
   /datum/spacevine_mutation/thorns/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
   	if(prob(severity) && istype(crosser) && !isvineimmune(crosser))
  -		var/mob/living/M = crosser
  -		M.adjustBruteLoss(5)
  -		to_chat(M, span_alert("You cut yourself on the thorny vines."))
  -
  -/datum/spacevine_mutation/thorns/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
  +		var/mob/living/victim = crosser
  +		victim.adjustBruteLoss(5)
  +		to_chat(victim, span_danger("You cut yourself on the thorny vines."))
  +
  +/datum/spacevine_mutation/thorns/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/item, expected_damage)
   	if(prob(severity) && istype(hitter) && !isvineimmune(hitter))
  -		var/mob/living/M = hitter
  -		M.adjustBruteLoss(5)
  -		to_chat(M, span_alert("You cut yourself on the thorny vines."))
  +		var/mob/living/victim = hitter
  +		victim.adjustBruteLoss(5)
  +		to_chat(victim, span_danger("You cut yourself on the thorny vines."))
   	. = expected_damage
   
   /datum/spacevine_mutation/woodening
  -	name = "hardened"
  +	name = "Hardened"
   	hue = "#997700"
   	quality = NEGATIVE
   
  
positive.code: 		qdel(prey)
  
  /datum/spacevine_mutation/aggressive_spread  //very OP, but im out of other ideas currently
  	name = "aggressive spreading"
  	hue = "#333333"
  	severity = 3
  	quality = NEGATIVE
  
  /// Checks mobs on spread-target's turf to see if they should be hit by a damaging proc or not.
  /datum/spacevine_mutation/aggressive_spread/on_spread(obj/structure/spacevine/holder, turf/target, mob/living)
  	for(var/mob/living/M in target)
  		if(!isvineimmune(M) && M.stat != DEAD) // Don't kill immune creatures. Dead check to prevent log spam when a corpse is trapped between vine eaters.
  			aggrospread_act(holder, M)
  
  /// What happens if an aggr spreading vine buckles a mob.
  /datum/spacevine_mutation/aggressive_spread/on_buckle(obj/structure/spacevine/holder, mob/living/buckled)
  	aggrospread_act(holder, buckled)
  
  /// Hurts mobs. To be used when a vine with aggressive spread mutation spreads into the mob's tile or buckles them.
  /datum/spacevine_mutation/aggressive_spread/aggrospread_act(obj/structure/spacevine/S, mob/living/M)
  	var/mob/living/carbon/C = M //If the mob is carbon then it now also exists as a "C", and not just an M.
  	if(istype(C)) //If the mob (M) is a carbon subtype (C) we move on to pick a more complex damage proc, with damage zones, wounds and armor mitigation.
  		var/obj/item/bodypart/limb = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD, BODY_ZONE_CHEST) //Picks a random bodypart. Does not runtime even if it's missing.
  		var/armor = C.run_armor_check(limb, MELEE, null, null) //armor = the armor value of that randomly chosen bodypart. Nulls to not print a message, because it would still print on pierce.
  		var/datum/spacevine_mutation/thorns/T = locate() in S.mutations //Searches for the thorns mutation in the "mutations"-list inside obj/structure/spacevine, and defines T if it finds it.
  		if(T && (prob(40))) //If we found the thorns mutation there is now a chance to get stung instead of lashed or smashed.
  			C.apply_damage(50, BRUTE, def_zone = limb, wound_bonus = rand(-20,10), sharpness = SHARP_POINTY) //This one gets a bit lower damage because it ignores armor.
  			C.Stun(1 SECONDS) //Stopped in place for a moment.
  			playsound(M, 'sound/weapons/pierce.ogg', 50, TRUE, -1)
  			M.visible_message(span_danger("[M] is nailed by a sharp thorn!"), \
  			span_userdanger("You are nailed by a sharp thorn!"))
  			log_combat(S, M, "aggressively pierced") //"Aggressively" for easy ctrl+F'ing in the attack logs.
  		else
  			if(prob(80))
  				C.apply_damage(60, BRUTE, def_zone = limb, blocked = armor, wound_bonus = rand(-20,10), sharpness = SHARP_EDGED)
  				C.Knockdown(2 SECONDS)
  				playsound(M, 'sound/weapons/whip.ogg', 50, TRUE, -1)
  				M.visible_message(span_danger("[M] is lacerated by an outburst of vines!"), \
  				span_userdanger("You are lacerated by an outburst of vines!"))
  				log_combat(S, M, "aggressively lacerated")
  			else
  				C.apply_damage(60, BRUTE, def_zone = limb, blocked = armor, wound_bonus = rand(-20,10), sharpness = NONE)
  				C.Knockdown(3 SECONDS)
  				var/atom/throw_target = get_edge_target_turf(C, get_dir(S, get_step_away(C, S)))
  				C.throw_at(throw_target, 3, 6)
  				playsound(M, 'sound/effects/hit_kick.ogg', 50, TRUE, -1)
  				M.visible_message(span_danger("[M] is smashed by a large vine!"), \
  				span_userdanger("You are smashed by a large vine!"))
  				log_combat(S, M, "aggressively smashed")
  	else //Living but not a carbon? Maybe a silicon? Can't be wounded so have a big chunk of simple bruteloss with no special effects. They can be entangled.
  		M.adjustBruteLoss(75)
  		playsound(M, 'sound/weapons/whip.ogg', 50, TRUE, -1)
  		M.visible_message(span_danger("[M] is brutally threshed by [S]!"), \
  		span_userdanger("You are brutally threshed by [S]!"))
  		log_combat(S, M, "aggressively spread into") //You aren't being attacked by the vines. You just happen to stand in their way.
  
  /datum/spacevine_mutation/transparency
  	name = "transparent"
  
negative.code: 		holder.set_light(severity, 0.3)
  
  /datum/spacevine_mutation/toxicity
  	name = "Toxic"
  	hue = "#9B3675"
  	severity = 10
  	quality = NEGATIVE
  
  