anchor.diff:  	var/z_c	= target.z
   
   	var/icon/temp = icon('96x96.dmi',"")
  +	var/icon/black = icon('space.dmi', "black")
   	var/mobs = ""
   	for (var/i = 1; i <= 3; i++)
   		for (var/j = 1; j <= 3; j++)
   			var/turf/T = locate(x_c,y_c,z_c)
  -			temp.Blend(get_icon(T),ICON_OVERLAY,31*(j-1),62 - 31*(i-1))
  +
  +			var/mob/dummy = new(T)	//Go go visibility check dummy
  +			if(dummy in viewers(world.view, user))
  +				temp.Blend(get_icon(T),ICON_OVERLAY,31*(j-1-1),31 - 31*(i-1))
  +			else
  +				temp.Blend(black,ICON_OVERLAY,31*(j-1),62 - 31*(i-1))
   			mobs += get_mobs(T)
  +			del dummy	//Alas, nameless creature
   			x_c++
   		y_c--
   		x_c = x_c - 3
  
positive.code: 	icon_state = "photo"
  	item_state = "clipboard"
  	w_class = 1.0
  	var/icon/img
  
  
  /obj/item/weapon/photo/attack_self(var/mob/user as mob)
  		..()
  		examine()
  
  
  /obj/item/weapon/photo/examine()
  		set src in oview(2)
  		..()	//We don't want them to see the dumb "this is a paper" thing every time.
  
  		usr << browse_rsc(src.img, "tmp_photo.png")
  		usr << browse("<html><head><title>Photo</title></head>" \
  			+ "<body style='overflow:hidden'>" \
  			+ "<div> <img src='tmp_photo.png' width = '180'" \
  			+ "</body></html>", "window=book;size=200x200")
  		onclose(usr, "[name]")
  
  		return
  //////////////////////////////////////////////////////////////////////////////////////////////////
  /obj/item/weapon/camera_test/attack(mob/living/carbon/human/M as mob, mob/user as mob)
  	return
  
  /obj/item/weapon/camera_test/proc/get_icon(turf/the_turf as turf)
  	var/icon/res = icon('items.dmi',"photo")
  	var/icon/turficon = build_composite_icon(the_turf)
  	res.Blend(turficon,ICON_OVERLAY,0,0)
  	var/icons[] 	= list()		//For all atoms on this turf getting their icons
  	var/layers[] 	= list()		//and levels
  	for(var/atom/A in the_turf)
  		//if(istype(A, /obj/item/weapon/photo))	continue
  		if(A.invisibility) continue
  		icons.Add(build_composite_icon(A))
  		layers.Add(A.layer)
  
  	//Sorting icons based on levels
  	var/gap = layers.len
  	var/swapped = 1
  	while (gap > 1 || swapped)
  		swapped = 0
  
negative.code: 			gap = round(gap / 1.247330950103979)
  		if (gap < 1)
  			gap = 1
  		for (var/i = 1; gap + i <= atoms.len; i++)
  			var/atom/l = atoms[i]		//Fucking hate
  			var/atom/r = atoms[gap+i]	//how lists work here
  			if (l.layer > r.layer)		//no "atoms[i].layer" for me
  				atoms.Swap(i, gap + i)
  				swapped = 1
  
  	for (var/i; i <= atoms.len; i++)
  		var/atom/A = atoms[i]
  		if (A)
  			var/icon/img = build_composite_icon(A)
  			if(istype(img, /icon))
  				res.Blend(img,ICON_OVERLAY,32+A.pixel_x,32+A.pixel_y)
  	return res
  
  /obj/item/weapon/camera_test/attack_self(var/mob/user as mob)
  