anchor.diff:  			sleep(4)
   
   			hide()
  -			player = null
   
   
   obj
  
positive.code: 		var/matrix/m = matrix()
  		m.Translate(0.25 * dx, 0.25 * dy)
  
  		animate(src, alpha = 64, transform = turn(m, 90), time = 2)
  		m = matrix()*1.5
  		m.Translate(0.5 * dx, 0.5 * dy)
  		animate(alpha = 128,  transform = turn(m, 180), time = 2)
  		m = matrix()*2
  		m.Translate(0.75 * dx, 0.75 * dy)
  		animate(alpha = 192,  transform = turn(m, 270), time = 2)
  		m = matrix()*2.5
  		m.Translate(dx, dy)
  		animate(alpha = 255,  transform = m, time = 2)
  
negative.code: 				p << infomsg("You begin reading.")
  				spawn(20)
  					while(p && p.readbooks > 0 && get_dist(src, p) <= 1)
  
  						if((p.client.inactivity < 600 || p.presence) && prob(25))
  							new /hudobj/readClicker (null, p.client, null, 1, p)
  
  						var/exp  = get_exp(p.level) * worldData.expBookModifier
  						if(p.presence || p.level <= 50)
  							exp = round(rand(exp * 0.9, exp * 1.1))
  							p.addExp(exp, 1, 0)
  							if(p.level > 600) p.readbooks += 3
  							sleep(20)
  						else
  