Merge pull request #6464 from Heroman3003/telemaster

Makes telecomm machinery constructible/deconstructible like normal machines
This commit is contained in:
Atermonera
2019-09-29 22:19:00 -04:00
committed by VirgoBot
parent 1b32c41e72
commit 7f71c276b3
3 changed files with 91 additions and 90 deletions
+11 -1
View File
@@ -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
@@ -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, "<span class='notice'>You insert the cables.</span>")
construct_op--
stat &= ~BROKEN // the machine's not borked anymore!
else
to_chat(user, "<span class='warning'>You need five coils of wire for this.</span>")
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)
@@ -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"])