mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-03 22:13:24 +00:00
Made telescience WORK!
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
var/list/GPS_list = list()
|
||||
/obj/item/device/gps
|
||||
name = "Global Positioning System"
|
||||
name = "global positioning system"
|
||||
desc = "Helping lost spacemen find their way through the planets since 2016."
|
||||
icon = 'icons/obj/telescience.dmi'
|
||||
icon_state = "gps-c"
|
||||
@@ -11,9 +12,13 @@
|
||||
var/emped = 0
|
||||
|
||||
/obj/item/device/gps/New()
|
||||
name = "Global Positioning System ([gpstag])"
|
||||
..()
|
||||
GPS_list.Add(src)
|
||||
name = "global positioning system ([gpstag])"
|
||||
overlays += "working"
|
||||
|
||||
/obj/item/device/gps/Del()
|
||||
GPS_list.Remove(src)
|
||||
..()
|
||||
/obj/item/device/gps/emp_act(severity)
|
||||
emped = 1
|
||||
overlays -= "working"
|
||||
@@ -31,7 +36,7 @@
|
||||
t += "<BR><A href='?src=\ref[src];tag=1'>Set Tag</A> "
|
||||
t += "<BR>Tag: [gpstag]"
|
||||
|
||||
for(var/obj/item/device/gps/G in world)
|
||||
for(var/obj/item/device/gps/G in GPS_list)
|
||||
var/turf/pos = get_turf(G)
|
||||
var/area/gps_area = get_area(G)
|
||||
var/tracked_gpstag = G.gpstag
|
||||
@@ -46,15 +51,16 @@
|
||||
popup.open()
|
||||
|
||||
/obj/item/device/gps/Topic(href, href_list)
|
||||
..()
|
||||
if(href_list["tag"] )
|
||||
var/a = input("Please enter desired tag.", name, gpstag) as text
|
||||
a = copytext(sanitize(a), 1, 20)
|
||||
if(length(a) != 4)
|
||||
usr << "\blue The tag must be four letters long!"
|
||||
usr << "<span class = 'caution'> The tag must be four letters long!</span>"
|
||||
return
|
||||
else
|
||||
gpstag = a
|
||||
name = "Global Positioning System ([gpstag])"
|
||||
name = "global positioning system ([gpstag])"
|
||||
return
|
||||
|
||||
/obj/item/device/gps/science
|
||||
|
||||
@@ -8,10 +8,6 @@
|
||||
use_power = 1
|
||||
idle_power_usage = 200
|
||||
active_power_usage = 5000
|
||||
/obj/machinery/telepad/New()
|
||||
..()
|
||||
/obj/machinery/telepad/Del()
|
||||
..()
|
||||
//CARGO TELEPAD//
|
||||
/obj/machinery/telepad_cargo
|
||||
name = "cargo telepad"
|
||||
@@ -23,39 +19,35 @@
|
||||
idle_power_usage = 20
|
||||
active_power_usage = 500
|
||||
var/stage = 0
|
||||
/obj/machinery/telepad_cargo/New()
|
||||
..()
|
||||
/obj/machinery/telepad_cargo/Del()
|
||||
..()
|
||||
/obj/machinery/telepad_cargo/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
anchored = 0
|
||||
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(anchored)
|
||||
anchored = 0
|
||||
user << "\blue The [src] can now be moved."
|
||||
user << "<span class = 'caution'> The [src] can now be moved.</span>"
|
||||
else if(!anchored)
|
||||
anchored = 1
|
||||
user << "\blue The [src] is now secured."
|
||||
user << "<span class = 'caution'> The [src] is now secured.</span>"
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(stage == 0)
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "\blue You unscrew the telepad's tracking beacon."
|
||||
user << "<span class = 'caution'> You unscrew the telepad's tracking beacon.</span>"
|
||||
stage = 1
|
||||
else if(stage == 1)
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "\blue You screw in the telepad's tracking beacon."
|
||||
user << "<span class = 'caution'> You screw in the telepad's tracking beacon.</span>"
|
||||
stage = 0
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && stage == 1)
|
||||
playsound(src, 'sound/items/Welder.ogg', 50, 1)
|
||||
user << "\blue You disassemble the telepad."
|
||||
user << "<span class = 'caution'> You disassemble the telepad.</span>"
|
||||
new /obj/item/stack/sheet/metal(get_turf(src))
|
||||
new /obj/item/stack/sheet/glass(get_turf(src))
|
||||
del(src)
|
||||
|
||||
///TELEPAD CALLER///
|
||||
/obj/item/device/telepad_beacon
|
||||
name = "Telepad Beacon"
|
||||
name = "telepad beacon"
|
||||
desc = "Use to warp in a cargo telepad."
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
icon_state = "beacon"
|
||||
@@ -64,7 +56,7 @@
|
||||
|
||||
/obj/item/device/telepad_beacon/attack_self(mob/user as mob)
|
||||
if(user)
|
||||
user << "\blue Locked In"
|
||||
user << "<span class = 'caution'> Locked In</span>"
|
||||
new /obj/machinery/telepad_cargo(user.loc)
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
||||
del(src)
|
||||
@@ -76,9 +68,6 @@
|
||||
desc = "Use this to send crates and closets to cargo telepads."
|
||||
icon = 'icons/obj/telescience.dmi'
|
||||
icon_state = "rcs"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
force = 10.0
|
||||
throwforce = 10.0
|
||||
@@ -94,18 +83,20 @@
|
||||
var/teleporting = 0
|
||||
|
||||
/obj/item/weapon/rcs/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
/obj/item/weapon/rcs/examine()
|
||||
desc = "Use this to send crates and closets to cargo telepads. There are [rcharges] charges left."
|
||||
..()
|
||||
|
||||
/obj/item/weapon/rcs/Del()
|
||||
processing_objects.Remove(src)
|
||||
|
||||
..()
|
||||
/obj/item/weapon/rcs/process()
|
||||
if(rcharges > 10)
|
||||
rcharges = 10
|
||||
if(last_charge == 0)
|
||||
rcharges++
|
||||
desc = "Use this to send crates and closets to cargo telepads. There are [rcharges] charges left."
|
||||
last_charge = 30
|
||||
else
|
||||
last_charge--
|
||||
@@ -115,11 +106,11 @@
|
||||
if(mode == 0)
|
||||
mode = 1
|
||||
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
user << "\red The telepad locator has become uncalibrated."
|
||||
user << "<span class = 'caution'> The telepad locator has become uncalibrated.</span>"
|
||||
else
|
||||
mode = 0
|
||||
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
user << "\blue You calibrate the telepad locator."
|
||||
user << "<span class = 'caution'> You calibrate the telepad locator.</span>"
|
||||
|
||||
/obj/item/weapon/rcs/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/weapon/card/emag) && emagged == 0)
|
||||
@@ -127,5 +118,5 @@
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
user << "\red You emag the RCS. Click on it to toggle between modes."
|
||||
user << "<span class = 'caution'> You emag the RCS. Click on it to toggle between modes.</span>"
|
||||
return
|
||||
@@ -1,7 +1,9 @@
|
||||
/obj/machinery/computer/telescience
|
||||
name = "Telepad Control Console"
|
||||
name = "telepad control console"
|
||||
desc = "Used to teleport objects to and from the telescience telepad."
|
||||
icon_state = "teleport"
|
||||
var/sending = 1
|
||||
var/obj/machinery/telepad/telepad = null
|
||||
|
||||
// VARIABLES //
|
||||
var/teles_left // How many teleports left until it becomes uncalibrated
|
||||
@@ -12,9 +14,15 @@
|
||||
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)
|
||||
initialize()
|
||||
|
||||
/obj/machinery/computer/telescience/initialize()
|
||||
..()
|
||||
telepad = locate() in range(src, 7)
|
||||
|
||||
/obj/machinery/computer/telescience/update_icon()
|
||||
if(stat & BROKEN)
|
||||
@@ -28,17 +36,15 @@
|
||||
stat &= ~NOPOWER
|
||||
|
||||
/obj/machinery/computer/telescience/attack_paw(mob/user)
|
||||
usr << "You are too primitive to use this computer."
|
||||
user << "You are too primitive to use this computer."
|
||||
return
|
||||
|
||||
/obj/machinery/computer/telescience/attack_ai(mob/user)
|
||||
src.attack_hand()
|
||||
src.attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/telescience/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
var/t = ""
|
||||
t += "<A href='?src=\ref[src];setx=1'>Set X</A>"
|
||||
t += "<A href='?src=\ref[src];sety=1'>Set Y</A>"
|
||||
@@ -53,11 +59,13 @@
|
||||
popup.open()
|
||||
return
|
||||
/obj/machinery/computer/telescience/proc/sparks()
|
||||
for(var/obj/machinery/telepad/E in machines)
|
||||
if(telepad)
|
||||
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()
|
||||
else
|
||||
return
|
||||
/obj/machinery/computer/telescience/proc/telefail()
|
||||
if(prob(95))
|
||||
sparks()
|
||||
@@ -137,120 +145,54 @@
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/computer/telescience/proc/dosend()
|
||||
/obj/machinery/computer/telescience/proc/doteleport(mob/user)
|
||||
var/trueX = (x_co + x_off)
|
||||
var/trueY = (y_co + y_off)
|
||||
for(var/obj/machinery/telepad/E in machines)
|
||||
var/L = get_turf(E)
|
||||
var/target = locate(trueX, trueY, z_co)
|
||||
trueX = Clamp(trueX, 1, world.maxx)
|
||||
trueY = Clamp(trueY, 1, world.maxy)
|
||||
if(telepad)
|
||||
var/turf/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, L)
|
||||
s.set_up(5, 1, telepad)
|
||||
s.start()
|
||||
flick("pad-beam", E)
|
||||
usr << "\blue Teleport successful."
|
||||
flick("pad-beam", telepad)
|
||||
user << "<span class = 'caution'> Teleport successful.</span>"
|
||||
var/sparks = get_turf(target)
|
||||
var/datum/effect/effect/system/spark_spread/y = new /datum/effect/effect/system/spark_spread
|
||||
y.set_up(5, 1, sparks)
|
||||
y.start()
|
||||
for(var/obj/item/OI in L)
|
||||
do_teleport(OI, target, 0)
|
||||
for(var/obj/structure/closet/OC in L)
|
||||
do_teleport(OC, target, 0)
|
||||
for(var/mob/living/carbon/MO in L)
|
||||
do_teleport(MO, target, 0)
|
||||
for(var/mob/living/simple_animal/SA in L)
|
||||
do_teleport(SA, target, 0)
|
||||
var/turf/source = target
|
||||
var/turf/dest = get_turf(telepad)
|
||||
if(sending)
|
||||
source = dest
|
||||
dest = target
|
||||
for(var/atom/movable/ROI in source)
|
||||
if(ROI.anchored) continue
|
||||
do_teleport(ROI, dest, 0)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/computer/telescience/proc/doreceive()
|
||||
var/trueX = (x_co + x_off)
|
||||
var/trueY = (y_co + y_off)
|
||||
for(var/obj/machinery/telepad/E in machines)
|
||||
var/L = get_turf(E)
|
||||
var/T = locate(trueX, trueY, z_co)
|
||||
var/G = get_turf(T)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, L)
|
||||
s.start()
|
||||
flick("pad-beam", E)
|
||||
usr << "\blue Teleport successful."
|
||||
var/sparks = get_turf(T)
|
||||
var/datum/effect/effect/system/spark_spread/y = new /datum/effect/effect/system/spark_spread
|
||||
y.set_up(5, 1, sparks)
|
||||
y.start()
|
||||
for(var/obj/item/ROI in G)
|
||||
do_teleport(ROI, E, 0)
|
||||
for(var/obj/structure/closet/ROC in G)
|
||||
do_teleport(ROC, E, 0)
|
||||
for(var/mob/living/carbon/RMO in G)
|
||||
do_teleport(RMO, E, 0)
|
||||
for(var/mob/living/simple_animal/RSA in G)
|
||||
do_teleport(RSA, E, 0)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/computer/telescience/proc/telesend()
|
||||
if(x_co == "")
|
||||
usr << "\red Error: set coordinates."
|
||||
return
|
||||
if(y_co == "")
|
||||
usr << "\red Error: set coordinates."
|
||||
return
|
||||
if(z_co == "")
|
||||
usr << "\red Error: set coordinates."
|
||||
/obj/machinery/computer/telescience/proc/teleport(mob/user)
|
||||
if(x_co == null || y_co == null || z_co == null)
|
||||
user << "<span class = 'caution'> Error: set coordinates.</span>"
|
||||
return
|
||||
if(x_co < 1 || x_co > 255)
|
||||
telefail()
|
||||
usr << "\red Error: X is less than 11 or greater than 245."
|
||||
user << "<span class = 'caution'> Error: X is less than 1 or greater than 255.</span>"
|
||||
return
|
||||
if(y_co < 1 || y_co > 255)
|
||||
telefail()
|
||||
usr << "\red Error: Y is less than 11 or greater than 245."
|
||||
user << "<span class = 'caution'> Error: Y is less than 1 or greater than 255.</span>"
|
||||
return
|
||||
if(z_co == 2 || z_co < 1 || z_co > 6)
|
||||
if(z_co == 2 || z_co < 1 || z_co > 7)
|
||||
telefail()
|
||||
usr << "\red Error: Z is less than 1, greater than 6, or equal to 2."
|
||||
user << "<span class = 'caution'> Error: Z is less than 1, greater than 7, or equal to 2.</span>"
|
||||
return
|
||||
if(teles_left > 0)
|
||||
teles_left -= 1
|
||||
dosend()
|
||||
doteleport(user)
|
||||
else
|
||||
dosend()
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/computer/telescience/proc/telereceive()
|
||||
// basically the same thing
|
||||
if(x_co == "")
|
||||
usr << "\red Error: set coordinates."
|
||||
return
|
||||
if(y_co == "")
|
||||
usr << "\red Error: set coordinates."
|
||||
return
|
||||
if(z_co == "")
|
||||
usr << "\red Error: set coordinates."
|
||||
return
|
||||
if(x_co < 1 || x_co > 255)
|
||||
telefail()
|
||||
usr << "\red Error: X is less than 11 or greater than 200."
|
||||
return
|
||||
if(y_co < 1 || y_co > 255)
|
||||
telefail()
|
||||
usr << "\red Error: Y is less than 11 or greater than 200."
|
||||
return
|
||||
if(z_co == 2 || z_co < 1 || z_co > 6)
|
||||
telefail()
|
||||
usr << "\red Error: Z is less than 1, greater than 6, or equal to 2."
|
||||
return
|
||||
if(teles_left > 0)
|
||||
teles_left -= 1
|
||||
doreceive()
|
||||
else
|
||||
if(prob(35))
|
||||
doreceive()
|
||||
else
|
||||
telefail()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -258,37 +200,29 @@
|
||||
if(..())
|
||||
return
|
||||
if(href_list["setx"])
|
||||
var/a = input("Please input desired X coordinate.", name, x_co) as num
|
||||
a = copytext(sanitize(a), 1, 20)
|
||||
x_co = a
|
||||
x_co = text2num(x_co)
|
||||
var/new_x = input("Please input desired X coordinate.", name, x_co) as num
|
||||
x_co = Clamp(new_x, 1, 9999)
|
||||
return
|
||||
if(href_list["sety"])
|
||||
var/b = input("Please input desired Y coordinate.", name, y_co) as num
|
||||
b = copytext(sanitize(b), 1, 20)
|
||||
y_co = b
|
||||
y_co = text2num(y_co)
|
||||
var/new_y = input("Please input desired Y coordinate.", name, y_co) as num
|
||||
y_co = Clamp(new_y, 1, 9999)
|
||||
return
|
||||
if(href_list["setz"])
|
||||
var/c = input("Please input desired Z coordinate.", name, z_co) as num
|
||||
c = copytext(sanitize(c), 1, 20)
|
||||
z_co = c
|
||||
z_co = text2num(z_co)
|
||||
var/new_z = input("Please input desired Z coordinate.", name, z_co) as num
|
||||
z_co = Clamp(new_z, 1, 9999)
|
||||
return
|
||||
if(href_list["send"])
|
||||
telesend()
|
||||
sending = 1
|
||||
teleport(usr)
|
||||
return
|
||||
if(href_list["receive"])
|
||||
telereceive()
|
||||
sending = 0
|
||||
teleport(usr)
|
||||
return
|
||||
if(href_list["recal"])
|
||||
teles_left = rand(9,12)
|
||||
x_off = rand(-10,10)
|
||||
y_off = rand(-10,10)
|
||||
for(var/obj/machinery/telepad/E in machines)
|
||||
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."
|
||||
sparks()
|
||||
usr << "<span class = 'caution'> Calibration successful.</span>"
|
||||
return
|
||||
Reference in New Issue
Block a user