mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 15:45:25 +01:00
Merge pull request #2108 from Fox-McCloud/rcs-update
RCS Refactor and Balancing
This commit is contained in:
@@ -3517,8 +3517,8 @@
|
||||
"bpH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/office)
|
||||
"bpI" = (/turf/simulated/floor,/area/quartermaster/office)
|
||||
"bpJ" = (/obj/item/weapon/storage/box,/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor{icon_state = "arrival"; dir = 1},/area/quartermaster/office)
|
||||
"bpK" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; name = "Cargo Requests Console"; departmentType = 2; pixel_y = 30},/obj/item/stack/tape_roll,/turf/simulated/floor{icon_state = "arrival"; dir = 1},/area/quartermaster/office)
|
||||
"bpL" = (/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/quartermaster/office)
|
||||
"bpK" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; name = "Cargo Requests Console"; departmentType = 2; pixel_y = 30},/obj/item/stack/tape_roll,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor{icon_state = "arrival"; dir = 1},/area/quartermaster/office)
|
||||
"bpL" = (/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/rcs,/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/quartermaster/office)
|
||||
"bpM" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west)
|
||||
"bpN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central/west)
|
||||
"bpO" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "heads_meeting"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/bridge/meeting_room)
|
||||
@@ -3604,7 +3604,7 @@
|
||||
"brq" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
|
||||
"brr" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort1"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/office)
|
||||
"brs" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/office)
|
||||
"brt" = (/obj/structure/table,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/machinery/light{dir = 4},/obj/item/weapon/rcs,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office)
|
||||
"brt" = (/obj/structure/table,/obj/machinery/light{dir = 4},/obj/machinery/recharger,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office)
|
||||
"bru" = (/obj/machinery/atm{pixel_x = -32},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west)
|
||||
"brv" = (/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/obj/structure/table,/turf/simulated/floor/wood,/area/bridge/meeting_room)
|
||||
"brw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/bridge/meeting_room)
|
||||
@@ -4892,7 +4892,7 @@
|
||||
"bQe" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/obj/item/device/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
|
||||
"bQf" = (/obj/machinery/computer/shuttle_control/research{req_access = null; req_access_txt = "65"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
|
||||
"bQg" = (/obj/structure/lattice,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 32},/turf/space,/area/space)
|
||||
"bQh" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
"bQh" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/rcs,/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
"bQi" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
"bQj" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
"bQk" = (/obj/structure/rack{dir = 1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
|
||||
@@ -1496,7 +1496,7 @@
|
||||
"CO" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/mine/production)
|
||||
"CP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/mine/production)
|
||||
"CQ" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor,/area/mine/production)
|
||||
"CR" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/item/weapon/rcs,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/production)
|
||||
"CR" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/recharger,/turf/simulated/floor,/area/mine/production)
|
||||
"CS" = (/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production)
|
||||
"CT" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/structure/window/reinforced,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor,/area/mine/production)
|
||||
"CU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
/obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob, params)
|
||||
if(istype(user,/mob/living/silicon))
|
||||
return
|
||||
if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton) || istype(G,/obj/item/device/laptop))
|
||||
if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton) || istype(G,/obj/item/device/laptop) || istype(G, /obj/item/weapon/rcs))
|
||||
if(charging)
|
||||
return
|
||||
|
||||
@@ -95,6 +95,14 @@
|
||||
use_power(2500)
|
||||
else
|
||||
icon_state = icon_state_charged
|
||||
if(istype(charging, /obj/item/weapon/rcs))
|
||||
var/obj/item/weapon/rcs/R = charging
|
||||
if(R.rcell && R.rcell.charge < R.rcell.maxcharge)
|
||||
R.rcell.charge += 1750
|
||||
icon_state = icon_state_charging
|
||||
use_power(2000)
|
||||
else
|
||||
icon_state = icon_state_charged
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
origin_tech = "bluespace=1"
|
||||
var/emagged = 0
|
||||
var/syndicate = 0
|
||||
|
||||
|
||||
/obj/item/device/radio/beacon/New()
|
||||
..()
|
||||
code = "[code] ([beacons.len + 1])"
|
||||
beacons += src
|
||||
|
||||
|
||||
/obj/item/device/radio/beacon/Destroy()
|
||||
beacons -= src
|
||||
return ..()
|
||||
@@ -34,7 +34,7 @@
|
||||
set name = "Alter Beacon's Signal"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
|
||||
if (usr.stat || usr.restrained())
|
||||
return
|
||||
|
||||
@@ -75,21 +75,4 @@
|
||||
new /obj/machinery/syndicatebomb( user.loc )
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/telepad_beacon
|
||||
name = "Telepad Beacon"
|
||||
desc = "Used to warp in a cargo telepad."
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
icon_state = "beacon"
|
||||
item_state = "signaler"
|
||||
origin_tech = "bluespace=3"
|
||||
|
||||
/obj/item/device/telepad_beacon/attack_self(mob/user as mob)
|
||||
if(user)
|
||||
user << "\blue Locked In"
|
||||
new /obj/machinery/telepad_cargo(user.loc)
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
@@ -177,8 +177,10 @@
|
||||
|
||||
/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/rcs) && !src.opened)
|
||||
if(user in contents) //to prevent self-teleporting.
|
||||
return
|
||||
var/obj/item/weapon/rcs/E = W
|
||||
if(E.rcharges != 0)
|
||||
if(E.rcell && (E.rcell.charge >= E.chargecost))
|
||||
if(!(src.z in config.contact_levels))
|
||||
user << "<span class='warning'>The rapid-crate-sender can't locate any telepads!</span>"
|
||||
return
|
||||
@@ -200,20 +202,16 @@
|
||||
playsound(E.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user << "\blue Teleporting [src.name]..."
|
||||
E.teleporting = 1
|
||||
sleep(50)
|
||||
if(!do_after(user, 50, target = src))
|
||||
E.teleporting = 0
|
||||
return
|
||||
E.teleporting = 0
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
do_teleport(src, E.pad, 0)
|
||||
E.rcharges--
|
||||
if(E.rcharges != 1)
|
||||
user << "\blue Teleport successful. [E.rcharges] charges left."
|
||||
E.desc = "Use this to send crates and closets to cargo telepads. There are [E.rcharges] charges left."
|
||||
return
|
||||
else
|
||||
user << "\blue Teleport successful. [E.rcharges] charge left."
|
||||
E.desc = "Use this to send crates and closets to cargo telepads. There is [E.rcharges] charge left."
|
||||
E.rcell.use(E.chargecost)
|
||||
user << "<span class='notice'>Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.</span>"
|
||||
return
|
||||
else
|
||||
E.rand_x = rand(50,200)
|
||||
@@ -222,23 +220,19 @@
|
||||
playsound(E.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user << "\blue Teleporting [src.name]..."
|
||||
E.teleporting = 1
|
||||
sleep(50)
|
||||
if(!do_after(user, 50, target = src))
|
||||
E.teleporting = 0
|
||||
return
|
||||
E.teleporting = 0
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
do_teleport(src, L)
|
||||
E.rcharges--
|
||||
if(E.rcharges != 1)
|
||||
user << "\blue Teleport successful. [E.rcharges] charges left."
|
||||
E.desc = "Use this to send crates and closets to cargo telepads. There are [E.rcharges] charges left."
|
||||
return
|
||||
else
|
||||
user << "\blue Teleport successful. [E.rcharges] charge left."
|
||||
E.desc = "Use this to send crates and closets to cargo telepads. There is [E.rcharges] charge left."
|
||||
return
|
||||
E.rcell.use(E.chargecost)
|
||||
user << "<span class='notice'>Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.</span>"
|
||||
return
|
||||
else
|
||||
user << "\red Out of charges."
|
||||
user << "<span class='warning'>Out of charges.</span>"
|
||||
return
|
||||
|
||||
if(src.opened)
|
||||
|
||||
@@ -66,6 +66,9 @@
|
||||
user << "<span class='notice'>Access Denied</span>"
|
||||
|
||||
/obj/structure/closet/secure_closet/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/rcs))
|
||||
return ..()
|
||||
|
||||
if(src.opened)
|
||||
if(istype(W, /obj/item/weapon/grab))
|
||||
if(src.large)
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
/obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/rcs) && !src.opened)
|
||||
var/obj/item/weapon/rcs/E = W
|
||||
if(E.rcharges != 0)
|
||||
if(E.rcell && (E.rcell.charge >= E.chargecost))
|
||||
if(!(src.z in config.player_levels))
|
||||
user << "<span class='warning'>The rapid-crate-sender can't locate any telepads!</span>"
|
||||
return
|
||||
@@ -103,20 +103,16 @@
|
||||
playsound(E.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user << "\blue Teleporting [src.name]..."
|
||||
E.teleporting = 1
|
||||
sleep(50)
|
||||
if(!do_after(user, 50, target = src))
|
||||
E.teleporting = 0
|
||||
return
|
||||
E.teleporting = 0
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
do_teleport(src, E.pad, 0)
|
||||
E.rcharges--
|
||||
if(E.rcharges != 1)
|
||||
user << "\blue Teleport successful. [E.rcharges] charges left."
|
||||
E.desc = "Use this to send crates and closets to cargo telepads. There are [E.rcharges] charges left."
|
||||
return
|
||||
else
|
||||
user << "\blue Teleport successful. [E.rcharges] charge left."
|
||||
E.desc = "Use this to send crates and closets to cargo telepads. There is [E.rcharges] charge left."
|
||||
E.rcell.use(E.chargecost)
|
||||
user << "<span class='notice'>Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.</span>"
|
||||
return
|
||||
else
|
||||
E.rand_x = rand(50,200)
|
||||
@@ -125,23 +121,19 @@
|
||||
playsound(E.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user << "\blue Teleporting [src.name]..."
|
||||
E.teleporting = 1
|
||||
sleep(50)
|
||||
if(!do_after(user, 50, target = src))
|
||||
E.teleporting = 0
|
||||
return
|
||||
E.teleporting = 0
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
do_teleport(src, L)
|
||||
E.rcharges--
|
||||
if(E.rcharges != 1)
|
||||
user << "\blue Teleport successful. [E.rcharges] charges left."
|
||||
E.desc = "Use this to send crates and closets to cargo telepads. There are [E.rcharges] charges left."
|
||||
return
|
||||
else
|
||||
user << "\blue Teleport successful. [E.rcharges] charge left."
|
||||
E.desc = "Use this to send crates and closets to cargo telepads. There is [E.rcharges] charge left."
|
||||
return
|
||||
E.rcell.use(E.chargecost)
|
||||
user << "<span class='notice'>Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.</span>"
|
||||
return
|
||||
else
|
||||
user << "\red Out of charges."
|
||||
user << "<span class='warning'>Out of charges.</span>"
|
||||
return
|
||||
|
||||
if(opened)
|
||||
@@ -295,7 +287,7 @@
|
||||
|
||||
|
||||
/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(is_type_in_list(W, list(/obj/item/stack/packageWrap, /obj/item/stack/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/wirecutters)))
|
||||
if(is_type_in_list(W, list(/obj/item/stack/packageWrap, /obj/item/stack/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/wirecutters,/obj/item/weapon/rcs)))
|
||||
return ..()
|
||||
if((istype(W, /obj/item/weapon/card/emag) || istype(W, /obj/item/weapon/melee/energy/blade)))
|
||||
emag_act(user)
|
||||
|
||||
@@ -110,44 +110,39 @@
|
||||
///HANDHELD TELEPAD USER///
|
||||
/obj/item/weapon/rcs
|
||||
name = "rapid-crate-sender (RCS)"
|
||||
desc = "Use this to send crates and closets to cargo telepads."
|
||||
desc = "A device used to teleport crates and closets to cargo telepads."
|
||||
icon = 'icons/obj/telescience.dmi'
|
||||
icon_state = "rcs"
|
||||
item_state = "rcd"
|
||||
flags = CONDUCT
|
||||
force = 10.0
|
||||
throwforce = 10.0
|
||||
throw_speed = 2
|
||||
throw_range = 5
|
||||
var/rcharges = 10
|
||||
var/obj/item/weapon/stock_parts/cell/high/rcell = null
|
||||
var/obj/machinery/pad = null
|
||||
var/last_charge = 30
|
||||
var/mode = 0
|
||||
var/rand_x = 0
|
||||
var/rand_y = 0
|
||||
var/emagged = 0
|
||||
var/teleporting = 0
|
||||
var/chargecost = 1500
|
||||
|
||||
/obj/item/weapon/rcs/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
rcell = new(src)
|
||||
|
||||
|
||||
/obj/item/weapon/rcs/examine(mob/user)
|
||||
..(user)
|
||||
user << "There are [rcharges] charge\s left."
|
||||
user << "There are [round(rcell.charge/chargecost)] charge\s left."
|
||||
|
||||
/obj/item/weapon/rcs/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
if(rcell)
|
||||
qdel(rcell)
|
||||
rcell = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/rcs/process()
|
||||
if(rcharges > 10)
|
||||
rcharges = 10
|
||||
if(last_charge == 0)
|
||||
rcharges++
|
||||
last_charge = 30
|
||||
else
|
||||
last_charge--
|
||||
|
||||
/obj/item/weapon/rcs/attack_self(mob/user)
|
||||
if(emagged)
|
||||
if(mode == 0)
|
||||
@@ -165,5 +160,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 << "<span class = 'caution'> You emag the RCS. Click on it to toggle between modes.</span>"
|
||||
user << "<span class = 'caution'> You emag the RCS. Activate it to toggle between modes.</span>"
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user