mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 19:52:40 +00:00
Redo teleporter control in nanoui
This commit is contained in:
@@ -50,8 +50,8 @@
|
|||||||
/obj/machinery/teleport/hub/attack_ghost(mob/user as mob)
|
/obj/machinery/teleport/hub/attack_ghost(mob/user as mob)
|
||||||
var/atom/l = loc
|
var/atom/l = loc
|
||||||
var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z))
|
var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z))
|
||||||
if(com.locked)
|
if(com?.teleport_control.locked)
|
||||||
user.loc = get_turf(com.locked)
|
user.loc = get_turf(com.teleport_control.locked)
|
||||||
|
|
||||||
/obj/effect/portal/attack_ghost(mob/user as mob)
|
/obj/effect/portal/attack_ghost(mob/user as mob)
|
||||||
if(target)
|
if(target)
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
//////
|
||||||
|
////// Teleporter computer
|
||||||
|
//////
|
||||||
/obj/machinery/computer/teleporter
|
/obj/machinery/computer/teleporter
|
||||||
name = "teleporter control console"
|
name = "teleporter control console"
|
||||||
desc = "Used to control a linked teleportation Hub and Station."
|
desc = "Used to control a linked teleportation Hub and Station."
|
||||||
@@ -5,22 +8,22 @@
|
|||||||
icon_screen = "teleport"
|
icon_screen = "teleport"
|
||||||
circuit = /obj/item/weapon/circuitboard/teleporter
|
circuit = /obj/item/weapon/circuitboard/teleporter
|
||||||
dir = 4
|
dir = 4
|
||||||
var/obj/item/locked = null
|
|
||||||
var/id = null
|
var/id = null
|
||||||
var/one_time_use = 0 //Used for one-time-use teleport cards (such as clown planet coordinates.)
|
var/one_time_use = 0 //Used for one-time-use teleport cards (such as clown planet coordinates.)
|
||||||
//Setting this to 1 will set locked to null after a player enters the portal and will not allow hand-teles to open portals to that location.
|
//Setting this to 1 will set locked to null after a player enters the portal and will not allow hand-teles to open portals to that location.
|
||||||
|
var/datum/nano_module/program/teleport_control/teleport_control
|
||||||
|
|
||||||
/obj/machinery/computer/teleporter/New()
|
/obj/machinery/computer/teleporter/New()
|
||||||
id = "[rand(1000, 9999)]"
|
id = "[rand(1000, 9999)]"
|
||||||
..()
|
..()
|
||||||
underlays.Cut()
|
underlays.Cut()
|
||||||
underlays += image('icons/obj/stationobjs_vr.dmi', icon_state = "telecomp-wires") //VOREStation Edit: different direction for wires to account for dirs
|
underlays += image('icons/obj/stationobjs_vr.dmi', icon_state = "telecomp-wires") //VOREStation Edit: different direction for wires to account for dirs
|
||||||
return
|
teleport_control = new(src)
|
||||||
|
|
||||||
/obj/machinery/computer/teleporter/Initialize()
|
/obj/machinery/computer/teleporter/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
var/obj/machinery/teleport/station/station
|
var/obj/machinery/teleport/station/station = null
|
||||||
var/obj/machinery/teleport/hub/hub
|
var/obj/machinery/teleport/hub/hub = null
|
||||||
|
|
||||||
// Search surrounding turfs for the station, and then search the station's surrounding turfs for the hub.
|
// Search surrounding turfs for the station, and then search the station's surrounding turfs for the hub.
|
||||||
for(var/direction in cardinal)
|
for(var/direction in cardinal)
|
||||||
@@ -34,9 +37,15 @@
|
|||||||
|
|
||||||
if(istype(station))
|
if(istype(station))
|
||||||
station.com = hub
|
station.com = hub
|
||||||
|
teleport_control.hub = hub
|
||||||
|
|
||||||
if(istype(hub))
|
if(istype(hub))
|
||||||
hub.com = src
|
hub.com = src
|
||||||
|
teleport_control.station = station
|
||||||
|
|
||||||
|
/obj/machinery/computer/teleporter/Destroy()
|
||||||
|
qdel_null(teleport_control)
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/machinery/computer/teleporter/attackby(I as obj, mob/living/user as mob)
|
/obj/machinery/computer/teleporter/attackby(I as obj, mob/living/user as mob)
|
||||||
if(istype(I, /obj/item/weapon/card/data/))
|
if(istype(I, /obj/item/weapon/card/data/))
|
||||||
@@ -74,7 +83,7 @@
|
|||||||
else
|
else
|
||||||
for(var/mob/O in hearers(src, null))
|
for(var/mob/O in hearers(src, null))
|
||||||
O.show_message("<span class='notice'>Locked In</span>", 2)
|
O.show_message("<span class='notice'>Locked In</span>", 2)
|
||||||
locked = L
|
teleport_control.locked = L
|
||||||
one_time_use = 1
|
one_time_use = 1
|
||||||
|
|
||||||
add_fingerprint(usr)
|
add_fingerprint(usr)
|
||||||
@@ -86,12 +95,35 @@
|
|||||||
/obj/machinery/teleport/station/attack_ai()
|
/obj/machinery/teleport/station/attack_ai()
|
||||||
attack_hand()
|
attack_hand()
|
||||||
|
|
||||||
/obj/machinery/computer/teleporter/attack_hand(user as mob)
|
/obj/machinery/computer/teleporter/attack_ai(mob/user)
|
||||||
if(..()) return
|
ui_interact(user)
|
||||||
|
|
||||||
/* Ghosts can't use this one because it's a direct selection */
|
/obj/machinery/computer/teleporter/attack_hand(mob/user)
|
||||||
if(istype(user, /mob/observer/dead)) return
|
add_fingerprint(user)
|
||||||
|
if(stat & (BROKEN|NOPOWER))
|
||||||
|
return
|
||||||
|
ui_interact(user)
|
||||||
|
|
||||||
|
/obj/machinery/computer/teleporter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
|
teleport_control.ui_interact(user, ui_key, ui, force_open)
|
||||||
|
|
||||||
|
/obj/machinery/computer/teleporter/interact(mob/user)
|
||||||
|
teleport_control.ui_interact(user)
|
||||||
|
|
||||||
|
//////
|
||||||
|
////// Nano-module for teleporter
|
||||||
|
//////
|
||||||
|
/datum/nano_module/program/teleport_control
|
||||||
|
name = "Teleporter Control"
|
||||||
|
var/locked_name = "Not Locked"
|
||||||
|
var/obj/item/locked = null
|
||||||
|
var/obj/machinery/teleport/station/station = null
|
||||||
|
var/obj/machinery/teleport/hub/hub = null
|
||||||
|
|
||||||
|
/datum/nano_module/program/teleport_control/Topic(href, href_list)
|
||||||
|
if(..()) return 1
|
||||||
|
|
||||||
|
if(href_list["select_target"])
|
||||||
var/list/L = list()
|
var/list/L = list()
|
||||||
var/list/areaindex = list()
|
var/list/areaindex = list()
|
||||||
|
|
||||||
@@ -126,17 +158,46 @@
|
|||||||
areaindex[tmpname] = 1
|
areaindex[tmpname] = 1
|
||||||
L[tmpname] = I
|
L[tmpname] = I
|
||||||
|
|
||||||
var/desc = input("Please select a location to lock in.", "Locking Computer") in L|null
|
var/desc = input("Please select a location to lock in.", "Locking Menu") in L|null
|
||||||
if(!desc)
|
if(!desc)
|
||||||
return
|
return 0
|
||||||
if(get_dist(src, usr) > 1 && !issilicon(usr))
|
if(get_dist(host, usr) > 1 && !issilicon(usr))
|
||||||
return
|
return 0
|
||||||
|
|
||||||
locked = L[desc]
|
locked = L[desc]
|
||||||
for(var/mob/O in hearers(src, null))
|
locked_name = desc
|
||||||
O.show_message("<span class='notice'>Locked In</span>", 2)
|
return 1
|
||||||
add_fingerprint(usr)
|
|
||||||
return
|
if(href_list["test_fire"])
|
||||||
|
station?.testfire()
|
||||||
|
return 1
|
||||||
|
|
||||||
|
if(href_list["toggle_on"])
|
||||||
|
if(!station)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if(station.engaged)
|
||||||
|
station.disengage()
|
||||||
|
else
|
||||||
|
station.engage()
|
||||||
|
|
||||||
|
return 1
|
||||||
|
|
||||||
|
/datum/nano_module/program/teleport_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
|
||||||
|
var/list/data = host.initial_data()
|
||||||
|
|
||||||
|
data["locked_name"] = locked_name ? locked_name : "No Target"
|
||||||
|
data["station_connected"] = station ? 1 : 0
|
||||||
|
data["hub_connected"] = hub ? 1 : 0
|
||||||
|
data["calibrated"] = hub ? hub.accurate : 0
|
||||||
|
data["teleporter_on"] = station ? station.engaged : 0
|
||||||
|
|
||||||
|
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
if(!ui)
|
||||||
|
ui = new(user, src, ui_key, "teleport_control.tmpl", "Teleport Control Console", 400, 500, state = state)
|
||||||
|
ui.set_initial_data(data)
|
||||||
|
ui.open()
|
||||||
|
ui.set_auto_update(1)
|
||||||
|
|
||||||
/obj/machinery/computer/teleporter/verb/set_id(t as text)
|
/obj/machinery/computer/teleporter/verb/set_id(t as text)
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
@@ -158,6 +219,9 @@
|
|||||||
if(!T || istype(T, /area)) return null
|
if(!T || istype(T, /area)) return null
|
||||||
return T
|
return T
|
||||||
|
|
||||||
|
//////
|
||||||
|
////// Root of all the machinery
|
||||||
|
//////
|
||||||
/obj/machinery/teleport
|
/obj/machinery/teleport
|
||||||
name = "teleport"
|
name = "teleport"
|
||||||
icon = 'icons/obj/stationobjs.dmi'
|
icon = 'icons/obj/stationobjs.dmi'
|
||||||
@@ -165,6 +229,9 @@
|
|||||||
anchored = 1.0
|
anchored = 1.0
|
||||||
var/lockeddown = 0
|
var/lockeddown = 0
|
||||||
|
|
||||||
|
//////
|
||||||
|
////// The part you step into
|
||||||
|
//////
|
||||||
/obj/machinery/teleport/hub
|
/obj/machinery/teleport/hub
|
||||||
name = "teleporter hub"
|
name = "teleporter hub"
|
||||||
desc = "It's the hub of a teleporting machine."
|
desc = "It's the hub of a teleporting machine."
|
||||||
@@ -183,6 +250,11 @@
|
|||||||
underlays += image('icons/obj/stationobjs.dmi', icon_state = "tele-wires")
|
underlays += image('icons/obj/stationobjs.dmi', icon_state = "tele-wires")
|
||||||
default_apply_parts()
|
default_apply_parts()
|
||||||
|
|
||||||
|
/obj/machinery/teleport/hub/Destroy()
|
||||||
|
com?.teleport_control.hub = null
|
||||||
|
com = null
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/machinery/teleport/hub/Bumped(M as mob|obj)
|
/obj/machinery/teleport/hub/Bumped(M as mob|obj)
|
||||||
spawn()
|
spawn()
|
||||||
if(icon_state == "tele1")
|
if(icon_state == "tele1")
|
||||||
@@ -193,7 +265,7 @@
|
|||||||
/obj/machinery/teleport/hub/proc/teleport(atom/movable/M as mob|obj)
|
/obj/machinery/teleport/hub/proc/teleport(atom/movable/M as mob|obj)
|
||||||
if(!com)
|
if(!com)
|
||||||
return
|
return
|
||||||
if(!com.locked)
|
if(!com.teleport_control.locked)
|
||||||
for(var/mob/O in hearers(src, null))
|
for(var/mob/O in hearers(src, null))
|
||||||
O.show_message("<span class='warning'>Failure: Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.</span>")
|
O.show_message("<span class='warning'>Failure: Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.</span>")
|
||||||
return
|
return
|
||||||
@@ -209,11 +281,11 @@
|
|||||||
if(prob(5) && !accurate) //oh dear a problem, put em in deep space
|
if(prob(5) && !accurate) //oh dear a problem, put em in deep space
|
||||||
do_teleport(M, locate(rand((2*TRANSITIONEDGE), world.maxx - (2*TRANSITIONEDGE)), rand((2*TRANSITIONEDGE), world.maxy - (2*TRANSITIONEDGE)), 3), 2)
|
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.locked) //dead-on precision
|
do_teleport(M, com.teleport_control.locked) //dead-on precision
|
||||||
|
|
||||||
if(com.one_time_use) //Make one-time-use cards only usable one time!
|
if(com.one_time_use) //Make one-time-use cards only usable one time!
|
||||||
com.one_time_use = 0
|
com.one_time_use = 0
|
||||||
com.locked = null
|
com.teleport_control.locked = null
|
||||||
else
|
else
|
||||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||||
s.set_up(5, 1, src)
|
s.set_up(5, 1, src)
|
||||||
@@ -223,92 +295,10 @@
|
|||||||
for(var/mob/B in hearers(src, null))
|
for(var/mob/B in hearers(src, null))
|
||||||
B.show_message("<span class='notice'>Test fire completed.</span>")
|
B.show_message("<span class='notice'>Test fire completed.</span>")
|
||||||
return
|
return
|
||||||
/*
|
|
||||||
/proc/do_teleport(atom/movable/M as mob|obj, atom/destination, precision)
|
|
||||||
if(istype(M, /obj/effect))
|
|
||||||
qdel(M)
|
|
||||||
return
|
|
||||||
if(istype(M, /obj/item/weapon/disk/nuclear)) // Don't let nuke disks get teleported --NeoFite
|
|
||||||
for(var/mob/O in viewers(M, null))
|
|
||||||
O.show_message(text("<span class='danger'>The [] bounces off of the portal!</span>", M.name), 1)
|
|
||||||
return
|
|
||||||
if(istype(M, /mob/living))
|
|
||||||
var/mob/living/MM = M
|
|
||||||
if(MM.check_contents_for(/obj/item/weapon/disk/nuclear))
|
|
||||||
to_chat(MM, "<span class='warning'>Something you are carrying seems to be unable to pass through the portal. Better drop it if you want to go through.</span>")
|
|
||||||
return
|
|
||||||
var/disky = 0
|
|
||||||
for (var/atom/O in M.contents) //I'm pretty sure this accounts for the maximum amount of container in container stacking. --NeoFite
|
|
||||||
if(istype(O, /obj/item/weapon/storage) || istype(O, /obj/item/weapon/gift))
|
|
||||||
for (var/obj/OO in O.contents)
|
|
||||||
if(istype(OO, /obj/item/weapon/storage) || istype(OO, /obj/item/weapon/gift))
|
|
||||||
for (var/obj/OOO in OO.contents)
|
|
||||||
if(istype(OOO, /obj/item/weapon/disk/nuclear))
|
|
||||||
disky = 1
|
|
||||||
if(istype(OO, /obj/item/weapon/disk/nuclear))
|
|
||||||
disky = 1
|
|
||||||
if(istype(O, /obj/item/weapon/disk/nuclear))
|
|
||||||
disky = 1
|
|
||||||
if(istype(O, /mob/living))
|
|
||||||
var/mob/living/MM = O
|
|
||||||
if(MM.check_contents_for(/obj/item/weapon/disk/nuclear))
|
|
||||||
disky = 1
|
|
||||||
if(disky)
|
|
||||||
for(var/mob/P in viewers(M, null))
|
|
||||||
P.show_message(text("<span class='danger'>The [] bounces off of the portal!</span>", M.name), 1)
|
|
||||||
return
|
|
||||||
|
|
||||||
//Bags of Holding cause bluespace teleportation to go funky. --NeoFite
|
|
||||||
if(istype(M, /mob/living))
|
|
||||||
var/mob/living/MM = M
|
|
||||||
if(MM.check_contents_for(/obj/item/weapon/storage/backpack/holding))
|
|
||||||
to_chat(MM, "<span class='warning'>The Bluespace interface on your Bag of Holding interferes with the teleport!</span>")
|
|
||||||
precision = rand(1,100)
|
|
||||||
if(istype(M, /obj/item/weapon/storage/backpack/holding))
|
|
||||||
precision = rand(1,100)
|
|
||||||
for (var/atom/O in M.contents) //I'm pretty sure this accounts for the maximum amount of container in container stacking. --NeoFite
|
|
||||||
if(istype(O, /obj/item/weapon/storage) || istype(O, /obj/item/weapon/gift))
|
|
||||||
for (var/obj/OO in O.contents)
|
|
||||||
if(istype(OO, /obj/item/weapon/storage) || istype(OO, /obj/item/weapon/gift))
|
|
||||||
for (var/obj/OOO in OO.contents)
|
|
||||||
if(istype(OOO, /obj/item/weapon/storage/backpack/holding))
|
|
||||||
precision = rand(1,100)
|
|
||||||
if(istype(OO, /obj/item/weapon/storage/backpack/holding))
|
|
||||||
precision = rand(1,100)
|
|
||||||
if(istype(O, /obj/item/weapon/storage/backpack/holding))
|
|
||||||
precision = rand(1,100)
|
|
||||||
if(istype(O, /mob/living))
|
|
||||||
var/mob/living/MM = O
|
|
||||||
if(MM.check_contents_for(/obj/item/weapon/storage/backpack/holding))
|
|
||||||
precision = rand(1,100)
|
|
||||||
|
|
||||||
var/turf/destturf = get_turf(destination)
|
|
||||||
|
|
||||||
var/tx = destturf.x + rand(precision * -1, precision)
|
|
||||||
var/ty = destturf.y + rand(precision * -1, precision)
|
|
||||||
|
|
||||||
var/tmploc
|
|
||||||
|
|
||||||
if(ismob(destination.loc)) //If this is an implant.
|
|
||||||
tmploc = locate(tx, ty, destturf.z)
|
|
||||||
else
|
|
||||||
tmploc = locate(tx, ty, destination.z)
|
|
||||||
|
|
||||||
if(tx == destturf.x && ty == destturf.y && (istype(destination.loc, /obj/structure/closet) || istype(destination.loc, /obj/structure/closet/secure_closet)))
|
|
||||||
tmploc = destination.loc
|
|
||||||
|
|
||||||
if(tmploc==null)
|
|
||||||
return
|
|
||||||
|
|
||||||
M.loc = tmploc
|
|
||||||
sleep(2)
|
|
||||||
|
|
||||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
|
||||||
s.set_up(5, 1, M)
|
|
||||||
s.start()
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
//////
|
||||||
|
////// The middle part
|
||||||
|
//////
|
||||||
/obj/machinery/teleport/station
|
/obj/machinery/teleport/station
|
||||||
name = "station"
|
name = "station"
|
||||||
desc = "It's the station thingy of a teleport thingy." //seriously, wtf.
|
desc = "It's the station thingy of a teleport thingy." //seriously, wtf.
|
||||||
@@ -328,17 +318,10 @@
|
|||||||
add_overlay("controller-wires")
|
add_overlay("controller-wires")
|
||||||
default_apply_parts()
|
default_apply_parts()
|
||||||
|
|
||||||
/obj/machinery/teleport/station/attackby(var/obj/item/weapon/W)
|
/obj/machinery/teleport/station/Destroy()
|
||||||
attack_hand()
|
com?.com?.teleport_control.station = null
|
||||||
|
com = null
|
||||||
/obj/machinery/teleport/station/attack_ai()
|
return ..()
|
||||||
attack_hand()
|
|
||||||
|
|
||||||
/obj/machinery/teleport/station/attack_hand()
|
|
||||||
if(engaged)
|
|
||||||
disengage()
|
|
||||||
else
|
|
||||||
engage()
|
|
||||||
|
|
||||||
/obj/machinery/teleport/station/proc/engage()
|
/obj/machinery/teleport/station/proc/engage()
|
||||||
if(stat & (BROKEN|NOPOWER))
|
if(stat & (BROKEN|NOPOWER))
|
||||||
@@ -370,27 +353,17 @@
|
|||||||
engaged = 0
|
engaged = 0
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/teleport/station/verb/testfire()
|
/obj/machinery/teleport/station/proc/testfire()
|
||||||
set name = "Test Fire Teleporter"
|
if(!com || active)
|
||||||
set category = "Object"
|
|
||||||
set src in oview(1)
|
|
||||||
|
|
||||||
if(stat & (BROKEN|NOPOWER) || !istype(usr,/mob/living))
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if(com && !active)
|
active = TRUE
|
||||||
active = 1
|
visible_message("<span class='notice'>Test firing!</span>")
|
||||||
for(var/mob/O in hearers(src, null))
|
|
||||||
O.show_message("<span class='notice'>Test firing!</span>", 2)
|
|
||||||
com.teleport()
|
com.teleport()
|
||||||
use_power(5000)
|
use_power(5000)
|
||||||
flick(src, "controller-c") //VOREStation Add
|
flick(src, "controller-c") //VOREStation Add
|
||||||
|
|
||||||
spawn(30)
|
VARSET_IN(src, active, FALSE, 3 SECONDS)
|
||||||
active=0
|
|
||||||
|
|
||||||
add_fingerprint(usr)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/teleport/station/power_change()
|
/obj/machinery/teleport/station/power_change()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -147,11 +147,11 @@ Frequency:
|
|||||||
if(com)
|
if(com)
|
||||||
break
|
break
|
||||||
break
|
break
|
||||||
if (istype(com, /obj/machinery/computer/teleporter) && com.locked && !com.one_time_use)
|
if (istype(com, /obj/machinery/computer/teleporter) && com.teleport_control.locked && !com.one_time_use)
|
||||||
if(R.icon_state == "tele1")
|
if(R.icon_state == "tele1")
|
||||||
L["[com.id] (Active)"] = com.locked
|
L["[com.id] (Active)"] = com.teleport_control.locked
|
||||||
else
|
else
|
||||||
L["[com.id] (Inactive)"] = com.locked
|
L["[com.id] (Inactive)"] = com.teleport_control.locked
|
||||||
var/list/turfs = list( )
|
var/list/turfs = list( )
|
||||||
for(var/turf/T in orange(10))
|
for(var/turf/T in orange(10))
|
||||||
if(T.x>world.maxx-8 || T.x<8) continue //putting them at the edge is dumb
|
if(T.x>world.maxx-8 || T.x<8) continue //putting them at the edge is dumb
|
||||||
|
|||||||
44
nano/templates/teleport_control.tmpl
Normal file
44
nano/templates/teleport_control.tmpl
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<div class='block'>
|
||||||
|
<div class='item'>
|
||||||
|
<div class='itemLabelNarrow'>Target:</div>
|
||||||
|
<div>
|
||||||
|
{{:helper.link(data.locked_name, null, {'select_target' : 1}, null, null)}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class='item'>
|
||||||
|
<div class='itemLabelNarrow'>Calibrated:</div>
|
||||||
|
<div>
|
||||||
|
{{:helper.link(data.calibrated ? 'Accurate' : 'Test Fire', data.calibrated ? 'check' : 'close', {'test_fire' : 1}, null, data.calibrated ? 'linkOn' : 'redButton')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class='item'>
|
||||||
|
<div class='itemLabelNarrow'>Teleporter:</div>
|
||||||
|
<div>
|
||||||
|
{{:helper.link(data.teleporter_on ? 'Online' : 'Offline', data.teleporter_on ? 'check' : 'close', {'toggle_on' : 1}, null, data.teleporter_on ? 'linkOn' : 'redButton')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class='item'>
|
||||||
|
<div class='itemLabelNarrow'>Station:</div>
|
||||||
|
<div>
|
||||||
|
{{if data.station_connected}}
|
||||||
|
Connected
|
||||||
|
{{else}}
|
||||||
|
Not Connected!
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class='item'>
|
||||||
|
<div class='itemLabelNarrow'>Hub:</div>
|
||||||
|
<div>
|
||||||
|
{{if data.hub_connected}}
|
||||||
|
Connected
|
||||||
|
{{else}}
|
||||||
|
Not Connected!
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
Reference in New Issue
Block a user