anchor.diff:  	//isn't the power recieved from the incoming light proportionnal to cos(p_angle) (Lambert's cosine law) rather than cos(p_angle)^2 ?
   	//The above isn't correct. This is because it's an area, not a single axis, so it's squared //Koriath
   
  -	sunfrac = sunfrac * (current_dirt/(DIRTLIMIT+1))
  +	sunfrac = sunfrac * (1-(current_dirt/(DIRTLIMIT+1)))
   	//this will make it produce less when it's dirtier
   
   /obj/machinery/power/solar/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY
  
positive.code: /obj/machinery/power/solar/attackby(obj/item/weapon/W, mob/user, params)
  
  	if(istype(W, /obj/item/weapon/crowbar))
  		playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
  		user.visible_message("<span class='notice'>[user] begins to take the glass off the solar panel.</span>")
  		if(do_after(user, 50, target = src))
  			var/obj/item/solar_assembly/S = locate() in src
  			if(S)
  				S.loc = src.loc
  				S.give_glass()
  			playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
  			user.visible_message("<span class='notice'>[user] takes the glass off the solar panel.</span>")
  			current_dirt = 0
  			qdel(src)
  
negative.code: #define SOLAR_MAX_DIST 40
  #define SOLARGENRATE 1500
  #define DIRTRATE 5      //Probability that a solar panel will advance it's "dirt level", both values are multiplied.
  #define DIRTLIMIT 99       //Maximum Dirt level. Percentage is calculated as 1-(current_dirt/(DIRTLIMIT+1)) so it's never 100% obscured
  
  /obj/machinery/power/solar
  	name = "solar panel"
  