anchor.diff:  			return sqrt(owner.trueLuminosity) - dist
   		else
   			return sqrtTable[owner.trueLuminosity] - dist
  +
  +	proc/readrgb(col)
  +		_l_color = col
  +		if(col)
  +			col_r = GetRedPart(col)
  +			col_g = GetGreenPart(col)
  +			col_b = GetBluePart(col)
  +		else
  +			col_r = null
   
   atom
   	var/datum/light_source/light
  
positive.code: 	proc/remove_effect()
  		// before we apply the effect we remove the light's current effect.
  		for(var/turf/T in effect)	// negate the effect of this light source
  			T.update_lumcount(-effect[T], l_color, 1)
  		effect.Cut()					// clear the effect list
  
  	proc/add_effect()
  		// only do this if the light is turned on and is on the map
  		if(owner.loc && owner.luminosity > 0)
  			l_color = owner.l_color
  			effect = list()
  			for(var/turf/T in view(owner.get_light_range(),owner))
  				var/delta_lumen = lum(T)
  				if(delta_lumen > 0)
  					effect[T] = delta_lumen
  					T.update_lumcount(delta_lumen, l_color, 0)
  
  			return 0
  		else
  
negative.code: 	var/list/effect = list()
  	var/__x = 0		//x coordinate at last update
  	var/__y = 0		//y coordinate at last update
  	var/__z = 0		//z coordinate at last update
  
  	var/_l_color //do not use directly, only used as reference for updating
  	var/col_r
  	var/col_g
  	var/col_b
  
  
  	New(atom/A)
  