anchor.diff:  		return 1
   	return 0
   
  -/mob/living/silicon/ai/switchCamera(atom/A)
  -	eyeobj.loc = A.loc
  -	return+/mob/living/silicon/ai/switchCamera(var/obj/machinery/camera/C)
  +	eyeobj.loc = C.loc
  +	cameranet.visibility(eyeobj)
  +	return
  +
  +/mob/living/silicon/ai/attack_ai(var/mob/user as mob)
  +	if (user != src)
  +		return
  +
  +	if (stat == 2)
  +		return
  +
  +	var/list/L = list()
  +	for (var/obj/machinery/camera/C in world)
  +		L.Add(C)
  +
  +	camera_sort(L)
  +	L = camera_network_sort(L)
  +
  +	var/list/D = list()
  +	for (var/obj/machinery/camera/C in L)
  +		if ( C.network in src.networks )
  +			D[text("[]: [][]", C.network, C.c_tag, (C.status ? null : " (Deactivated)"))] = C
  +	D["Cancel"] = "Cancel"
  +
  +	var/t = input(user, "Which camera should you change to?") as null|anything in D
  +
  +	if (!t || t == "Cancel")
  +		return 0
  +
  +	var/obj/machinery/camera/C = D[t]
  +
  +	eyeobj.loc = C.loc
  +	cameranet.visibility(eyeobj)
  +
  +	return
  +
  +/mob/living/silicon/ai/cancel_camera()
  +	set name = "Cancel Camera View"
  +	set category = "OOC"
  +	reset_view(null)
  +	machine = null
  +	del eyeobj
  +	src.freelook()
  
positive.code: //All credit for this goes to Uristqwerty.
  
  /turf
  	var/image/obscured
  
negative.code: 	set name = "freelook"
  	current = null	//cancel camera view first, it causes problems
  	cameraFollow = null
  //	machine = null
  	if(!eyeobj)	//if it got deleted somehow (like an admin trying to fix things <.<')
  		eyeobj = new()
  	client.eye = eyeobj
  	eyeobj.loc = loc
  	cameranet.visibility(eyeobj)
  	cameraFollow = null
  
  /mob/aiEye/Move()
  	. = ..()
  