diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 06b04ebd89a..b64d0c27983 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -69,7 +69,7 @@ return if(stat & (NOPOWER|BROKEN)) return - + data["powerstation"] = power_station if(power_station) data["teleporterhub"] = power_station.teleporter_hub @@ -88,8 +88,8 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) ui = new(user, src, ui_key, "teleporter_console.tmpl", "Teleporter Console UI", 400, 400) - ui.set_initial_data(data) - ui.open() + ui.set_initial_data(data) + ui.open() /obj/machinery/computer/teleporter/Topic(href, href_list) if(..()) @@ -250,8 +250,8 @@ while(!istype(T, /turf)) T = T.loc if(!T || istype(T, /area)) return null - return T - + return T + /obj/machinery/teleport name = "teleport" icon = 'icons/obj/stationobjs.dmi' @@ -300,8 +300,22 @@ /obj/machinery/teleport/hub/Bumped(M as mob|obj) if(power_station && power_station.engaged && !panel_open) - teleport(M) - use_power(5000) + //--FalseIncarnate + //Prevents AI cores from using the teleporter, prints out failure messages for clarity + if(istype(M, /mob/living/silicon/ai) || istype(M, /obj/structure/AIcore)) + visible_message("\red The teleporter rejects the AI unit.") + if(istype(M, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/T = M + var/list/TPError = list("\red Firmware instructions dictate you must remain on your assigned station!", + "\red You cannot interface with this technology and get rejected!", + "\red External firewalls prevent you from utilizing this machine!", + "\red Your AI core's anti-bluespace failsafes trigger and prevent teleportation!") + T<< "[pick(TPError)]" + return + else + teleport(M) + use_power(5000) + //--FalseIncarnate return /obj/machinery/teleport/hub/attackby(obj/item/W, mob/user) @@ -323,7 +337,7 @@ if (istype(M, /atom/movable)) if(!calibrated && prob(25 - ((accurate) * 10))) //oh dear a problem do_teleport(M, locate(rand((2*TRANSITIONEDGE), world.maxx - (2*TRANSITIONEDGE)), rand((2*TRANSITIONEDGE), world.maxy - (2*TRANSITIONEDGE)), 3), 2) - else + else do_teleport(M, com.target) calibrated = 0 return @@ -439,7 +453,7 @@ if (stat & (BROKEN|NOPOWER) || !teleporter_hub || !teleporter_console) return if (teleporter_hub.panel_open) - user << "Close the hub's maintenance panel first." + user << "Close the hub's maintenance panel first." return if (teleporter_console.target) src.engaged = !src.engaged