Prevent AI from using Teleporter

Stops the AI from relocating itself via the teleporter.
This commit is contained in:
FalseIncarnate
2014-11-30 18:09:12 -05:00
parent bfa1536e74
commit be536a658d
+23 -9
View File
@@ -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 << "<span class='notice'>Close the hub's maintenance panel first.</span>"
user << "<span class='notice'>Close the hub's maintenance panel first.</span>"
return
if (teleporter_console.target)
src.engaged = !src.engaged