diff --git a/code/modules/modular_computers/NTNet/NTNet.dm b/code/modules/modular_computers/NTNet/NTNet.dm
index dce270abba8..39f0400c47f 100644
--- a/code/modules/modular_computers/NTNet/NTNet.dm
+++ b/code/modules/modular_computers/NTNet/NTNet.dm
@@ -38,7 +38,7 @@ var/global/datum/ntnet/ntnet_global = new()
// Simplified logging: Adds a log. log_string is mandatory parameter, source is optional.
/datum/ntnet/proc/add_log(var/log_string, var/obj/item/weapon/computer_hardware/network_card/source = null)
- var/log_text = "[stationtime2text()] - "
+ var/log_text = "[worldtime2text()] - "
if(source)
log_text += "[source.get_network_tag()] - "
else
@@ -133,7 +133,7 @@ var/global/datum/ntnet/ntnet_global = new()
if(!lognumber)
return 0
// Trim the value if necessary
- lognumber = between(MIN_NTNET_LOGS, lognumber, MAX_NTNET_LOGS)
+ lognumber = max(MIN_NTNET_LOGS, min(lognumber, MAX_NTNET_LOGS))
setting_maxlogcount = lognumber
add_log("Configuration Updated. Now keeping [setting_maxlogcount] logs in system memory.")
diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm
index 7808af0cbe6..de40b427476 100644
--- a/code/modules/modular_computers/NTNet/NTNet_relay.dm
+++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm
@@ -5,6 +5,7 @@
use_power = 2
active_power_usage = 20000 //20kW, apropriate for machine that keeps massive cross-Zlevel wireless network operational.
idle_power_usage = 100
+ icon = 'icons/obj/machines/telecomms.dmi'
icon_state = "bus"
anchored = 1
density = 1
@@ -20,7 +21,7 @@
// TODO: Implement more logic here. For now it's only a placeholder.
-/obj/machinery/ntnet_relay/proc/is_operational()
+/obj/machinery/ntnet_relay/is_operational()
if(stat & (BROKEN | NOPOWER | EMPED))
return 0
if(dos_failure)
@@ -56,23 +57,55 @@
ntnet_global.add_log("Quantum relay switched from overload recovery mode to normal operation mode.")
..()
-/obj/machinery/ntnet_relay/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
+/obj/machinery/ntnet_relay/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 1, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
+
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+
+ if(!ui)
+ ui = new(user, src, ui_key, "nt_relay", name, 300, 150, master_ui, state)
+ ui.open()
+
+
+/obj/machinery/ntnet_relay/ui_data(mob/user)
var/list/data = list()
data["enabled"] = enabled
data["dos_capacity"] = dos_capacity
data["dos_overload"] = dos_overload
data["dos_crashed"] = dos_failure
+ return data
- ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+
+/obj/machinery/ntnet_relay/ui_act(action, params)
+ if(..())
+ return
+ switch(action)
+ if("restart")
+ dos_overload = 0
+ dos_failure = 0
+ update_icon()
+ ntnet_global.add_log("Quantum relay manually restarted from overload recovery mode to normal operation mode.")
+ if("toggle")
+ enabled = !enabled
+ ntnet_global.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].")
+ update_icon()
+
+
+
+/*
+
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
ui = new(user, src, ui_key, "ntnet_relay.tmpl", "NTNet Quantum Relay", 500, 300, state = state)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
+*/
+
/obj/machinery/ntnet_relay/attack_hand(var/mob/living/user)
ui_interact(user)
+/*
/obj/machinery/ntnet_relay/Topic(href, href_list)
if(..())
return 1
@@ -85,13 +118,13 @@
enabled = !enabled
ntnet_global.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].")
update_icon()
-
+*/
/obj/machinery/ntnet_relay/New()
uid = gl_uid
gl_uid++
component_parts = list()
component_parts += new /obj/item/stack/cable_coil(src,15)
- component_parts += new /obj/item/weapon/circuitboard/ntnet_relay(src)
+// component_parts += new /obj/item/weapon/circuitboard/ntnet_relay(src)
if(ntnet_global)
ntnet_global.relays.Add(src)
@@ -104,9 +137,11 @@
ntnet_global.relays.Remove(src)
ntnet_global.add_log("Quantum relay connection severed. Current amount of linked relays: [NTNet.relays.len]")
NTNet = null
+/*
for(var/datum/computer_file/program/ntnet_dos/D in dos_sources)
D.target = null
D.error = "Connection to quantum relay severed"
+*/
..()
/obj/machinery/ntnet_relay/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
@@ -124,7 +159,7 @@
for(var/atom/movable/A in component_parts)
A.forceMove(src.loc)
- new/obj/machinery/constructable_frame/machine_frame(src.loc)
+// new/obj/machinery/constructable_frame/machine_frame(src.loc)
qdel(src)
return
..()
\ No newline at end of file
diff --git a/code/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm
index 436b9870b77..54e7e7e5b2c 100644
--- a/code/modules/modular_computers/computers/item/modular_computer.dm
+++ b/code/modules/modular_computers/computers/item/modular_computer.dm
@@ -7,7 +7,7 @@
var/enabled = 0 // Whether the computer is turned on.
var/screen_on = 1 // Whether the computer is active/opened/it's screen is on.
- var/datum/computer_file/program/active_program = null // A currently active program running on the computer.
+ var/datum/computer_file/program/active_program = new /datum/computer_file/program/computerconfig // A currently active program running on the computer.
var/hardware_flag = 0 // A flag that describes this device type
var/last_power_usage = 0
var/last_battery_percent = 0 // Used for deciding if battery percentage has chandged
@@ -100,7 +100,7 @@
card_slot.stored_card.forceMove(get_turf(src))
card_slot.stored_card = null
- update_uis()
+// update_uis()
user << "You remove the card from \the [src]"
/obj/item/modular_computer/proc/proc_eject_usb(mob/user)
@@ -112,7 +112,7 @@
return
uninstall_component(user, portable_drive)
- update_uis()
+// update_uis()
/obj/item/modular_computer/attack_ghost(mob/dead/observer/user)
if(enabled)
@@ -139,13 +139,15 @@
user << "It is damaged."
/obj/item/modular_computer/New()
- processing_objects.Add(src)
+ machines += src
+ START_PROCESSING(SSmachine, src)
update_icon()
..()
/obj/item/modular_computer/Destroy()
kill_program(1)
- processing_objects.Remove(src)
+ machines.Remove(src)
+ STOP_PROCESSING(SSmachine, src)
for(var/obj/item/weapon/computer_hardware/CH in src.get_all_components())
uninstall_component(null, CH)
qdel(CH)
@@ -169,15 +171,15 @@
return 0
// Operates NanoUI
-/obj/item/modular_computer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 1, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
- if(!screen_on || !enabled)
- if(ui)
- ui.close()
- return 0
- if((!battery_module || !battery_module.battery.charge) && !check_power_override())
- if(ui)
- ui.close()
- return 0
+/obj/item/modular_computer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 1, datum/tgui/master_ui = null, datum/ui_state/state = contained_state)
+// if(!screen_on || !enabled)
+// if(ui)
+// ui.close()
+// return 0
+// if((!battery_module || !battery_module.battery.charge) && !check_power_override())
+// if(ui)
+// ui.close()
+// return 0
/*
// If we have an active program switch to it now.
if(active_program)
@@ -190,28 +192,39 @@
// This screen simply lists available programs and user may select them.
if(!hard_drive || !hard_drive.stored_files || !hard_drive.stored_files.len)
visible_message("\The [src] beeps three times, it's screen displaying \"DISK ERROR\" warning.")
- return // No HDD, No HDD files list or no stored files. Something is very broken.
+ // return // No HDD, No HDD files list or no stored files. Something is very broken.
+
+
+// data["programs"] = programs
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if (!ui)
+// ui = new(user, src, ui_key, "laptop_mainscreen", "NTOS Main Menu", 400, 500)
+ ui = new(user, src, ui_key, "computer_main", "Main menu", 475, 340, master_ui, state)
+// ui.set_initial_data(data)
+ ui.open()
+ ui.set_autoupdate(state = 1)
+
+
+/obj/item/modular_computer/ui_data(mob/user)
+ var/list/data = list()
+ data["active_program_template"] = active_program
+
+ return data
+/*
var/list/data = get_header_data()
var/list/programs = list()
for(var/datum/computer_file/program/P in hard_drive.stored_files)
var/list/program = list()
+
program["name"] = P.filename
program["desc"] = P.filedesc
if(P in idle_threads)
program["running"] = 1
programs.Add(list(program))
+*/
- data["programs"] = programs
- ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
- if (!ui)
-// ui = new(user, src, ui_key, "laptop_mainscreen", "NTOS Main Menu", 400, 500)
- ui = new(user, src, ui_key, "computer_main", "Main menu", 475, 340, master_ui, state)
- ui.auto_update_layout = 1
-// ui.set_initial_data(data)
- ui.open()
-// ui.set_auto_update(1)
// On-click handling. Turns on the computer if it's off and opens the GUI.
/obj/item/modular_computer/attack_self(mob/user)
@@ -223,7 +236,7 @@
/obj/item/modular_computer/proc/break_apart()
visible_message("\The [src] breaks apart!")
var/turf/newloc = get_turf(src)
- new /obj/item/stack/material/steel(newloc, round(steel_sheet_cost/2))
+ new /obj/item/stack/sheet/metal(newloc, round(steel_sheet_cost/2))
for(var/obj/item/weapon/computer_hardware/H in get_all_components())
uninstall_component(null, H)
H.forceMove(newloc)
@@ -288,7 +301,7 @@
idle_threads.Remove(P)
handle_power() // Handles all computer power interaction
- check_update_ui_need()
+ //check_update_ui_need()
// Function used by NanoUI's to obtain data for header. All relevant entries begin with "PC_"
/obj/item/modular_computer/proc/get_header_data()
@@ -336,7 +349,7 @@
data["PC_programheaders"] = program_headers
- data["PC_stationtime"] = stationtime2text()
+ data["PC_stationtime"] = worldtime2text()
data["PC_hasheader"] = 1
data["PC_showexitprogram"] = active_program ? 1 : 0 // Hides "Exit Program" button on mainscreen
return data
@@ -401,7 +414,8 @@
idle_threads.Add(active_program)
active_program.program_state = PROGRAM_STATE_BACKGROUND // Should close any existing UIs
- nanomanager.close_uis(active_program.NM ? active_program.NM : active_program)
+// nanomanager.close_uis(active_program.NM ? active_program.NM : active_program)
+
active_program = null
update_icon()
if(user && istype(user))
@@ -418,7 +432,7 @@
return
P.kill_program(1)
- update_uis()
+// update_uis()
user << "Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed."
if( href_list["PC_runprogram"] )
@@ -458,7 +472,8 @@
update_icon()
return 1
if(.)
- update_uis()
+ return
+// update_uis()
// Used in following function to reduce copypaste
/obj/item/modular_computer/proc/power_failure(var/malfunction = 0)
@@ -500,10 +515,11 @@
if(card_slot.stored_card)
user << "You try to insert \the [I] into \the [src], but it's ID card slot is occupied."
return
- user.drop_from_inventory(I)
+ if(!user.drop_item(I))
+ return
card_slot.stored_card = I
I.forceMove(src)
- update_uis()
+// update_uis()
user << "You insert \the [I] into \the [src]."
return
if(istype(W, /obj/item/weapon/paper))
@@ -622,7 +638,8 @@
if(found)
user << "You install \the [H] into \the [src]"
H.holder2 = src
-// user.drop_from_inventory(H)
+ if(!user.drop_item(H))
+ return
H.forceMove(src)
// Uninstalls component. Found and Critical vars may be passed by parent types, if they have additional hardware.
@@ -699,6 +716,8 @@
all_components.Add(processor_unit)
return all_components
+/*
+
/obj/item/modular_computer/proc/update_uis()
if(active_program) //Should we update program ui or computer ui?
nanomanager.update_uis(active_program)
@@ -741,6 +760,9 @@
if(ui_update_needed)
update_uis()
+*/
+
+
/obj/item/modular_computer/proc/take_damage(var/amount, var/component_probability, var/damage_casing = 1, var/randomize = 1)
if(randomize)
// 75%-125%, rand() works with integers, apparently.
diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm
index eca01472280..b88aa9a7a9a 100644
--- a/code/modules/modular_computers/computers/item/processor.dm
+++ b/code/modules/modular_computers/computers/item/processor.dm
@@ -16,8 +16,8 @@
machinery_computer.cpu = null
machinery_computer = null
-/obj/item/modular_computer/processor/nano_host()
- return machinery_computer.nano_host()
+//obj/item/modular_computer/processor/nano_host()
+// return machinery_computer.nano_host()
// Due to how processes work, we'd receive two process calls - one from machinery type and one from our own type.
// Since we want this to be in-sync with machinery (as it's hidden type for machinery-based computers) we'll ignore
@@ -81,10 +81,11 @@
return machinery_computer.powered()
// This thing is not meant to be used on it's own, get topic data from our machinery owner.
-/obj/item/modular_computer/processor/CanUseTopic(user, state)
- if(!machinery_computer)
- return 0
- return machinery_computer.CanUseTopic(user, state)
+//obj/item/modular_computer/processor/canUseTopic(user, state)
+// if(!machinery_computer)
+// return 0
+
+// return machinery_computer.canUseTopic(user, state)
/obj/item/modular_computer/processor/shutdown_computer()
if(!machinery_computer)
diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm
index 6363e848789..155e121c00b 100644
--- a/code/modules/modular_computers/computers/machinery/console_presets.dm
+++ b/code/modules/modular_computers/computers/machinery/console_presets.dm
@@ -21,6 +21,8 @@
/obj/machinery/modular_computer/console/preset/proc/install_programs()
return
+/*
+
// ===== ENGINEERING CONSOLE =====
/obj/machinery/modular_computer/console/preset/engineering
console_department = "Engineering"
@@ -89,3 +91,4 @@
cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient())
cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer())
cpu.hard_drive.store_file(new/datum/computer_file/program/newsbrowser())
+*/
\ No newline at end of file
diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm
index 92c8fe5f2bb..72e9f056e69 100644
--- a/code/modules/modular_computers/computers/machinery/modular_computer.dm
+++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm
@@ -34,12 +34,13 @@ var/list/global_modular_computers = list()
var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things.
-/obj/machinery/modular_computer/attack_ghost(var/mob/observer/ghost/user)
+/obj/machinery/modular_computer/attack_ghost(mob/dead/observer/user)
if(cpu)
cpu.attack_ghost(user)
-/obj/machinery/modular_computer/emag_act(var/remaining_charges, var/mob/user)
- return cpu ? cpu.emag_act(remaining_charges, user) : NO_EMAG_ACT
+/obj/machinery/modular_computer/emag_act(remaining_charges, mob/user)
+// return cpu ? cpu.emag_act(remaining_charges, user) : NO_EMAG_ACT
+ return 1
/obj/machinery/modular_computer/update_icon()
icon_state = icon_state_unpowered
@@ -48,9 +49,9 @@ var/list/global_modular_computers = list()
if(!cpu || !cpu.enabled)
if (!(stat & NOPOWER) || battery_powered)
overlays.Add(screen_icon_screensaver)
- set_light(0)
+// set_light(0)
return
- set_light(light_strength)
+// set_light(light_strength)
if(cpu.active_program)
overlays.Add(cpu.active_program.program_icon_state ? cpu.active_program.program_icon_state : screen_icon_state_menu)
else
diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm
index 14cc1614ccb..92acae82ec1 100644
--- a/code/modules/modular_computers/file_system/program.dm
+++ b/code/modules/modular_computers/file_system/program.dm
@@ -29,8 +29,8 @@
computer = null
. = ..()
-/datum/computer_file/program/nano_host()
- return computer.nano_host()
+//datum/computer_file/program/nano_host()
+// return computer.nano_host()
/datum/computer_file/program/clone()
var/datum/computer_file/program/temp = ..()
@@ -79,7 +79,8 @@
access_to_check = required_access
if(!access_to_check) // No required_access, allow it.
return 1
-
+ return 1
+/*
var/obj/item/weapon/card/id/I = user.GetIdCard()
if(!I)
if(loud)
@@ -90,7 +91,7 @@
return 1
else if(loud)
user << "\The [computer] flashes an \"Access Denied\" warning."
-
+*/
// This attempts to retrieve header data for NanoUIs. If implementing completely new device of different type than existing ones
// always include the device here in this proc. This proc basically relays the request to whatever is running the program.
/datum/computer_file/program/proc/get_header_data()
diff --git a/code/modules/modular_computers/file_system/programs/_program.dm b/code/modules/modular_computers/file_system/programs/_program.dm
index 5ebfad06eb3..0039b8f5976 100644
--- a/code/modules/modular_computers/file_system/programs/_program.dm
+++ b/code/modules/modular_computers/file_system/programs/_program.dm
@@ -1,3 +1,5 @@
+/*
+
/obj/machinery/modular_computer/initial_data()
return cpu ? cpu.get_header_data() : ..()
@@ -10,6 +12,8 @@
/obj/item/modular_computer/update_layout()
return TRUE
+*/
+
/datum/nano_module/program
// available_to_ai = FALSE
var/datum/computer_file/program/program = null // Program-Based computer program that runs this nano module. Defaults to null.
diff --git a/code/modules/modular_computers/file_system/programs/configurator.dm b/code/modules/modular_computers/file_system/programs/configurator.dm
index d764c13a9d4..8e494e6c310 100644
--- a/code/modules/modular_computers/file_system/programs/configurator.dm
+++ b/code/modules/modular_computers/file_system/programs/configurator.dm
@@ -22,6 +22,15 @@
//obj/machinery/vr_sleeper/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
/datum/computer_file/program/computerconfig/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
+
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if (!ui)
+ ui = new(user, src, ui_key, "laptop_configuration", "NTOS Configuration Utility", 575, 700, state = state)
+// ui.auto_update_layout = 1
+// ui.set_initial_data(data)
+ ui.open()
+
+/datum/computer_file/program/computerconfig/ui_data(mob/user)
if(program)
movable = program.computer
if(!istype(movable))
@@ -57,9 +66,4 @@
)))
data["hardware"] = all_entries
- ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
- if (!ui)
- ui = new(user, src, ui_key, "laptop_configuration.tmpl", "NTOS Configuration Utility", 575, 700, state = state)
- ui.auto_update_layout = 1
- ui.set_initial_data(data)
- ui.open()
\ No newline at end of file
+ return data
\ No newline at end of file
diff --git a/code/modules/modular_computers/hardware/hardware.dm b/code/modules/modular_computers/hardware/hardware.dm
index 5e65c565f59..4e525cac247 100644
--- a/code/modules/modular_computers/hardware/hardware.dm
+++ b/code/modules/modular_computers/hardware/hardware.dm
@@ -85,5 +85,5 @@
// Damages the component. Contains necessary checks. Negative damage "heals" the component.
/obj/item/weapon/computer_hardware/proc/take_damage(var/amount)
damage += round(amount) // We want nice rounded numbers here.
- damage = between(0, damage, max_damage) // Clamp the value.
+ damage = max(0, min(damage, max_damage)) // Clamp the value.
diff --git a/tgstation.dme b/tgstation.dme
index 3183a2c504e..e2013aacb3e 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1519,6 +1519,7 @@
#include "code\modules\modular_computers\computers\item\processor.dm"
#include "code\modules\modular_computers\computers\item\tablet.dm"
#include "code\modules\modular_computers\computers\item\tablet_presets.dm"
+#include "code\modules\modular_computers\computers\machinery\console_presets.dm"
#include "code\modules\modular_computers\computers\machinery\modular_computer.dm"
#include "code\modules\modular_computers\computers\machinery\modular_console.dm"
#include "code\modules\modular_computers\computers\machinery\modular_laptop.dm"
diff --git a/tgui/src/interfaces/computer_main.ract b/tgui/src/interfaces/computer_main.ract
index cc9605ba993..9affb5f6053 100644
--- a/tgui/src/interfaces/computer_main.ract
+++ b/tgui/src/interfaces/computer_main.ract
@@ -23,5 +23,6 @@
{{! Taskbar}}
{{{getTaskbarContents()}}}
+ butt
\ No newline at end of file
diff --git a/tgui/src/interfaces/ntnet_relay.ract b/tgui/src/interfaces/nt_relay.ract
similarity index 95%
rename from tgui/src/interfaces/ntnet_relay.ract
rename to tgui/src/interfaces/nt_relay.ract
index 18dfc3c016a..592d235164e 100644
--- a/tgui/src/interfaces/ntnet_relay.ract
+++ b/tgui/src/interfaces/nt_relay.ract
@@ -1,6 +1,4 @@
-
-
-
+
{{#if data.dos_crashed}}
NETWORK BUFFERS OVERLOADED
Overload Recovery Mode