diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 6db9a26fd8d..d5b966c7d98 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -193,6 +193,9 @@
L[tmpname] = R
var/desc = input("Please select a telepad.", "RCS") in L
E.pad = L[desc]
+ if(!Adjacent(user))
+ to_chat(user, "Unable to teleport, too far from crate.")
+ return
playsound(E.loc, E.usesound, 50, 1)
to_chat(user, "Teleporting [name]...")
E.teleporting = 1
@@ -204,17 +207,22 @@
to_chat(user, "Error: User located in container--aborting for safety.")
playsound(E.loc, 'sound/machines/buzz-sigh.ogg', 50, 1)
return
+ if(!(E.rcell && E.rcell.use(E.chargecost)))
+ to_chat(user, "Unable to teleport, insufficient charge.")
+ return
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
do_teleport(src, E.pad, 0)
- E.rcell.use(E.chargecost)
to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.")
return
else
E.rand_x = rand(50,200)
E.rand_y = rand(50,200)
var/L = locate(E.rand_x, E.rand_y, 6)
+ if(!Adjacent(user))
+ to_chat(user, "Unable to teleport, too far from crate.")
+ return
playsound(E.loc, E.usesound, 50, 1)
to_chat(user, "Teleporting [name]...")
E.teleporting = 1
@@ -226,11 +234,13 @@
to_chat(user, "Error: User located in container--aborting for safety.")
playsound(E.loc, 'sound/machines/buzz-sigh.ogg', 50, 1)
return
+ if(!(E.rcell && E.rcell.use(E.chargecost)))
+ to_chat(user, "Unable to teleport, insufficient charge.")
+ return
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
do_teleport(src, L)
- E.rcell.use(E.chargecost)
to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.")
return
else
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 07a738a8c94..010da69a834 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -102,6 +102,9 @@
L[tmpname] = R
var/desc = input("Please select a telepad.", "RCS") in L
E.pad = L[desc]
+ if(!Adjacent(user))
+ to_chat(user, "Unable to teleport, too far from crate.")
+ return
playsound(E.loc, E.usesound, 50, 1)
to_chat(user, "Teleporting [src.name]...")
E.teleporting = 1
@@ -109,17 +112,23 @@
E.teleporting = 0
return
E.teleporting = 0
+ if(!(E.rcell && E.rcell.use(E.chargecost)))
+ to_chat(user, "Unable to teleport, insufficient charge.")
+ return
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
do_teleport(src, E.pad, 0)
- E.rcell.use(E.chargecost)
to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.")
return
+
else
E.rand_x = rand(50,200)
E.rand_y = rand(50,200)
var/L = locate(E.rand_x, E.rand_y, 6)
+ if(!Adjacent(user))
+ to_chat(user, "Unable to teleport, too far from crate.")
+ return
playsound(E.loc, E.usesound, 50, 1)
to_chat(user, "Teleporting [src.name]...")
E.teleporting = 1
@@ -127,11 +136,13 @@
E.teleporting = 0
return
E.teleporting = 0
+ if(!(E.rcell && E.rcell.use(E.chargecost)))
+ to_chat(user, "Unable to teleport, insufficient charge.")
+ return
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
do_teleport(src, L)
- E.rcell.use(E.chargecost)
to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.")
return
else
diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm
index e05c7bc924a..d24853a7948 100644
--- a/code/modules/shuttle/supply.dm
+++ b/code/modules/shuttle/supply.dm
@@ -245,6 +245,7 @@
/obj/machinery/teleport/station,
/obj/machinery/teleport/hub,
/obj/machinery/telepad,
+ /obj/machinery/telepad_cargo,
/obj/machinery/clonepod,
/obj/effect/hierophant,
/obj/item/device/warp_cube,