diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm
index cd65fb9f910..8f6e8e589ea 100644
--- a/code/game/machinery/telecomms/broadcaster.dm
+++ b/code/game/machinery/telecomms/broadcaster.dm
@@ -22,7 +22,17 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
machinetype = 5
produces_heat = 0
delay = 7
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/broadcaster"
+ circuit = /obj/item/weapon/circuitboard/telecomms/broadcaster
+
+/obj/machinery/telecomms/processor/Initialize()
+ . = ..()
+ component_parts = list()
+ component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
+ component_parts += new /obj/item/weapon/stock_parts/subspace/crystal(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/micro_laser/high(src)
+ component_parts += new /obj/item/stack/cable_coil(src, 1)
/obj/machinery/telecomms/broadcaster/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
// Don't broadcast rejected signals
diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm
index 331f5644d92..d41104df251 100644
--- a/code/game/machinery/telecomms/machine_interactions.dm
+++ b/code/game/machinery/telecomms/machine_interactions.dm
@@ -12,7 +12,6 @@
/obj/machinery/telecomms
var/temp = "" // output message
- var/construct_op = 0
/obj/machinery/telecomms/attackby(obj/item/P as obj, mob/user as mob)
@@ -21,7 +20,6 @@
if(istype(P, /obj/item/device/multitool))
attack_hand(user)
-
// REPAIRING: Use Nanopaste to repair 10-20 integrity points.
if(istype(P, /obj/item/stack/nanopaste))
var/obj/item/stack/nanopaste/T = P
@@ -34,75 +32,10 @@
return
- switch(construct_op)
- if(0)
- if(P.is_screwdriver())
- to_chat(user, "You unfasten the bolts.")
- playsound(src.loc, P.usesound, 50, 1)
- construct_op ++
- if(1)
- if(P.is_screwdriver())
- to_chat(user, "You fasten the bolts.")
- playsound(src.loc, P.usesound, 50, 1)
- construct_op --
- if(P.is_wrench())
- to_chat(user, "You dislodge the external plating.")
- playsound(src.loc, P.usesound, 75, 1)
- construct_op ++
- if(2)
- if(P.is_wrench())
- to_chat(user, "You secure the external plating.")
- playsound(src.loc, P.usesound, 75, 1)
- construct_op --
- if(P.is_wirecutter())
- playsound(src.loc, P.usesound, 50, 1)
- to_chat(user, "You remove the cables.")
- construct_op ++
- var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( user.loc )
- A.amount = 5
- stat |= BROKEN // the machine's been borked!
- if(3)
- if(istype(P, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/A = P
- if (A.use(5))
- to_chat(user, "You insert the cables.")
- construct_op--
- stat &= ~BROKEN // the machine's not borked anymore!
- else
- to_chat(user, "You need five coils of wire for this.")
- if(P.is_crowbar())
- to_chat(user, "You begin prying out the circuit board other components...")
- playsound(src.loc, P.usesound, 50, 1)
- if(do_after(user,60 * P.toolspeed))
- to_chat(user, "You finish prying out the components.")
-
- // Drop all the component stuff
- if(contents.len > 0)
- for(var/obj/x in src)
- x.loc = user.loc
- else
-
- // If the machine wasn't made during runtime, probably doesn't have components:
- // manually find the components and drop them!
- var/newpath = text2path(circuitboard)
- var/obj/item/weapon/circuitboard/C = new newpath
- for(var/I in C.req_components)
- for(var/i = 1, i <= C.req_components[I], i++)
- newpath = text2path(I)
- var/obj/item/s = new newpath
- s.loc = user.loc
- if(istype(P, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/A = P
- A.amount = 1
-
- // Drop a circuit board too
- C.loc = user.loc
-
- // Create a frame and delete the current machine
- var/obj/structure/frame/F = new
- F.loc = src.loc
- qdel(src)
-
+ if(default_deconstruction_screwdriver(user, P))
+ return
+ if(default_deconstruction_crowbar(user, P))
+ return
/obj/machinery/telecomms/attack_ai(var/mob/user as mob)
attack_hand(user)
diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm
index 50e2f504c9f..d6cefb68283 100644
--- a/code/game/machinery/telecomms/telecomunications.dm
+++ b/code/game/machinery/telecomms/telecomunications.dm
@@ -32,7 +32,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
var/produces_heat = 1 //whether the machine will produce heat when on.
var/delay = 10 // how many process() ticks to delay per heat
var/long_range_link = 0 // Can you link it across Z levels or on the otherside of the map? (Relay & Hub)
- var/circuitboard = null // string pointing to a circuitboard type
var/hide = 0 // Is it a hidden machine?
var/listening_level = 0 // 0 = auto set in New() - this is the z level that the machine is listening to.
@@ -256,7 +255,17 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
idle_power_usage = 600
machinetype = 1
produces_heat = 0
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/receiver"
+ circuit = /obj/item/weapon/circuitboard/telecomms/receiver
+
+/obj/machinery/telecomms/receiver/Initialize()
+ . = ..()
+ component_parts = list()
+ component_parts += new /obj/item/weapon/stock_parts/subspace/ansible(src)
+ component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
+ RefreshParts()
/obj/machinery/telecomms/receiver/receive_signal(datum/signal/signal)
@@ -312,7 +321,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
use_power = 1
idle_power_usage = 1600
machinetype = 7
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/hub"
+ circuit = /obj/item/weapon/circuitboard/telecomms/hub
long_range_link = 1
netspeed = 40
var/list/telecomms_map
@@ -320,6 +329,13 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
/obj/machinery/telecomms/hub/Initialize()
. = ..()
LAZYINITLIST(telecomms_map)
+ component_parts = list()
+ component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
+ component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/stack/cable_coil(src, 2)
+ RefreshParts()
/obj/machinery/telecomms/hub/process()
. = ..()
@@ -365,12 +381,22 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
idle_power_usage = 600
machinetype = 8
produces_heat = 0
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/relay"
+ circuit = /obj/item/weapon/circuitboard/telecomms/relay
netspeed = 5
long_range_link = 1
var/broadcasting = 1
var/receiving = 1
+/obj/machinery/telecomms/relay/Initialize()
+ . = ..()
+ component_parts = list()
+ component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
+ component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/stack/cable_coil(src, 2)
+ RefreshParts()
+
/obj/machinery/telecomms/relay/forceMove(var/newloc)
. = ..(newloc)
listening_level = z
@@ -420,10 +446,19 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
use_power = 1
idle_power_usage = 1000
machinetype = 2
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/bus"
+ circuit = /obj/item/weapon/circuitboard/telecomms/bus
netspeed = 40
var/change_frequency = 0
+/obj/machinery/telecomms/bus/Initialize()
+ . = ..()
+ component_parts = list()
+ component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/stack/cable_coil(src, 1)
+ RefreshParts()
+
/obj/machinery/telecomms/bus/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
if(is_freq_listening(signal))
@@ -473,23 +508,37 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
idle_power_usage = 600
machinetype = 3
delay = 5
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/processor"
+ circuit = /obj/item/weapon/circuitboard/telecomms/processor
var/process_mode = 1 // 1 = Uncompress Signals, 0 = Compress Signals
- receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
+/obj/machinery/telecomms/processor/Initialize()
+ . = ..()
+ component_parts = list()
+ component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
+ component_parts += new /obj/item/weapon/stock_parts/subspace/treatment(src)
+ component_parts += new /obj/item/weapon/stock_parts/subspace/treatment(src)
+ component_parts += new /obj/item/weapon/stock_parts/subspace/amplifier(src)
+ component_parts += new /obj/item/weapon/stock_parts/subspace/analyzer(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/stack/cable_coil(src, 2)
+ RefreshParts()
- if(is_freq_listening(signal))
+/obj/machinery/telecomms/processor/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
- if(process_mode)
- signal.data["compression"] = 0 // uncompress subspace signal
- else
- signal.data["compression"] = 100 // even more compressed signal
+ if(is_freq_listening(signal))
- if(istype(machine_from, /obj/machinery/telecomms/bus))
- relay_direct_information(signal, machine_from) // send the signal back to the machine
- else // no bus detected - send the signal to servers instead
- signal.data["slow"] += rand(5, 10) // slow the signal down
- relay_information(signal, "/obj/machinery/telecomms/server")
+ if(process_mode)
+ signal.data["compression"] = 0 // uncompress subspace signal
+ else
+ signal.data["compression"] = 100 // even more compressed signal
+
+ if(istype(machine_from, /obj/machinery/telecomms/bus))
+ relay_direct_information(signal, machine_from) // send the signal back to the machine
+ else // no bus detected - send the signal to servers instead
+ signal.data["slow"] += rand(5, 10) // slow the signal down
+ relay_information(signal, "/obj/machinery/telecomms/server")
/*
@@ -510,7 +559,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
use_power = 1
idle_power_usage = 300
machinetype = 4
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/server"
+ circuit = /obj/item/weapon/circuitboard/telecomms/server
var/list/log_entries = list()
var/list/stored_names = list()
var/list/TrafficActions = list()
@@ -534,6 +583,15 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
Compiler.Holder = src
server_radio = new()
+/obj/machinery/telecomms/server/Initialize()
+ . = ..()
+ component_parts = list()
+ component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ component_parts += new /obj/item/stack/cable_coil(src, 1)
+ RefreshParts()
+
/obj/machinery/telecomms/server/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
if(signal.data["message"])