anchor.diff:  	var/x_co	// X coordinate
   	var/y_co	// Y coordinate
   	var/z_co	// Z coordinate
  -
  -/obj/machinery/computer/telescience/New()
  -	teles_left = rand(8,12)
  -	x_off = rand(-10,10)
  -	y_off = rand(-10,10)
  +	var/trueX	// X + offset
  +	var/trueY	// Y + offset
  +	var/obj/machinery/telepad
  +	var/tele_id = "Telesci"
   
   /obj/machinery/computer/telescience/update_icon()
   	if(stat & BROKEN)
  
positive.code: 		z_co = text2num(z_co)
  		return
  	if(href_list["send"])
  		telesend()
  		return
  	if(href_list["receive"])
  		telereceive()
  		return
  	if(href_list["recal"])
  		teles_left = rand(7,10)
  		x_off = rand(-10,10)
  		y_off = rand(-10,10)
  		for(var/obj/machinery/telepad/E in world)
  			var/L = get_turf(E)
  			var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
  			s.set_up(5, 1, L)
  			s.start()
  		usr << "\blue Calibration successful."
  		return
negative.code: 				/mob/living/simple_animal/hostile/retaliate,
  				/mob/living/simple_animal/hostile/giant_spider/nurse)
  			var/list/hostiles = typesof(/mob/living/simple_animal/hostile) - blocked
  			playsound(teleturf, 'sound/effects/phasein.ogg', 100, 1)
  			for(var/mob/living/carbon/human/M in viewers(telepad, null))
  				flick("e_flash", M.flash)
  			var/chosen = pick(hostiles)
  			var/mob/living/simple_animal/hostile/H = new chosen
  			H.loc = teleturf
  	return
  
  /obj/machinery/computer/telescience/proc/teleprep(var/type)
  	if(!telepad)
  		usr << "\red Error: no associated telepad. Please recalibrate and try again."
  		return
  	var/numpick
  	var/failure = checkFail()
  	if(failure > 0)
  		numpick = pick(1,1,1,1,1,2,2,2,2,3)
  		telefail(numpick)
  		return
  	if(teles_left > 0)
  		if(prob(75))
  			teles_left -= 1
  			tele(type)
  			if(teles_left == 0)
  				for(var/mob/O in hearers(src, null))
  					O.show_message("\red The telepad has become uncalibrated.", 2)
  			return
  	else
  		if(prob(35))
  			tele(type)
  		else
  			numpick = pick(1,1,1,2,2,3,4)
  			telefail(numpick)
  		return
  	numpick = pick(1,1,1,1,1,2,2,2,2,3)
  	telefail(numpick)
  	return
  
  /obj/machinery/computer/telescience/proc/tele(var/type)
  	var/tele = get_turf(telepad)
  	trueX = (x_co + x_off)
  	trueY = (y_co + y_off)
  	var/target = locate(trueX, trueY, z_co)
  	var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
  	s.set_up(5, 1, tele)
  	s.start()
  	flick("pad-beam", telepad)
  	var/list/teleportables = list()
  	switch(type)
  		if(0)
  			for(var/atom/A in tele)
  				if(!istype(A, /obj/machinery) && !istype(A, /obj/effect) && !istype(A, /mob/living/silicon/ai) && !istype(A, /obj/item/device/radio/intercom) && !istype(A, /obj/structure/closet/secure_closet/brig))
  					if(istype(A, /obj/structure))
  						if(istype(A, /obj/structure/closet))
  							teleportables += A
  							usr << "Teleportables added [A]"
  					else
  						teleportables += A
  						usr << "Teleportables added [A]"
  				else
  					usr << "Warning: [A] in blacklist"
  			for(var/atom/T in teleportables)
  				do_teleport(T, target, 0)
  			usr << "\blue Teleport successful."
  		if(1)
  			for(var/atom/A in tele)
  				if(!istype(A, /obj/machinery) && !istype(A, /obj/effect) && !istype(A, /mob/living/silicon/ai) && !istype(A, /obj/item/device/radio/intercom) && !istype(A, /obj/structure/closet/secure_closet/brig))
  					if(istype(A, /obj/structure))
  						if(istype(A, /obj/structure/closet))
  							teleportables += A
  							usr << "Teleportables added [A]"
  					else
  						teleportables += A
  						usr << "Teleportables added [A]"
  				else
  					usr << "Warning: [A] in blacklist"
  			for(var/atom/T in teleportables)
  				do_teleport(T, tele, 0)
  			usr << "\blue Teleport successful."
  	return
  
  /obj/machinery/computer/telescience/proc/checkFail()
  	var/fail = 0
  	if(x_co == "")
  		usr << "\red Error: set X coordinates."
  		fail = 1
  	if(y_co == "")
  		usr << "\red Error: set Y coordinates."
  		fail = 1
  	if(z_co == "")
  		usr << "\red Error: set Z coordinates."
  		fail = 1
  	if(x_co < 11 || x_co > 245)
  		usr << "\red Error: X is less than 11 or greater than 245."
  		fail = 1
  	if(y_co < 11 || y_co > 245)
  		usr << "\red Error: Y is less than 11 or greater than 245."
  		fail = 1
  	if(z_co == 2 || z_co < 1 || z_co > 6)
  		usr << "\red Error: Z is less than 1, greater than 6, or equal to 2."
  		fail = 1
  	return fail
  
  /obj/machinery/computer/telescience/Topic(href, href_list)
  	if(..())
  