7e9b96a00f
* Maps and things no code/icons * helpers defines globalvars * Onclick world.dm orphaned_procs * subsystems Round vote and shuttle autocall done here too * datums * Game folder * Admin - chatter modules * clothing - mining * modular computers - zambies * client * mob level 1 * mob stage 2 + simple_animal * silicons n brains * mob stage 3 + Alien/Monkey * human mobs * icons updated * some sounds * emitter y u no commit * update tgstation.dme * compile fixes * travis fixes Also removes Fast digest mode, because reasons. * tweaks for travis Mentors are broke again Also fixes Sizeray guns * oxygen loss fix for vore code. * removes unused code * some code updates * bulk fixes * further fixes * outside things * whoops. * Maint bar ported * GLOBs.
193 lines
5.9 KiB
Plaintext
193 lines
5.9 KiB
Plaintext
|
|
/*
|
|
The server logs all traffic and signal data. Once it records the signal, it sends
|
|
it to the subspace broadcaster.
|
|
|
|
Store a maximum of 100 logs and then deletes them.
|
|
*/
|
|
|
|
|
|
/obj/machinery/telecomms/server
|
|
name = "telecommunication server"
|
|
icon_state = "comm_server"
|
|
desc = "A machine used to store data and network statistics."
|
|
density = 1
|
|
anchored = 1
|
|
use_power = 1
|
|
idle_power_usage = 15
|
|
machinetype = 4
|
|
//heatgen = 50
|
|
var/list/log_entries = list()
|
|
var/list/stored_names = list()
|
|
var/list/TrafficActions = list()
|
|
var/logs = 0 // number of logs
|
|
var/totaltraffic = 0 // gigabytes (if > 1024, divide by 1024 -> terrabytes)
|
|
|
|
var/list/memory = list() // stored memory
|
|
|
|
var/encryption = "null" // encryption key: ie "password"
|
|
var/salt = "null" // encryption salt: ie "123comsat"
|
|
// would add up to md5("password123comsat")
|
|
var/language = "human"
|
|
var/obj/item/device/radio/headset/server_radio = null
|
|
var/last_signal = 0 // Last time it sent a signal
|
|
|
|
/obj/machinery/telecomms/server/New()
|
|
..()
|
|
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/server(null)
|
|
B.apply_default_parts(src)
|
|
server_radio = new()
|
|
|
|
/obj/item/weapon/circuitboard/machine/telecomms/server
|
|
name = "Telecommunication Server (Machine Board)"
|
|
build_path = /obj/machinery/telecomms/server
|
|
origin_tech = "programming=2;engineering=2"
|
|
req_components = list(
|
|
/obj/item/weapon/stock_parts/manipulator = 2,
|
|
/obj/item/stack/cable_coil = 1,
|
|
/obj/item/weapon/stock_parts/subspace/filter = 1)
|
|
|
|
/obj/machinery/telecomms/server/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
|
|
if(signal.data["message"])
|
|
|
|
if(is_freq_listening(signal))
|
|
|
|
if(traffic > 0)
|
|
totaltraffic += traffic // add current traffic to total traffic
|
|
|
|
//Is this a test signal? Bypass logging
|
|
if(signal.data["type"] != 4)
|
|
|
|
// If signal has a message and appropriate frequency
|
|
|
|
update_logs()
|
|
|
|
var/datum/comm_log_entry/log = new
|
|
|
|
// Copy the signal.data entries we want
|
|
log.parameters["mobtype"] = signal.data["mobtype"]
|
|
log.parameters["job"] = signal.data["job"]
|
|
log.parameters["key"] = signal.data["key"]
|
|
log.parameters["message"] = signal.data["message"]
|
|
log.parameters["name"] = signal.data["name"]
|
|
log.parameters["realname"] = signal.data["realname"]
|
|
|
|
//log.parameters["uspeech"] = signal.data["languages"] & HUMAN //good enough
|
|
// TODO languages: ^ I don't know what this does
|
|
|
|
// If the signal is still compressed, make the log entry gibberish
|
|
if(signal.data["compression"] > 0)
|
|
log.parameters["message"] = Gibberish(signal.data["message"], signal.data["compression"] + 50)
|
|
log.parameters["job"] = Gibberish(signal.data["job"], signal.data["compression"] + 50)
|
|
log.parameters["name"] = Gibberish(signal.data["name"], signal.data["compression"] + 50)
|
|
log.parameters["realname"] = Gibberish(signal.data["realname"], signal.data["compression"] + 50)
|
|
log.input_type = "Corrupt File"
|
|
|
|
// Log and store everything that needs to be logged
|
|
log_entries.Add(log)
|
|
if(!(signal.data["name"] in stored_names))
|
|
stored_names.Add(signal.data["name"])
|
|
logs++
|
|
signal.data["server"] = src
|
|
|
|
// Give the log a name
|
|
var/identifier = num2text( rand(-1000,1000) + world.time )
|
|
log.name = "data packet ([md5(identifier)])"
|
|
|
|
var/can_send = relay_information(signal, "/obj/machinery/telecomms/hub")
|
|
if(!can_send)
|
|
relay_information(signal, "/obj/machinery/telecomms/broadcaster")
|
|
|
|
/obj/machinery/telecomms/server/proc/update_logs()
|
|
// start deleting the very first log entry
|
|
if(logs >= 400)
|
|
for(var/i = 1, i <= logs, i++) // locate the first garbage collectable log entry and remove it
|
|
var/datum/comm_log_entry/L = log_entries[i]
|
|
if(L.garbage_collector)
|
|
log_entries.Remove(L)
|
|
logs--
|
|
break
|
|
|
|
/obj/machinery/telecomms/server/proc/add_entry(content, input)
|
|
var/datum/comm_log_entry/log = new
|
|
var/identifier = num2text( rand(-1000,1000) + world.time )
|
|
log.name = "[input] ([md5(identifier)])"
|
|
log.input_type = input
|
|
log.parameters["message"] = content
|
|
log_entries.Add(log)
|
|
update_logs()
|
|
|
|
|
|
|
|
// Simple log entry datum
|
|
|
|
/datum/comm_log_entry
|
|
var/parameters = list() // carbon-copy to signal.data[]
|
|
var/name = "data packet (#)"
|
|
var/garbage_collector = 1 // if set to 0, will not be garbage collected
|
|
var/input_type = "Speech File"
|
|
|
|
|
|
|
|
|
|
//Preset Servers
|
|
|
|
/obj/machinery/telecomms/server/presets
|
|
network = "tcommsat"
|
|
|
|
/obj/machinery/telecomms/server/presets/New()
|
|
..()
|
|
name = id
|
|
|
|
|
|
/obj/machinery/telecomms/server/presets/science
|
|
id = "Science Server"
|
|
freq_listening = list(GLOB.SCI_FREQ)
|
|
autolinkers = list("science")
|
|
|
|
/obj/machinery/telecomms/server/presets/medical
|
|
id = "Medical Server"
|
|
freq_listening = list(GLOB.MED_FREQ)
|
|
autolinkers = list("medical")
|
|
|
|
/obj/machinery/telecomms/server/presets/supply
|
|
id = "Supply Server"
|
|
freq_listening = list(GLOB.SUPP_FREQ)
|
|
autolinkers = list("supply")
|
|
|
|
/obj/machinery/telecomms/server/presets/service
|
|
id = "Service Server"
|
|
freq_listening = list(GLOB.SERV_FREQ)
|
|
autolinkers = list("service")
|
|
|
|
/obj/machinery/telecomms/server/presets/common
|
|
id = "Common Server"
|
|
freq_listening = list()
|
|
autolinkers = list("common")
|
|
|
|
//Common and other radio frequencies for people to freely use
|
|
// 1441 to 1489
|
|
/obj/machinery/telecomms/server/presets/common/New()
|
|
for(var/i = 1441, i < 1489, i += 2)
|
|
freq_listening |= i
|
|
..()
|
|
|
|
/obj/machinery/telecomms/server/presets/command
|
|
id = "Command Server"
|
|
freq_listening = list(GLOB.COMM_FREQ)
|
|
autolinkers = list("command")
|
|
|
|
/obj/machinery/telecomms/server/presets/engineering
|
|
id = "Engineering Server"
|
|
freq_listening = list(GLOB.ENG_FREQ)
|
|
autolinkers = list("engineering")
|
|
|
|
/obj/machinery/telecomms/server/presets/security
|
|
id = "Security Server"
|
|
freq_listening = list(GLOB.SEC_FREQ)
|
|
autolinkers = list("security")
|
|
|
|
/obj/machinery/telecomms/server/presets/common/birdstation/New()
|
|
..()
|
|
freq_listening = list()
|