Made telescience WORK!

This commit is contained in:
Iamgoofball
2013-11-09 22:42:54 -08:00
parent 1ce702c9e9
commit d83c07ca0e
3 changed files with 76 additions and 145 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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